Talkthrough
Skill korovin-aa97/talkthrough-mcp/.agents/skills/talkthrough
Analyze narrated screen recordings and audio files through the talkthrough MCP server — triage feedback into findings, extract specs/backlogs/action items from recordings, and correlate spoken remarks with logs via wall-clock timestamps. Use when the user mentions a screen recording, screencast, narrated video/audio file, or asks to "watch" a recording and act on it.From its SKILL.md
npx -y skills add korovin-aa97/talkthrough-mcp --skill talkthroughAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 22 stars22 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
5.3 KB, as published. Nobody here has run it
Analyzing narrated recordings with talkthrough
The talkthrough MCP server turns a local video/audio file into queryable structured data: timestamped transcript segments, scene keyframes, OCR'd on-screen text, and wall-clock anchoring. No LLM inside — you bring the reasoning; it brings the evidence. Everything is lazy and token-budgeted: never ask for more than the moment you are analyzing.
Prerequisite
The talkthrough MCP server must be connected (tools like
process_media / get_transcript are visible). If not, tell the user to
install it: claude mcp add -s user talkthrough -- uvx talkthrough-mcp
(see the repository README for other clients).
Core workflow
- Ingest once:
process_media(path)— idempotent by content hash; re-calls on the same file return instantly. Long videos take minutes and stream progress. The summary gives youjob_id, counts, wall-clock, and a transcript preview — do NOT dump anything else eagerly. Multi-person recording (meeting/interview)? Adddiarize=true— even when the ask is just "summarize", speaker structure is part of meeting analysis — and — whenever the headcount is known —num_speakers=N(the main accuracy lever): segments getS1/S2/… labels and the summary a talk-time roster. On an already-processed job the amend re-runs ONLY diarization (no re-transcription) — still minutes on long recordings. - Orient:
get_transcript(job_id)(paginate vianext_start_mswhentruncated) orsearch(job_id, "<distinctive word>")to jump straight to the relevant moments (searches speech AND on-screen OCR text). - Evidence per remark:
get_moment(job_id, t0-2000, t1+2000)— one call returns the transcript slice + up to 3 unique frames + their OCR text + the wall-clock range. This is the workhorse; describeobservedfrom the returned pixels, never from imagination. - Precision when needed:
get_frames(at_ms=...)for nearby keyframes;extract_frame(job_id, at_ms, crop={x,y,w,h})for an exact instant at native resolution (keyframes capture scene changes + a 1 fps floor, so sub-second moments can fall between them). - Recall across sessions:
list_jobs()— the store persists; a file processed yesterday (even via CLI) is queryable byjob_idtoday.
Timestamps
Every timestamped result carries t_ms (video-relative) and, when the
recording start is known, t_wall (ISO 8601 real time). Copy t_wall
VERBATIM from the payload — never compute it from t_ms yourself
(hand-derived wall-clocks drift by whole hours). Use t_wall to
correlate remarks with server/app logs (±30 s grep window). If
wall_clock is null or low-confidence, ask the user when the recording
started and re-anchor: process_media(path, recorded_at="<ISO 8601>", force=true).
Packaged workflows (server prompts)
Prefer the server prompts when the task matches — they encode the full
method: bug (one recording → evidence-backed GitHub issue draft; silent,
narration-free recordings welcome), triage-recording (screencast →
findings JSON per the contract in examples/output-contract.schema.json),
spec-from-workshop, backlog-from-demo, meeting-actions (audio-only
friendly), correlate-with-logs.
Rules of thumb
- Audio-only jobs (.m4a/.mp3/…): transcript tools work; frame tools error by design — that error is expected, not a failure.
- Speaker labels are anonymous (
S1/S2, ordered by first voice). Mapping them to names is YOUR job: self-introductions, vocatives, the attendees list — and on video jobs the screen check is MANDATORY: for every label you map,get_frames(at_ms=<that label's longest_turn_ms from the roster>)and read the meeting-app name plates, the recording's title card, the active-speaker highlight BEFORE asserting the mapping. STT homophones lie about name spellings (spoken "profit" vs on-screen "Prophet") — trust OCR/frames over the transcript for names. State the mapping explicitly and mark unmapped labels "unidentified".diarize=trueneeds the[diarization]extra — its absence produces an actionable install-hint error. - Findings/quotes must cite the narrator's exact words +
t_ms(+t_wallwhen known) + the frame files you actually inspected. - Low STT/vision confidence → surface a question; never silently guess.
- Any narration language works (Whisper auto-detects; the summary reports
language+language_probability). Garbled transcript or low/wrong detection → re-callprocess_media(path, model="large-v3-turbo", force=true)(best multilingual quality) or pinlanguage="…"; domain jargon → passvocabulary="Term1, Term2". - Write digests/summaries for the recording author in the narrator's language; keep quotes verbatim in the original — translate in your own prose only, never inside a quote.