Analyze the VIDEO inside an X/Twitter post โ fetch it, transcribe the speech locally (Qwen3-ASR), and produce a chapter-anchored content summary / script. Use when the user shares a tweet/X video and asks "์ด ์์ ๋ถ์/์คํฌ๋ฆฝํธ ๋ฝ์์ค", "๋ฌด์จ ๋ด์ฉ์ธ์ง ์ ๋ฆฌ", "transcribe this tweet video", "summarize the video in this X post", or drops an x.com/twitter.com/status link pointing at a video. Handles long videos (1h+) by transcribing a window at each tweet-parsed chapter instead of the whole runtime. Do NOT use for: text-only tweets or articles (use x-to-slack / x-to-notion), non-tweet video files or YouTube (use video-to-text / transcribee), or timeline scraping (use twitter-timeline-to-slack).
Installation
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fรผgen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prรผfen und installieren.
Analyze the VIDEO inside an X/Twitter post โ fetch it, transcribe the speech locally (Qwen3-ASR), and produce a chapter-anchored content summary / script. Use when the user shares a tweet/X video and asks "์ด ์์ ๋ถ์/์คํฌ๋ฆฝํธ ๋ฝ์์ค", "๋ฌด์จ ๋ด์ฉ์ธ์ง ์ ๋ฆฌ", "transcribe this tweet video", "summarize the video in this X post", or drops an x.com/twitter.com/status link pointing at a video. Handles long videos (1h+) by transcribing a window at each tweet-parsed chapter instead of the whole runtime. Do NOT use for: text-only tweets or articles (use x-to-slack / x-to-notion), non-tweet video files or YouTube (use video-to-text / transcribee), or timeline scraping (use twitter-timeline-to-slack).
x-video-digest
Tweet video โ local transcript โ chapter-anchored summary. Thin composer over the
FxTwitter API (metadata, no auth), scripts/stt/stt_transcribe.py (Qwen3-ASR, the
repo STT engine โ see [[stt-generation]]), and ffmpeg range-seek (grab only needed
windows, not the whole multi-GB file). Does NOT reinvent download/transcribe โ
video-to-text covers the general case; this adds tweet fetch + long-video chaptering
the analysis step those skills stop short of.
Pipeline
Metadata + chapters โ python3 .claude/skills/x-video-digest/scripts/tweet_video_fetch.py "<url>" --json.
Returns author/date/lang/text/video_url/duration_sec and chapters parsed from the
tweet body (lines like 00:00 - topic, โข 2:05:08 topic). Inspect duration first.
Scope gate (ask the user for long videos) โ if duration_sec > ~20 min, the full
transcript is a big STT job. Offer: (a) chapter-anchored summary [default], (b) full
transcript, (c) metadata-only. Short clips โ just do full.
Extract audio windows โ ... tweet_video_fetch.py "<url>" --extract --outdir /tmp/xvid.
Short video โ one full.wav. Long video โ one ~6-min wav at each chapter (+ a midpoint
sample when a chapter spans >45 min). Writes <outdir>/batch.json for the STT wrapper.
Transcribe (Qwen3-ASR) โ python3 scripts/stt/stt_transcribe.py --batch /tmp/xvid/batch.json --language <lang> --context "<domain hotwords>" --format json --out /tmp/xvid/transcripts.json.
Batch = model loads once. Pass --language from step-1 lang (full name handled by wrapper).
Anchor proper nouns/jargon with --context (brands, technical terms) โ measurably fixes them.
Summarize โ read transcripts.json, write a chapter-by-chapter content summary + a
one-line overall thesis. Correct any misleading tweet framing against what the audio
actually says (see gotchas). Report transcript + wav paths.
(Optional) publish โ only if the user asks: Slack via x-to-slack pipeline
([[slack-post-formatting]]), Notion via x-to-notion, or a docx ([[docx-readability]]).
Rules & gotchas
Language = English-only for figure/caption text if this feeds a paper/deck, but the
chat summary follows the project language (Korean). Transcript stays in source language.
Trust the audio over the tweet copy. Promo tweets routinely misframe ("leaked secret
course" that is actually a public freeCodeCamp video, fake "$2M" hooks, funnel CTAs).
State the real source and flag the marketing framing โ do not amplify it
([[news-freshness-and-sourcing]] no fabrication, [[critical-thinking]]).
Never fabricate a transcript. Only summarize what STT actually returned. If a window
fails, report the gap; don't invent content.
ffmpeg range-seek pulls only the window bytes โ a 3-h 1080p video costs a few short
range requests, not a full download. Seeks are approximate (ยฑfew sec); fine for summary.
Cost: STT is GPU/CPU-bound and sequential; the wrapper has a CPU-headroom gate. Keep
windows bounded (--window-sec, default 360). Don't transcribe 3 h when 6 windows answer it.
Path B (STT unavailable): stt_transcribe.py --allow-fallback degrades to whisper
([[stt-generation]] / [[mcp-graceful-degradation]]).
No auth / no secrets. FxTwitter is a public read proxy; if it fails, the video URL can
also be pulled via reclip-media-downloader (yt-dlp) as a fallback source.