Food for your model.
Stop pausing videos every 30 seconds to screenshot, paste into Obsidian, and caption. Every 20-minute tutorial shouldn't take an hour to document.
YouTube Model Feeder extracts everything from a YouTube video — timestamped transcript, key frame snapshots, OCR of code and slides, presentation slide detection, and LLM-generated summaries — and packages it into structured knowledge your AI assistant can search, reference, and reason about.
The problem isn't transcription — ten tools do that. The problem is structured context. When you feed a raw transcript to a model, it has no visual context. It doesn't know what was on screen when the speaker said "as you can see here." It can't read the code in the terminal, the diagram on the slide, or the config file being edited.
YouTube Model Feeder captures all of that. The output isn't just text — it's a knowledge bundle: transcript segments aligned to timestamps, screenshots of every key moment, OCR text from code snippets and slides, and an LLM summary that ties it all together.
Combined with obsidian-semantic-search (also on ClawHub), every video you watch becomes permanently searchable by meaning in your Obsidian vault.
StepToolWhat it producesDownloadyt-dlpVideo + audio + metadata (title, duration, thumbnail)TranscribeWhisper (Ollama) or YouTube captionsTimestamped transcript segmentsFrame ExtractionFFmpegKey frame snapshots every 5s (configurable)Slide DetectionSSIM analysis (OpenCV)Identifies presentation slides via structural similarity between framesOCRTesseractReads code, terminal output, and text from captured framesLLM SummaryOllama / OpenAI / AnthropicStructured markdown with sections, code blocks, and key takeaways
Not just frame captures — intelligent slide boundary detection:
FormatWhat you getMarkdownTimestamped sections with headings, code blocks, image referencesHTMLStyled single-page doc with embedded screenshotsObsidian bundleZIP export: markdown + images, ready to drop into your vault
bash
# macOS
brew install ffmpeg tesseract
# Linux
apt install ffmpeg tesseract-ocr
Docker Desktop must be running for the full backend.
bash
git clone https://github.com/celstnblacc/youtube-model-feeder.git
cd youtube-model-feeder
docker-compose up -d
This starts 5 services:
ServicePortPurposeapi8000FastAPI backend + Swagger docs at /docscelery_worker—Background video processingpostgres5432Job tracking, transcripts, documentsredis6379Task queue (Celery broker)web3000Next.js frontend (optional)
Open http://localhost:8000/docs — you should see the Swagger API documentation.
Extract a video:
"Extract everything from this YouTube video and save it to my vault: https://youtube.com/watch?v=..."
Transcript only:
"Get the timestamped transcript for this video"
Slides and code screenshots:
"Extract all the code screenshots and presentation slides from this tutorial"
Obsidian export:
"Convert this video into an Obsidian note with screenshots and timestamps"
bash
# Submit a video for processing
curl -X POST http://localhost:8000/jobs \
-H "Content-Type: application/json" \
-d '{"url": "https://youtube.com/watch?v=dQw4w9WgXcQ"}'
# Check job status
curl http://localhost:8000/jobs/{job_id}
# Get the generated document
curl http://localhost:8000/videos/{video_id}
Open http://localhost:3000, paste a YouTube URL, and watch the extraction happen in real time with progress tracking.
Per-user configuration — choose your summarization engine:
ProviderModel (default)SetupCostOllama (default)Mistral 7BPre-installed locallyFreeOpenAIGPT-4o-miniSet OPENAI_API_KEYPer-tokenAnthropicClaude Sonnet 4.6Set ANTHROPIC_API_KEYPer-token
Configure via the API: PATCH /settings/me with your preferred provider and API key (encrypted at rest with Fernet).
YouTube Model Feeder is designed to work with other ClawHub skills:
text
YouTube Video
→ youtube-model-feeder (extract transcript + snapshots + OCR + summary)
→ Obsidian vault (structured markdown + images)
→ obsidian-semantic-search (index with embeddings, search by meaning)
→ Your AI assistant (full context from every video you've ever watched)
Every video becomes permanent, searchable knowledge. Not buried in a playlist — indexed and queryable.
text
youtube-model-feeder/
├── backend/ # FastAPI + Celery (Python 3.12)
│ ├── app/
│ │ ├── services/ # Core extraction pipeline (6372 LOC)
│ │ │ ├── youtube.py # yt-dlp wrapper
│ │ │ ├── transcript.py # Whisper + YouTube captions
│ │ │ ├── snapshot.py # FFmpeg frame extraction
│ │ │ ├── slide_detection.py # SSIM + OCR + alignment (643 LOC)
│ │ │ ├── llm.py # Summarization engine (1229 LOC)
│ │ │ └── llm_providers.py # Ollama/OpenAI/Anthropic abstraction
│ │ ├── routes/ # REST API endpoints
│ │ └── tasks.py # Celery background jobs
├── frontend/ # Next.js 14 + React 18 + Tailwind + Zustand
├── docker-compose.yml # 5 services
└── migrations/ # Alembic database migrations
ProblemFixVirusTotal "suspicious" warning on installFalse positive — skill describes video extraction patterns. Use clawhub install youtube-model-feeder --forceDocker services won't startEnsure Docker Desktop is running. Check docker-compose logs api for errorsTranscription is slowFirst run pulls the Whisper model (~1.5 GB). Subsequent runs are fast. Try YouTube captions first (faster, no model needed)No slides detectedSSIM threshold may need tuning for your video type. Presentation-style videos work bestLLM summary is emptyCheck LLM provider config. Default is Ollama — ensure Ollama is running with a model pulledFFmpeg not foundbrew install ffmpeg (macOS) or apt install ffmpeg (Linux)
Built by celstnblacc — food for your model. 226 tests, 6 extraction stages, 3 LLM providers, Obsidian-ready output.