| name | talk-review |
| description | Download a conference talk from a YouTube recording/livestream, cut it to just the speaker's segment, analyze the delivery like a speaking coach, and optionally produce an HTML coach report with drills. Use when the user says "$talk-review", "download my talk", "cut my talk out of this video/livestream", "review my talk", "analyze my conference talk", "how did I do as a speaker", "speaking coach report", or pastes a YouTube URL of a conference recording and asks for their own talk.
|
| compatibility | Claude Code on macOS/Linux. Requires yt-dlp (fresh!), ffmpeg, python3, uv (for the impersonation fallback), deno. |
| metadata | {"author":"Alexander Opalic","version":"1.2.0"} |
Talk Review — download, cut, coach
Turn a raw conference recording into (1) a clean local video of just the user's
talk and (2) a speaking-coach analysis with concrete drills.
Default speaker: Alexander Opalic (the user). If the prompt names someone
else, use that name.
Workflow
Work in the scratchpad directory; only the final video and (optional) report
leave it.
Step 1 — Scope
Need from the user: the YouTube URL. A t= parameter in the URL is a strong
hint for where the talk starts. Ask only if missing: which video, and whether
they want the MC intro/outro included (default: include them — cutting tighter
is easy later).
Step 2 — Boundaries from captions
Download auto-captions only first, then locate the talk's start/end via
name-grep + silence gaps + reading the MC's words. Full procedure:
references/boundary-detection.md
Confirm the boundaries by quoting the first/last lines to yourself; don't guess
off the t= param alone.
Step 3 — Download the section
Download only the section, at 1080p, using the fallback ladder (throttling and
format roulette are normal — plan for them):
references/download-recipes.md
Verify or it didn't happen: ffprobe duration + resolution, then extract 2–3
frames and look at them (speaker's slides/name visible?). Throttled downloads
truncate with exit code 0.
Save as ~/Downloads/<speaker-slug>-<event-slug>.mp4 unless told otherwise.
Step 4 — Analyze the delivery
Run the transcript analyzer against the caption file with the talk-only
boundaries (exclude the MC):
python3 scripts/analyze_transcript.py captions.en.vtt <start> <end> <outdir>
Then:
- Read the full transcript (
talk_transcript.txt) for structure, closing
line, analogies, audience interaction.
- Sample ~5 frames across the talk for stage presence.
- Interpret everything against the benchmarks in
references/coach-analysis.md — it also has
the findings format and the drill catalogue with pass metrics.
Deliver the analysis in chat: strengths first, then 5–7 findings ranked by
impact with quoted evidence and timestamps, each mapped to a drill.
Step 5 — Optional: HTML coach report
If the user wants a report: write a normal, self-contained local HTML file
— do NOT publish it as a claude.ai Artifact. Follow the report structure at
the bottom of references/coach-analysis.md.
Load the artifact-design skill (for the design fundamentals) before writing
the page and the dataviz skill before the WPM chart.
- Full document skeleton (
<!doctype html><html><head>…</head><body>…), all
CSS/JS inline, no CDN or external requests — it must work offline from disk.
- Save it next to the video:
~/Downloads/<speaker-slug>-<event-slug>-coach-report.html.
- Verify the render (open it with agent-browser, screenshot, look at it), then
send the file to the user.
Gotchas
- Caption timestamps are video-absolute; report timestamps should be
talk-relative. State the offset ("add M:SS to find this in the video file").
- Auto-captions mangle names — grep for plausible mis-spellings too, and treat
ASR mishears of key nouns as an articulation finding, not noise.
- The final WPM bucket usually contains the MC handoff — mark it, don't count
it against the speaker.