
NotebookLM को स्टेरॉयड पर — सुरक्षा शोधकर्ताओं के लिए विशेष रूप से निर्मित।
हर सुरक्षा शोधकर्ता इस भावना को जानता है — आपको एक दिलचस्प GitHub रिपॉजिटरी, एक ताज़ा CVE राइटअप, एक नई शोषण तकनीक के बारे में ब्लॉग पोस्ट मिलता है। आप इसे व्हाट्सएप पर खुद को फॉरवर्ड करते हैं। यह तुरंत चैट में डूब जाता है। हफ्तों बाद आपको वास्तव में उस लेख की आवश्यकता होती है — और वह चला जाता है।
अपने आप को ऐसे लिंक भेजना बंद करें जो आपको फिर कभी नहीं मिलेंगे — उन्हें एक बार Samuraizer को भेजें, और वे हमेशा के लिए संक्षेपित, टैग और खोजने योग्य हो जाते हैं।
| पहले 😵 | बाद में 🗡️ |
|---|---|
![]() चैट इतिहास में बिखरे लिंक | ![]() |
🎯 अतिरिक्त गोपनीयता मोड (केवल स्थानीय) — ollama के साथ चलाएं, सभी डेटा आपकी मशीन पर रहता है।
samuraizer.db में स्थानीय वेक्टर स्टोरेज + Ollama के माध्यम से स्थानीय AI एम्बेडिंग।ollama pull qwen3:4b, ollama pull qwen3-embedding:8b)।.pdf, .docx, .pptx, .txt, .md


/yt-channels API के माध्यम से चलता है और UI में RSS/YT अनुभागों के अंतर्गत दिखाई देता है
![]() URL का विश्लेषण | ![]() दैनिक सुझाई गई पढ़ाई |
@ टाइप करें या @ ब्राउज़ बटन का उपयोग करें
![]() स्रोत स्कोर के साथ RAG चैट | ![]() पिन किए गए संदर्भ वाली चैट |
[!IMPORTANT] Samuraizer के भविष्य को आकार दें! हम वर्तमान में स्थानीय LLM और Obsidian निर्यात जैसी नई सुविधाओं पर मतदान कर रहे हैं। यहाँ अपना वोट डालें!
flowchart LR
Browser[Browser UI] -->|HTTP| Frontend[React Frontend]
Frontend -->|REST/NDJSON| Backend[Flask API]
Backend -->|SQL| SQLite[(samuraizer.db)]
Backend -->|API| Gemini[Gemini 2.5 Flash]
Backend -->|local API| Ollama[Ollama - Local LLM]
Backend -->|GitHub API| GitHub[GitHub]
Backend -->|RSS| RSS[RSS feeds]
Telegram[Telegram Bot] -->|HTTP| Backendsamuraizer.db में संग्रहीत होते हैं और फ्रंटएंड में दिखाए जाते हैं।PATCH /entries/<id> के माध्यम से परिवर्तन संग्रहीत होते हैं)| स्तर | तकनीक / लाइब्रेरीज़ |
|---|---|
| बैकएंड |
अपनी पसंदीदा सेटअप विधि चुनें:
git clone https://github.com/zomry1/Samuraizer.git
cd Samuraizer
.env.example को .env में कॉपी करें और अपने मान भरें।
आप वेब UI खोल सकते हैं, Settings टैब पर जा सकते हैं, और सहेजने से पहले वहाँ सेटिंग्स (प्रदाता, API कुंजियाँ, Ollama मॉडल नाम, एम्बेडिंग मॉडल नाम) समायोजित कर सकते हैं।
cp .env.example .env
पूरे स्टैक को चलाने का सबसे आसान तरीका — एक कमांड सब कुछ बनाता और शुरू करता है।
git clone https://github.com/zomry1/Samuraizer.git
cd Samuraizer
cp .env.example .env
# .env संपादित करें और GEMINI_API_KEY (और कोई भी अन्य आवश्यक मान) भरें
सभी Docker फ़ाइलें docker/ फ़ोल्डर में रहती हैं। प्रोजेक्ट रूट से कमांड चलाएं:
Gemini (क्लाउड) — डिफ़ॉल्ट:
docker compose -f docker/docker-compose.yml up -d
Ollama CPU पर:
docker compose -f docker/docker-compose.yml --profile ollama up -d
Ollama NVIDIA GPU पर:
docker compose -f docker/docker-compose.yml --profile ollama-nvidia up -d
youtube-transcript-api क्यों नहीं?मूल कार्यान्वयन में ओपन-सोर्स youtube-transcript-api Python लाइब्रेरी का उपयोग किया गया था। यह स्थानीय रूप से अच्छी तरह काम करता है लेकिन व्यवहार में इसकी एक महत्वपूर्ण सीमा है: YouTube स्वचालित ट्रांसक्रिप्ट अनुरोध करने वाले IP पतों को आक्रामक रूप से ब्लॉक करता है, विशेष रूप से:
इसका मतलब था कि कुछ ही वीडियो का विश्लेषण करने के बाद, पूरा सर्वर ब्लॉक हो जाता और प्रत्येक बाद का ट्रांसक्रिप्ट फ़ेच IPBlocked / RequestBlocked त्रुटि के साथ विफल हो जाता — YouTube वीडियो विश्लेषण को पूरी तरह से तोड़ देता।
transcriptapi.comSamuraizer अब transcriptapi.com का उपयोग करता है — एक तृतीय-पक्ष भुगतान API जो अपने सिरे पर YouTube ट्रांसक्रिप्ट लाने का कार्य संभालता है, उस बुनियादी ढाँचे के माध्यम से रूटिंग करता है जो अवरुद्ध नहीं है।
लाभ:
GET /api/v2/youtube/transcript)POST /analyze
बॉडी:
{ "url": "https://github.com/owner/repo" }
POST /analyze-pdf
बॉडी: multipart/form-data जिसमें .pdf फ़ाइल वाला file फ़ील्ड हो।
/analyze के समान आकार में NDJSON इवेंट स्ट्रीम करता है (फ़ाइल नाम को url कुंजी के रूप में उपयोग करता है)।
GET /entries/<id>/pdf — ब्राउज़र में PDF इनलाइन प्रस्तुत करता है।
GET /entries/<id>/pdf?dl=1 — PDF को फ़ाइल डाउनलोड के रूप में प्रस्तुत करता है।
MIT
| Python, Flask, SQLite, feedparser, PyMuPDF |
| LLM | Gemini 2.5 Flash (Gemini API), Ollama (स्थानीय वैकल्पिक) |
| फ्रंटएंड | React 18, Vite, Tailwind CSS |
| बॉट | python-telegram-bot v20 |
| ट्रांसक्रिप्ट | transcriptapi.com |
| चर | आवश्यक | कहाँ से प्राप्त करें |
|---|
LLM_PROVIDER | नहीं | gemini (डिफ़ॉल्ट, क्लाउड) या ollama (स्थानीय) |
GEMINI_API_KEY | जब gemini | Google AI Studio → API कुंजी प्राप्त करें |
OLLAMA_URL | जब ollama | Ollama API URL (डिफ़ॉल्ट: http://localhost:11434) |
OLLAMA_MODEL | जब ollama | रीज़निंग मॉडल (डिफ़ॉल्ट: qwen3:14b) |
OLLAMA_EMBED_MODEL | जब ollama | एम्बेडिंग मॉडल (डिफ़ॉल्ट: qwen3-embedding:8b) |
TELEGRAM_BOT_TOKEN | नहीं | Telegram पर @BotFather के साथ बॉट बनाएं |
GITHUB_TOKEN | नहीं | GitHub → Settings → Developer settings → Personal access tokens — API दर सीमा को 60 से 5,000 req/hr तक बढ़ाता है |
TRANSCRIPTAPI | नहीं | transcriptapi.com/dashboard/api-keys — YouTube ट्रांसक्रिप्ट लाने के लिए आवश्यक |
SAMURAIZER_URL | नहीं | आपके बैकएंड का URL (डिफ़ॉल्ट: http://localhost:8000), Telegram बॉट द्वारा उपयोग किया जाता है |
Samuraizer को Ollama के साथ पूरी तरह से ऑफलाइन चलाएं:
# Ollama CLI संस्थापित करें (प्लेटफ़ॉर्म पर निर्भर)
# macOS
curl -fsSL https://ollama.com/install.sh | sh
# Windows
irm https://ollama.com/install.ps1 | iex
# Linux (Ubuntu/Debian)
curl -fsSL https://ollama.com/install.sh | sh
# Ollama सेवा प्रारंभ करें
ollama serve
# मॉडल संस्थापित करें
ollama pull qwen3:4b # reasoning
ollama pull qwen3-embedding:8b # embeddings
# .env में प्रदाता सेट करें
LLM_PROVIDER=ollama
यदि आपके पास पहले से Gemini एम्बेडिंग हैं, तो Ollama पर स्विच करने पर अगले स्टार्टअप पर वे स्वचालित रूप से मिट जाएंगी (आयाम बेमेल)। UI या POST /entries/embed-all के माध्यम से पुनः एम्बेड करें।
# वर्चुअल एनवायरनमेंट बनाएं और सक्रिय करें
python -m venv .venv
source .venv/bin/activate # Windows पर: .venv\Scripts\activate
pip install -r requirements.txt
cd frontend
npm install
cd ..
python server.py
cd frontend
npm run dev
python telegram_bot.py
Windows (WSL 2):
wsl --install
wsl --update
Docker Desktop for Windows स्वचालित रूप से NVIDIA कंटेनर रनटाइम बंडल करता है — किसी अतिरिक्त कदम की आवश्यकता नहीं।
Linux:
NVIDIA Container Toolkit संस्थापित करें:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
Ollama AMD GPU पर (Linux पर ROCm-सक्षम GPU + amdgpu ड्राइवर की आवश्यकता):
docker compose -f docker/docker-compose.yml --profile ollama-amd up -d
बस इतना ही। फ्रंटएंड http://localhost पर है और API http://localhost:8000 पर है।
सुझाव: किसी भी Ollama प्रोफ़ाइल का उपयोग करते समय, अपने
.envमेंLLM_PROVIDER=ollamaसेट करें। कंटेनरों के अंदरOLLAMA_URLस्वचालित रूप सेhttp://ollama:11434पर सेट हो जाता है — आपको इसे बदलने की आवश्यकता नहीं है।
Ollama के साथ पहली शुरुआत के बाद, मॉडल पुल करें (आपके द्वारा शुरू किए गए प्रोफ़ाइल से मेल खाने वाले कंटेनर नाम का उपयोग करें):
# --profile ollama
docker exec -it samuraizer-ollama-1 ollama pull qwen3:4b
docker exec -it samuraizer-ollama-1 ollama pull qwen3-embedding:8b
# --profile ollama-nvidia
docker exec -it samuraizer-ollama-nvidia-1 ollama pull qwen3:4b
docker exec -it samuraizer-ollama-nvidia-1 ollama pull qwen3-embedding:8b
# --profile ollama-amd
docker exec -it samuraizer-ollama-amd-1 ollama pull qwen3:4b
docker exec -it samuraizer-ollama-amd-1 ollama pull qwen3-embedding:8b
data/ निर्देशिका में और बैकअप db_backups/ के अंतर्गत संग्रहीत करता है।ollama_data Docker वॉल्यूम में संग्रहीत होती हैं (पुनरारंभ पर बनी रहती हैं)।docker compose -f docker/docker-compose.yml --profile ollama-nvidia --profile bot up -d
git pull
docker compose -f docker/docker-compose.yml up -d --build
docker compose -f docker/docker-compose.yml down
नुकसान:
सेटअप: .env में जोड़ें:
TRANSCRIPTAPI=your_key_here
transcriptapi.com/dashboard/api-keys पर एक कुंजी प्राप्त करें।
| विकल्प | यह कैसे काम करता है | IP ब्लॉक जोखिम | लागत |
|---|---|---|---|
| transcriptapi.com (वर्तमान) | प्रबंधित REST API | कोई नहीं (उनकी समस्या) | क्रेडिट-आधारित |
| yt-dlp | --write-sub --skip-download के माध्यम से सबटाइटल डाउनलोड करता है | कम (ब्राउज़र का अनुकरण) | मुफ्त, स्व-होस्टेड |
youtube-transcript-api + कुकीज़ | लॉग-इन ब्राउज़र सत्र से Netscape cookies.txt पास करें | मध्यम (बर्नर खाता जोखिम) | मुफ्त |
| YouTube Data API v3 | आधिकारिक Google API, कोई स्क्रैपिंग नहीं | कोई नहीं | निःशुल्क कोटा, फिर भुगतान |
| Supadata | समान प्रबंधित REST API | कोई नहीं | निःशुल्क स्तर (100 अनुरोध/दिन) |
सर्वश्रेष्ठ मुफ्त विकल्प: yt-dlp — यह सक्रिय रूप से बनाए रखा जाता है, वास्तविक ब्राउज़र अनुरोधों का अनुकरण करता है, और सादे HTTP अनुरोध की तरह जल्दी से अवरुद्ध होने की संभावना नहीं है। स्विच करने के लिए, _fetch_youtube_content को बदलकर yt-dlp --write-auto-sub --sub-format vtt --skip-download को शेल आउट करें और परिणामी .vtt फ़ाइल को पार्स करें।
GET /entries (फ़िल्टर का समर्थन करता है: search, category, tag, source, list_id, read, useful)
GET /yt-channels — सब्सक्राइब किए गए चैनल सूचीबद्ध करें (id, channel_id, channel_url, name, last_checked)POST /yt-channels/preview — बॉडी { "url": "https://www.youtube.com/@handle" }, चैनल जानकारी + नवीनतम वीडियो (url/title/published) लौटाता हैPOST /yt-channels — बॉडी { "url": "...", "name": "optional", "analyze_urls": ["https://...", ...] }; सब्सक्रिप्शन बनाएं और वैकल्पिक रूप से चयनित वीडियो का विश्लेषण करेंPOST /yt-channels/<id>/poll — किसी चैनल के लिए तत्काल मैन्युअल पोलDELETE /yt-channels/<id> — सब्सक्रिप्शन हटाएंPATCH /entries/<id> के माध्यम से JSON { "tags": ["tag1","tag2"] } के साथ होता है