Edutube is an MCP server + CLI that turns YouTube videos and playlists into LMS-ready lessons — verbatim dialogue with Arabic translations, key expressions, vocabulary, cultural notes and a 10-question quiz — extracted from real audio and visuals, not captions.
Everything runs locally except the Gemini calls; resume-safe and quota-aware.
YouTube Data API when a key is set, otherwise keyless yt-dlp flat-playlist. Resume skips finished lessons.
Gemini processes the actual media: spoken dialogue, on-screen expressions, scenes and sounds.
On 429 the request retries on the next model. Live discovery adds future models (3.6/3.7-flash…) automatically.
Task-based long analysis, reusable sessions, compatibility background jobs for fixed-timeout clients.
High-res JPEG at any timestamp via yt-dlp + ffmpeg, with optional Gemini timestamp refinement.
edutube-mcp extract <url> --out DIR — clean JSON stdout for scripts and LMS importers.
15 tools over stdio; works with Claude Code, Cursor, Codex and any MCP client.
| Tool | Purpose |
|---|---|
start_edutube_extraction | Playlist/video URL → background lesson-extraction job (lesson-NN.json + lessons-all.json) |
get_edutube_job_status / _result / cancel_edutube_job | Poll, fetch and cancel edutube jobs |
analyze_youtube_video | Multimodal analysis with custom prompts and JSON schemas; clip windows |
analyze_youtube_video_audio | Speech-first analysis with transcript segments |
get_youtube_video_frame | Exact high-res JPEG frame at a timestamp |
get_youtube_video_metadata | Normalized metadata via YouTube Data API |
analyze_long_youtube_video / continue_long_video_analysis | Long VODs as MCP tasks with reusable sessions |
start_long_youtube_analysis + status/result/cancel | Compatibility job workflow for fixed-timeout clients |
Three ways to run it. GEMINI_API_KEY is the only required secret.
{
"mcpServers": {
"edutube": {
"command": "npx",
"args": ["-y", "@engmohammeda/edutube-mcp"],
"env": { "GEMINI_API_KEY": "…", "YOUTUBE_API_KEY": "optional" }
}
}
}# extract a whole playlist edutube-mcp extract "https://www.youtube.com/playlist?list=PL…" --out ./lessons --max 20 # single video, pipe-safe JSON edutube-mcp extract "https://www.youtube.com/watch?v=…" --out ./lessons | jq .totals
git clone https://github.com/engmohammeda/edutube-mcp.git cd edutube-mcp && npm install && npm run build cp .env.example .env # add GEMINI_API_KEY npm start # MCP stdio server
Nine lessons extracted live from the “المحادثة” playlist (ZAmericanEnglish) using this exact project. Browse what Edutube produced.