{"slug":"minutes-video-review-4","title":"minutes-video-review","summary":"Analyze a product walkthrough, bug report video, Loom, or ScreenPal using Minutes transcription plus visual review. Use when the user wants a recorded demo or bug clip turned into a durable brief with transcript, key frames, issues, and next steps.","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-08-27T16:57:59.058429Z","repo":{"url":"https://github.com/silverstein/minutes","stars":1501,"forks":165,"license":"MIT","updatedAt":"2026-09-25T06:14:41Z"},"bodyHtml":"<hr>\n<p>name: minutes-video-review\ndescription: Analyze a product walkthrough, bug report video, Loom, or ScreenPal using Minutes transcription plus visual review. Use when the user wants a recorded demo or bug clip turned into a durable brief with transcript, key frames, issues, and next steps.\ntriggers:</p>\n<ul>\n<li>analyze this video</li>\n<li>review this video</li>\n<li>review this walkthrough</li>\n<li>review this bug report video</li>\n<li>summarize this Loom</li>\n<li>summarize this ScreenPal</li>\n<li>video intel\nuser_invocable: true\nmetadata:\ndisplay_name: Minutes Video Review\nshort_description: Review a demo, walkthrough, or bug video into a durable brief.\ndefault_prompt: Use Minutes Video Review to analyze this recorded video and return a transcript plus actionable brief.\nsite_category: Artifacts\nsite_example: /minutes-video-review <a href=\"https://go.screenpal.com/watch/..\">https://go.screenpal.com/watch/..</a>.\nsite_best_for: Turn a Loom, ScreenPal, or local walkthrough video into a durable artifact bundle for agent review.\nassets:\nscripts:\n<ul>\n<li>scripts/video_review.py\ntemplates: []\nreferences:</li>\n<li>references/dependencies.md</li>\n<li>references/output-schema.md\noutput:\nclaude:\npath: .claude/plugins/minutes/skills/minutes-video-review/SKILL.md\ncodex:\npath: .agents/skills/minutes/minutes-video-review/SKILL.md\ntests:\ngolden: true\nlint_commands: true</li>\n</ul>\n</li>\n</ul>\n<hr>\n<h1>/minutes-video-review</h1>\n<p>Analyze a product walkthrough, bug report video, Loom, ScreenPal, or local recording into a durable artifact bundle that agents can keep working from.</p>\n<p>This skill is for <strong>meeting-adjacent product artifacts</strong>, not for generic \"understand any video\" requests. Use it when the user wants a recorded demo, bug repro, or walkthrough turned into something actionable for engineering, product, support, or follow-up agent work.</p>\n<h2>What this skill does</h2>\n<p>The bundled script handles the deterministic pipeline:</p>\n<ul>\n<li>resolve a local file or hosted video URL</li>\n<li>download hosted video when needed</li>\n<li>extract audio with <code>ffmpeg</code></li>\n<li>transcribe with Minutes first, using the user's existing Minutes transcription setup</li>\n<li>sample key frames with adaptive caps so long videos do not blow up context</li>\n<li>write a durable artifact bundle under <code>~/.minutes/video-reviews/</code></li>\n</ul>\n<p>Then <strong>you</strong> review the resulting artifacts and return the actual user-facing brief.</p>\n<h2>Primary command</h2>\n<p>Local file:</p>\n<pre><code>python3 \"${CLAUDE_PLUGIN_ROOT}/skills/minutes-video-review/scripts/video_review.py\" \\\n  \"/absolute/path/to/video.mp4\"\n</code></pre>\n<p>Hosted video:</p>\n<pre><code>python3 \"${CLAUDE_PLUGIN_ROOT}/skills/minutes-video-review/scripts/video_review.py\" \\\n  \"https://go.screenpal.com/watch/...\"\n</code></pre>\n<p>Useful options:</p>\n<pre><code>python3 \"${CLAUDE_PLUGIN_ROOT}/skills/minutes-video-review/scripts/video_review.py\" \\\n  \"https://www.loom.com/share/...\" \\\n  --focus \"customer signup bug repro\" \\\n  --cookies-from-browser chrome \\\n  --env-file /absolute/path/to/.env \\\n  --frame-step 15 \\\n  --max-frames 36 \\\n  --keep-temp\n</code></pre>\n<h2>How to use it</h2>\n<h3>Phase 1: Run the pipeline</h3>\n<p>Run the script on the provided local file or hosted video URL.</p>\n<p>The script prints JSON with the output artifact paths. Important outputs include:</p>\n<ul>\n<li><code>analysis_md</code></li>\n<li><code>analysis_json</code></li>\n<li><code>transcript_md</code></li>\n<li><code>metadata_json</code></li>\n<li><code>frames_dir</code></li>\n<li><code>contact_sheet_artifact</code></li>\n</ul>\n<h3>Phase 2: Inspect the artifacts</h3>\n<p>Read the generated <code>analysis.md</code> and <code>analysis.json</code> first.</p>\n<p>Then inspect:</p>\n<ul>\n<li><code>transcript.md</code> for the actual spoken content</li>\n<li>selected images from <code>frames/</code> when visual state matters</li>\n<li><code>contact-sheet.jpg</code> for a quick visual sweep across sampled frames</li>\n<li><code>metadata.json</code> for transcript method, duration, source kind, and frame sampling details</li>\n</ul>\n<h3>Phase 3: Produce the real brief</h3>\n<p>Return a concise, useful brief to the user that includes:</p>\n<ul>\n<li>what the video is trying to show</li>\n<li>likely bug / proposal / walkthrough intent</li>\n<li>key moments or timestamps</li>\n<li>likely impacted area or flow</li>\n<li>the clearest next actions</li>\n</ul>\n<p>Do not just echo the generated markdown blindly. Use the artifacts as evidence and produce a thoughtful agent answer.</p>\n<h2>Minutes-first transcription rules</h2>\n<p>This skill should prefer transcript backends in this order:</p>\n<ol>\n<li>hosted captions / VTT when the source exposes them</li>\n<li><code>minutes process</code> with an isolated temporary config</li>\n<li>local <code>whisper</code> CLI if available</li>\n<li>OpenAI audio transcription only as a last resort when configured</li>\n</ol>\n<p>Important:</p>\n<ul>\n<li>the Minutes path should use the user's current Minutes transcription setup</li>\n<li>if Minutes is configured for Whisper, use Whisper</li>\n<li>if Minutes is configured for Parakeet, use Parakeet</li>\n<li>do not silently fork a separate transcription stack unless the Minutes path is unavailable</li>\n</ul>\n<p>When reporting the artifacts back to the user, preserve the transcript method exactly. Prefer labels like:</p>\n<ul>\n<li><code>vtt_captions</code></li>\n<li><code>minutes-whisper</code></li>\n<li><code>minutes-parakeet</code></li>\n<li><code>minutes-whisper-fallback</code></li>\n<li><code>local_whisper_cli</code></li>\n<li><code>openai_audio_transcription</code></li>\n</ul>\n<h2>Context discipline</h2>\n<p>This skill must stay disciplined about context size.</p>\n<ul>\n<li>Do not send the full video itself to the reasoning layer.</li>\n<li>Do not dump a long transcript and dozens of frames into the final answer.</li>\n<li>Treat the transcript as the backbone and frames as supporting evidence.</li>\n<li>Prefer inspecting a curated subset of frames instead of every sampled image.</li>\n</ul>\n<p>The bundled script already caps frames adaptively, but you should still exercise judgment when deciding what to read or mention.</p>\n<h2>Output contract</h2>\n<p>The script writes a durable bundle under:</p>\n<pre><code>~/.minutes/video-reviews/&lt;timestamp&gt;-&lt;slug&gt;/\n</code></pre>\n<p>Expected files:</p>\n<ul>\n<li><code>analysis.md</code></li>\n<li><code>analysis.json</code></li>\n<li><code>transcript.md</code></li>\n<li><code>metadata.json</code></li>\n<li><code>frames/</code></li>\n</ul>\n<p>These artifacts are <strong>not</strong> part of the normal <code>~/meetings/</code> corpus by default.</p>\n<h2>Dependencies</h2>\n<p>See:</p>\n<ul>\n<li><code>${CLAUDE_PLUGIN_ROOT}/skills/minutes-video-review/references/dependencies.md</code></li>\n<li><code>${CLAUDE_PLUGIN_ROOT}/skills/minutes-video-review/references/output-schema.md</code></li>\n</ul>\n<h2>Gotchas</h2>\n<ul>\n<li><strong>Hosted URLs need <code>yt-dlp</code>.</strong> Local file review still works without it.</li>\n<li><strong>Frame caps are intentional.</strong> The script samples enough evidence to review the video without turning this into a generic video-intelligence pipeline.</li>\n<li><strong>Minutes artifacts stay isolated.</strong> The script uses a temp config/output path for the Minutes transcription run so it does not pollute the user's normal archive.</li>\n<li><strong>Model-powered auto-analysis is optional.</strong> The generated <code>analysis.md/json</code> may be heuristic when no multimodal provider key is available. You still need to read the artifacts and produce the final answer.</li>\n<li><strong>Long videos need synthesis, not brute force.</strong> If the transcript is long, work from the generated artifacts and only open the most relevant frames and transcript sections.</li>\n</ul>\n","files":[{"path":"references/dependencies.md","sizeBytes":1640,"isText":true},{"path":"references/output-schema.md","sizeBytes":1317,"isText":true},{"path":"scripts/eval_video_review.py","sizeBytes":5763,"isText":true},{"path":"scripts/test_video_review.py","sizeBytes":3112,"isText":true},{"path":"scripts/video_review.py","sizeBytes":58449,"isText":true},{"path":"skill.md","sizeBytes":6618,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"notes-only","suspicious":0,"notes":5,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-08-27T17:02:37.361533Z","sha256":"E910EC93C300F9821F5EC736C892CDE234F8A38242638D902F531B57C9BB79D3","sizeBytes":21801},"review":null,"source":{"repositoryUrl":"https://github.com/silverstein/minutes","path":"tooling/skills/sources/minutes-video-review","license":"MIT","commit":"37d3440d4f132e2f3864fbe537e375fd546159ba","subtreeSha":"FBDBDD6AA890011F8791FD134945078A24EE6A213891F4A3EFD91155119FCAB3","lastSyncedAt":"2026-09-25T07:37:08.19899Z"},"reviewedAt":"2026-08-27T17:13:21.797343Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/silverstein/minutes/tree/main/tooling/skills/sources/minutes-video-review"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install silverstein-minutes@llmmart"},{"target":"git","command":"git clone https://github.com/silverstein/minutes.git"}]}