Install
$ agentstack add skill-mharis-code-videoanalyzer-videoanalyzer ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Video Content Analyzer
Watches any social media video and reverse-engineers it into a structured content intelligence report. Self-contained — all pipeline scripts are bundled in scripts/.
Dependencies
Same as the watch-video pipeline:
- yt-dlp on PATH — video download
- ffmpeg + ffprobe on PATH — frame extraction
- Python 3.9+
- Optional:
GROQ_API_KEYorOPENAI_API_KEYin~/.config/watch/.envfor Whisper transcription on videos without captions
Run python "__SKILL_SCRIPTS_PATH__/setup.py" --check to verify.
Step 1: Extract the URL
Check $ARGUMENTS. If a URL is present, use it directly. If empty or no URL detected, ask: "Paste the video URL to analyze."
Detect platform from the URL domain (tiktok.com, instagram.com, youtube.com, reddit.com, x.com/twitter.com, etc.).
Step 2: Run the Pipeline
Run the bundled watch.py script:
python "__SKILL_SCRIPTS_PATH__/watch.py" ""
Capture the full stdout markdown report. It contains:
- Video metadata (title, uploader, duration, resolution)
- Frame paths with timestamps:
- \\(t=MM:SS) - Transcript segments (if available)
- Work directory path (needed for cleanup)
If the pipeline errors, surface the exact error message — do not proceed without frames.
Step 3: Read All Frames
Read every frame path listed in the report using parallel Read tool calls (one call per frame). Align each frame to its t=MM:SS timestamp. Cross-reference with transcript lines at matching timestamps where available.
For long videos (>10 min, >80 frames): read all frames — the pipeline already capped the budget.
Step 4: Produce the Analysis
Write the structured report in chat using the format below. Fill every section from what you actually see in the frames and transcript — do not invent content that isn't there. If a section can't be filled (e.g. no transcript for hook verbatim), note it as "not available — no transcript."
# Video Content Analysis
**Source:** [URL]
**Creator:** [@handle or channel name]
**Platform:** [TikTok / Instagram / YouTube / Reddit / X / Other]
**Duration:** [mm:ss]
**Analyzed:** [today's date]
---
## Format Breakdown
- **Category:** [Educational → Tutorial / Listicle / Story / Commentary / Review / How-to / Mixed]
- **Flavor:** [One sentence: the specific execution style — e.g. "Screen-record walkthrough with talking-head PIP and on-screen text overlays"]
- **Why it works:** [The psychological or structural reason this format performs — e.g. "Visual proof (grids of viral videos) builds instant social proof while the voiceover delivers the teaching, reducing cognitive load"]
---
## Topic & Angle
- **Topic:** [Plain-language subject of the video]
- **Angle:** [The specific reframe or contrarian positioning — how is the creator making a familiar topic feel new or different?]
- **Common belief challenged:** ["Most people think..."]
- **Contrarian reality:** ["The truth is..."]
---
## Hook Analysis
- **Spoken hook:** [Verbatim first line or close paraphrase from the first 5-10 seconds — or "not available" if no transcript]
- **Hook category:** [Authority / Question / Pattern Interrupt / Shock / Promise / Story Open / Curiosity Gap]
- **Visual hook:** [What is shown on screen simultaneously — social proof grid, striking visual, text overlay, talking head, product demo, etc.]
- **Hook alignment:** [How the spoken and visual hooks reinforce each other — or conflict]
- **Swipeable madlib template:**
> "[Category] like [specific example] is outperforming everything else. So here's the [adjective] [framework/system/tool] to [achieve result]."
*(Adapt the madlib to match the actual hook style — authority, question, pattern interrupt, etc.)*
---
## Storytelling Structure
| # | Section | What Happens | Timestamp |
|---|---------|--------------|-----------|
| 1 | Hook & Promise | [describe] | 0:00–0:XX |
| 2 | [name] | [describe] | 0:XX–0:XX |
| 3 | [name] | [describe] | 0:XX–0:XX |
| 4 | [name] | [describe] | 0:XX–0:XX |
| 5 | [name] | [describe] | 0:XX–0:XX |
| 6 | [name] | [describe] | 0:XX–0:XX |
| 7 | Conclusion & CTA | [describe] | 0:XX–end |
*(Use fewer or more rows if the video has fewer or more distinct beats — 7 is the target, not a hard rule)*
**Key structural moves:** [Any non-obvious sequencing — e.g. "Lead magnet CTA placed mid-video at 0:23, not at the end — drives comment volume by creating urgency before the viewer has fully decided to stay"]
---
## CTA Analysis
- **Primary CTA:** [What the creator asks viewers to do — comment a word, follow, link in bio, DM, etc.]
- **CTA placement:** [Timestamp + whether it's early / mid / end — and why that placement is strategic]
- **Engagement mechanic:** [Comment bait / link in bio / DM trigger / follow hook / share bait / lead magnet]
- **Lead magnet:** [Yes — describe it / No]
- **CTA strength:** [How explicit and urgent the ask is — passive mention vs. hard ask vs. reciprocal offer]
---
## Visual & Production Notes
- **Setting:** [Talking head / Screen record / B-roll / Animation / Studio / Casual / Mixed]
- **On-screen text:** [How captions, lower-thirds, or text overlays are used — always on, key moments only, etc.]
- **Editing pace:** [Estimated cuts per minute — fast / medium / slow — and how this matches the content energy]
- **Social proof elements:** [Grids of viral videos, follower count reveals, screenshots of results, testimonials, etc.]
- **Production level:** [Minimal (phone + natural light) / Mid (mic + simple setup) / Polished (studio quality)]
- **Pattern interrupts:** [Any deliberate visual or audio breaks designed to re-engage a drifting viewer]
---
## Replication Playbook
The 3-5 most actionable things to copy from this video into your own content strategy:
- [Specific, concrete action — not generic advice. E.g. "Use an authority hook with a grid of 6 successful examples as the visual — it makes the claim credible before you say a word"]
- [...]
- [...]
- [...]
- [...]
---
## Raw Intelligence
- **Frames analyzed:** [N]
- **Transcript source:** [captions / whisper (groq) / whisper (openai) / none — frames only]
- **Work dir:** [path — will be deleted after save]
Step 5: Save the File
Determine the creator slug: lowercase, hyphens, max 3 words from the handle or channel name.
Save to: projects/content-creation-system/drafts/analysis/YYYY-MM-DD-[platform]-[creator-slug].md
Create the analysis/ folder if it doesn't exist.
Tell Haris the file path.
Step 6: Clean Up
Delete the work directory printed in the pipeline footer:
Remove-Item -Recurse -Force ""
(Use PowerShell on Windows. Use rm -rf on Mac/Linux.)
Hard Rules
- Never invent content that isn't in the frames or transcript. If a section can't be answered from what you see, say so.
- Hook verbatim requires a transcript — if none is available, describe what's visible and note the limitation.
- The Replication Playbook must be specific to this video, not generic content advice.
- No emojis. No em dashes. No corporate jargon.
- If the pipeline fails (yt-dlp error, ffmpeg error, etc.), show the exact error — do not proceed.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Mharis-code
- Source: Mharis-code/videoanalyzer
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.