Video URL Analyzer

io.github.u2n4由 GitHub 帳號 u2n4 發布v1.5.1更新於 Oct 24, 2026

Analyze YouTube/TikTok/Instagram videos: transcripts, AI insights, tutorial extraction

概覽

AI 產生的概覽

本機 MCP 伺服器,讓助理透過 Google Gemini 分析 YouTube、TikTok 與 Instagram 影片:逐字稿、問答、截圖、片段與教學步驟。

可以做什麼
以自訂提示分析影片或片段,並針對影片內容提問,依賴 Gemini 多模態理解,也支援 TikTok 與 Instagram 的圖文與輪播貼文。擷取含時間戳與講者標註的逐字稿,支援 100 多種語言。為每支影片儲存可重複使用的本機脈絡,之後依此回答追問,並可列出或刪除已儲存的脈絡、檢視快取中繼資料。擷取靜態畫面和短片段作為本機佐證素材,並可清理快取檔案,預設僅試跑。從技術類影片擷取教學步驟、shell 指令、程式碼片段與檔案路徑,供審閱,僅在確認後執行。輪詢 TikTok 與 Instagram 較長任務的非同步下載狀態。
適用情境
適合讓助理在不事先下載的情況下摘要、追問或挖掘某支 YouTube、TikTok 或 Instagram 影片,或把技術教學影片整理成可審閱的步驟。適用於研究、內容審閱與從影片學習,不適合大量爬取。
執行需求
透過 stdio 在本機執行,可用 uvx 或 pip 從 PyPI 安裝(需 Python 3.10+)。需要在 GEMINI_API_KEY 環境變數中提供 Google Gemini API 金鑰。截圖與片段擷取依賴 ffmpeg 與 yt-dlp,TikTok 與 Instagram 下載建議安裝 curl_cffi。需要連線至影片平台與 Google 的網路。
安裝前請注意
需要 Gemini API 金鑰(GEMINI_API_KEY),用量會計入你的 Google 配額。伺服器會從 YouTube、TikTok 與 Instagram 下載媒體並送往 Google Gemini 分析,影片內容會離開你的電腦。可選的瀏覽器 Cookie 存取(VIDEO_ANALYZER_COOKIES)預設關閉,開啟後會暴露工作階段 Cookie。有一個工具可執行擷取出的教學步驟,但需確認後才會執行。刪除與清理工具會移除本機儲存的脈絡與快取。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Video URL Analyzer,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[Video Analyzer MCP Server]

Video Analyzer MCP Server

Analyze any video with AI — YouTube, TikTok & Instagram
Powered by Google Gemini 3.5 Flash · FastMCP · yt-dlp

[Gemini 3.5 Flash] [Python 3.10+] [MCP stdio] [Security Hardened] [MIT License]

Features · Architecture · Quick Start · Integration · Security · العربية


Features

[Features — Analyze, Transcript, Ask]

v1.5.4 exposes 18 MCP tools:

ToolWhat it does
analyze_videoFull audio + visual analysis with custom prompts. Uses Gemini multimodal understanding.
get_transcriptExtract timestamped transcript with speaker identification. Supports 100+ languages via auto-detection.
ask_about_videoAsk any question about the video content.
prepare_slideshow_assetsReturn ordered slideshow images as MCP image blocks so Claude/the client AI can inspect them directly.
find_video_momentsFind matching moments with compact/standard/full structured output.
analyze_video_segmentAnalyze only a selected time range.
prepare_video_contextAnalyze once and save a reusable local context for follow-up questions and evidence lookup.
ask_video_contextAnswer from saved context by default; Gemini reanalysis is explicit opt-in.
list_video_contextsList saved local contexts.
delete_video_contextDelete one saved context.
get_video_frameExtract a local still frame, using the YouTube fast path when possible.
get_video_clipExtract a short local clip, with a 30s cap and YouTube fast path when possible.
get_video_evidence_assetSelect saved evidence and return a frame or clip reference.
list_video_sourcesInspect local source/context/asset cache metadata.
cleanup_video_cacheDry-run or clean managed cache files; dry-run is the default.
watch_and_analyzeExtract tutorial steps, shell commands, code snippets, and file paths from technical videos.
execute_tutorial_stepsValidate and review extracted steps safely; executes only with confirmation.
check_analysis_jobPoll background job status for TikTok/Instagram async downloads.

Supported Platforms

PlatformMethodSpeed
YouTubeDirect Gemini analysis — no download needed for analysis. Frame/clip extraction uses yt-dlp -g stream URLs + ffmpeg when available, with a small section-download fallback.Instant / fast local extraction
TikToktikwm.com API (fast) → yt-dlp fallback with a safe MP4 H.264/H.265 selector that avoids unsupported ByteDance bvc2/bytevc2 streams when possible~8s
InstagramPage scrape via curl_cffi (fast) → yt-dlp fallback~10s
Photo / Slideshow Posts
PlatformPost typeHandling
TikTokPhoto Mode slideshowDownloads all images, extracts the music/audio track when available, and sends one multimodal Gemini request.
InstagramCarousel / single-photo postsDownloads image slides in order and analyzes them as one post; mixed video slides are skipped with metadata.
YouTubeCommunity /post/ image attachmentsScrapes ytInitialData, downloads image attachments, and analyzes them through Gemini Files API.

YouTube videos are analyzed directly through Gemini's native video understanding — zero download, zero upload, maximum speed. For YouTube evidence assets, source.mp4 is not always required: saved contexts keep the original URL, so frame/clip tools can use the local stream fast path later.


Architecture

[Architecture Diagram]

ComponentRole
Gemini 3.5 FlashLatest Gemini Flash model — full audio + visual understanding in a single pass
FastMCP 3.xMCP protocol framework over stdio transport
yt-dlp + curl_cffiVideo download with Chrome browser impersonation to bypass anti-bot. TikTok downloads prefer locally decodable MP4 H.264/H.265 formats and reject ByteDance bvc2/bytevc2 streams.
tikwm.com APITikTok fast-path fallback when yt-dlp is WAF-blocked
ffmpegLocal frame/clip extraction, including YouTube stream URL extraction without full-video downloads
Background JobsAsync threading for TikTok/Instagram to prevent Claude Desktop timeouts. Failed inner results are reported as failed jobs, not completed jobs.

Operating Modes

These are behavior modes, not tool names:

ModeBehavior
autoDefault adaptive behavior: YouTube direct analysis; TikTok/Instagram fast API/scrape then yt-dlp fallback; saved contexts reused when available.
apiGemini-backed analysis or reanalysis. This is used by analysis tools and explicit Gemini opt-ins.
clientMCP client workflow mode: long TikTok/Instagram analysis returns a background job_id for polling.
localSaved-context, cache, frame, and clip operations that avoid Gemini unless explicitly requested.

Quick Start

The packaged runtime lives at src/video_url_analyzer_mcp/server.py; the console entry point is video_url_analyzer_mcp:main. Pick whichever install path matches your workflow.

Option A — one-line Windows installer (recommended for new users)

powershell
irm https://raw.githubusercontent.com/u2n4/video-url-analyzer-mcp/main/install.ps1 | iex

The installer follows the current MCP client pattern: it installs/runs from PyPI with uvx, uses an existing GEMINI_API_KEY environment variable when one is already set, otherwise asks for the key only through a hidden prompt, and lets the user choose where to register the server:

  • Claude Code
  • Claude Desktop
  • Codex CLI
  • Cursor
  • Windsurf
  • VS Code / GitHub Copilot
  • Google Antigravity
  • Cline

Do not append your API key to the PowerShell command. If you skip the key, the installer still registers the server and you can set GEMINI_API_KEY later. If GEMINI_API_KEY is already set in your User environment, the installer will use it directly and print only a masked form like AIza...abcd.

Option B — uvx (no install)

powershell
uvx video-url-analyzer-mcp

Works on Windows / macOS / Linux as long as uv is on PATH.

Option C — Windows wizard from a checkout

powershell
git clone https://github.com/u2n4/video-url-analyzer-mcp.gitcd video-url-analyzer-mcppowershell -ExecutionPolicy Bypass -File scripts\install_windows.ps1

The wizard:

  • Verifies Python 3.10+ and (optionally) uv.
  • Installs the package as an editable checkout or via uv tool install.
  • Lets you save GEMINI_API_KEY to a User environment variable or to a gitignored .env.keys.local. Keys are masked in logs (AIza...abcd), never printed in full.
  • Lets you pick a default model via VIDEO_ANALYZER_MODEL.
  • Runs an offline import smoke test.
  • Hands off to scripts/configure_mcp_clients.ps1 for client setup.

Option D — Manual install (any OS)

bash
git clone https://github.com/u2n4/video-url-analyzer-mcp.gitcd video-url-analyzer-mcppip install -e .python -m video_url_analyzer_mcp

Get a free key at Google AI Studio, then set it once in your shell environment (setx GEMINI_API_KEY ... on Windows, or your ~/.zshrc / ~/.bashrc on macOS/Linux). For local dev only, you can also drop it in a gitignored .env.keys.local next to the repo.

Windows launcher

start.bat loads .env.keys.local (if present), sets safe defaults (VIDEO_ANALYZER_MODE=auto), and runs python -m video_url_analyzer_mcp. Use it as a command value in any MCP client that prefers a single executable.


Integration

Run scripts/configure_mcp_clients.ps1 for an interactive menu, or copy the snippets below from docs/mcp-config-examples.md. The wizard backs up existing client config, validates JSON/TOML, and never overwrites unrelated MCP servers.

Client configs use video-analyzer as the local MCP server entry name. The published package remains video-url-analyzer-mcp, and the registry name remains io.github.u2n4/video-url-analyzer-mcp.

Claude Desktop (%APPDATA%\Claude\claude_desktop_config.json)

json
{  "mcpServers": {    "video-analyzer": {      "command": "uvx",      "args": ["video-url-analyzer-mcp"]    }  }}

The wizard prefers leaving the API key in your OS environment. If you must embed it, add "env": { "GEMINI_API_KEY": "YOUR_KEY_HERE" }.

Claude Code (CLI)

bash
claude mcp add video-analyzer --transport stdio -- uvx video-url-analyzer-mcp

Or, after pip install -e . in the repo:

bash
claude mcp add video-analyzer --transport stdio -- python -m video_url_analyzer_mcp

Codex CLI (~/.codex/config.toml)

toml
[mcp_servers.video-analyzer]command = "uvx"args = ["video-url-analyzer-mcp"]

VS Code / GitHub Copilot MCP

Workspace registration writes .vscode/mcp.json:

json
{  "inputs": [    {      "type": "promptString",      "id": "video-url-analyzer-gemini-api-key",      "description": "Gemini API key for video-url-analyzer-mcp",      "password": true    }  ],  "servers": {    "video-analyzer": {      "type": "stdio",      "command": "uvx",      "args": ["video-url-analyzer-mcp"],      "env": {        "GEMINI_API_KEY": "${input:video-url-analyzer-gemini-api-key}"      }    }  }}

For all clients, restart the application after editing config so the new MCP server is picked up. Full snippets — including Cursor, Windsurf, Antigravity (%USERPROFILE%\.gemini\antigravity\mcp_config.json), and Cline — live in docs/mcp-config-examples.md.


Usage Examples

python
# Full video analysis with Gemini 3.5 Flashanalyze_video("https://www.youtube.com/watch?v=dQw4w9WgXcQ")
# Custom analysis promptanalyze_video("https://www.tiktok.com/@user/video/123",              prompt="List every product shown and estimate prices")
# Multilingual transcript extractionget_transcript("https://www.instagram.com/reel/ABC123/", lang="ar")
# Ask specific questions about video contentask_about_video("https://youtu.be/abc",                question="What programming language is used in the tutorial?")
# Analyze once, then ask locally from the saved contextprepare_video_context("https://youtu.be/abc", detail="standard")ask_video_context("https://youtu.be/abc",                  question="What happens near the end?")
# Extract visual evidence without embedding binary data in the tool outputget_video_frame("https://youtu.be/abc", timestamp="00:30")get_video_clip("https://youtu.be/abc", start="00:20", end="00:28")
# Watch & build — extract tutorial stepswatch_and_analyze("https://www.youtube.com/watch?v=tutorial123")

Security

This server has been hardened against a comprehensive threat model audit:

LayerProtection
SSRFURL allowlist — only YouTube, TikTok, Instagram domains accepted. Private IPs, localhost, file:// blocked.
Command Injectionshell=False + shlex.split(). Dangerous command blocklist (rm -rf, reverse shells, eval, pipe-to-shell).
Path Traversal25+ sensitive path patterns blocked (.ssh, .aws, .env, system dirs, AppData).
TLSFull certificate validation on all downloads.
Browser CookiesOpt-in only via VIDEO_ANALYZER_COOKIES=true. Disabled by default.
Download SizeHard limit of 100 MB per video.
DoS ProtectionMax 10 concurrent background jobs. Auto-expiry after 1 hour. Storage cap of 200 analyses.
Schema ValidationGemini JSON responses validated before execution. Response size capped at 500K chars.
DependenciesRuntime dependency bounds are maintained in pyproject.toml.

Environment Variables

VariableDescriptionDefault
GEMINI_API_KEYGoogle Gemini API keyRequired
ANALYSES_DIRDirectory for saved analyses./analyses
VIDEO_CONTEXT_DIRDirectory for saved reusable video contextsvideo_contexts
VIDEO_SOURCE_DIRDirectory for cached downloaded source mediavideo_sources
VIDEO_ASSET_DIRDirectory for extracted frames/clipsvideo_assets
VIDEO_ANALYZER_COOKIESEnable browser cookie access (true/false)false
VIDEO_DOWNLOAD_TIMEOUTOverride download and yt-dlp timeout values, in secondsExisting per-operation defaults
VIDEO_FFMPEG_TIMEOUTOverride ffmpeg extraction timeout values, in secondsExisting per-operation defaults
VIDEO_GEMINI_TIMEOUTOptional Gemini HTTP timeout, in secondsSDK default
VIDEO_IMAGE_DOWNLOAD_CONCURRENCYParallel image downloads for TikTok/Instagram/YouTube photo posts6
VIDEO_GEMINI_UPLOAD_CONCURRENCYParallel Gemini Files uploads for downloaded media and slideshow images4
VIDEO_ANALYZER_MODELSingle-knob default model id used for both fast and deep model resolution. Per-call model= and GEMINI_FAST_MODEL / GEMINI_DEEP_MODEL still take precedence.unset
GEMINI_FAST_MODELOverride for compact/standard detail modegemini-3.5-flash
GEMINI_DEEP_MODELOverride for full detail modegemini-3.1-pro-preview

Default fast model: gemini-3.5-flash. Default deep model (used when detail="full"): gemini-3.1-pro-preview. Set VIDEO_ANALYZER_MODEL to override both at once. Model availability can vary by Google account, region, and API tier — fall back to gemini-flash-latest if the latest ids are not yet enabled for your key. | VIDEO_ANALYZER_MODE | Behavior preset (auto / api / client / local); read by start.bat | auto |


Troubleshooting

IssueSolution
GEMINI_API_KEY not setCreate .env file or pass via environment variable
TikTok download failstikwm.com fallback activates automatically. Ensure curl_cffi is installed.
TikTok bvc2 / bytevc2 codecv1.4 avoids these unsupported ByteDance streams when a compatible MP4 H.264/H.265 format exists. If no compatible stream is available, tools return a structured unsupported_codec or no_compatible_format error instead of uploading or pretending success.
Instagram download failspip install curl_cffi for browser impersonation support
ENOENT on WindowsUse start.bat as command in Claude Desktop config
Impersonate target not availableReinstall: pip install "yt-dlp[curl-cffi]"
Claude Desktop timeoutTikTok/Instagram run in background — use check_analysis_job(job_id) to poll
Background job says failedExpected when the worker result is an error, Gemini file processing fails, or media validation rejects the source. check_analysis_job no longer reports these inner failures as completed.
prepare_video_context repeats workIt reuses cached contexts unless force_refresh=true
YouTube source.mp4 missingExpected in some cases. Frame/clip tools can recover from the saved URL and use yt-dlp -g + ffmpeg fast extraction.
Transient Gemini 503/5xxGemini generate_content calls retry up to 3 times with exponential backoff. 4xx auth/schema/user errors are not retried.

Tech Stack

TechnologyVersionPurpose
Google Gemini 3.5 FlashLatestMultimodal video analysis engine
FastMCP3.3.1+MCP protocol framework
yt-dlp2026.3.17+Video downloader
curl_cffi>=0.7.4,<0.15.0Browser impersonation (TLS fingerprint), pinned for yt-dlp 2026.03.17 compatibility
google-genai2.5.0+Official Google GenAI SDK

License

MIT


العربية

[خادم تحليل الفيديو]

خادم تحليل الفيديو بالذكاء الاصطناعي

خادم MCP لتحليل الفيديو باستخدام Google Gemini 3.5 Flash — احدث نموذج Gemini Flash متعدد الوسائط من جوجل.

المميزات

الاداةالوصف
analyze_videoتحليل شامل للصوت والصورة مع دعم الاوامر المخصصة
get_transcriptاستخراج النص المنطوق مع الطوابع الزمنية — يدعم +100 لغة
ask_about_videoاسال اي سؤال عن محتوى الفيديو
prepare_video_contextتحليل الفيديو مرة واحدة وحفظ سياق محلي قابل لاعادة الاستخدام
ask_video_contextالاجابة من السياق المحفوظ بدون Gemini افتراضيا
get_video_frame / get_video_clipاستخراج صورة او مقطع كدليل محلي، مع مسار سريع ليوتيوب عبر yt-dlp + ffmpeg
watch_and_analyzeاستخراج خطوات الشروحات التقنية والاوامر والاكواد
execute_tutorial_stepsمراجعة وتنفيذ الخطوات المستخرجة بامان

المنصات المدعومة

المنصةالسرعة
يوتيوبفوري — تحليل مباشر بدون تحميل
تيك توك~8 ثواني — واجهة tikwm.com السريعة
انستقرام~10 ثواني — استخراج مباشر من الصفحة

التثبيت السريع (ويندوز)

استنسخ الريبو ثم شغل المعالج التفاعلي:

powershell
git clone https://github.com/u2n4/video-url-analyzer-mcp.gitcd video-url-analyzer-mcppowershell -ExecutionPolicy Bypass -File scripts\install_windows.ps1

البديل بدون تثبيت: uvx video-url-analyzer-mcp.

الامان

الخادم محمي ضد:

  • SSRF — قائمة بيضاء للنطاقات المسموحة فقط
  • حقن الاوامر — حظر الاوامر الخطيرة + تنفيذ بدون shell
  • اختراق المسارات — حظر 25+ مسار حساس
  • حماية من الحمل الزائد — حد اقصى 10 مهام متزامنة

الحصول على مفتاح API

  1. اذهب الى Google AI Studio
  2. انشئ مفتاح API مجاني
  3. ضعه في ملف .env:
env
GEMINI_API_KEY=مفتاحك_هنا

來源:README.md,提交 c33d3f6

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v1.5.1最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分