video-teardown
暂无简介
- License 许可
- MIT
- 最近更新
- 2026-11-06
- Stars
- ★ 0
- Forks
- 0
02 资源文件 1
- 脚本scripts/teardown.py13.1 KB
03 SKILL.md 正文
video-teardown
One script produces the raw materials; you (the agent) write the breakdown from them. Never write a breakdown from memory or from the post text alone. Every claim cites a transcript timestamp or a frame.
1. Run the script
~/openclaw/skills/video-teardown/scripts/teardown.py "<url-or-file>" [--mode auto|short|demo] [--language en]
--mode auto(default):shortfor social URLs (x/tiktok/instagram/shorts) or videos up to 3 min;demofor anything longer (Loom, YouTube long-form, screen recordings).short: evenly spaced frames (24 by default) in 4×2 grids at 480 px per cell.demo: scene-change detection (catches UI and slide changes in screen recordings) plus a coverage floor. Up to 90 frames at 1280 px, in 3×2 grids at 640 px per cell, so UI text stays readable.
- Tuning:
--max-frames N,--interval SEC,--scene 0.08(lower = more frames for subtle UI changes),--force(re-extract frames only). - Idempotent: re-runs reuse the download and transcript. Prints
summary.jsonto stdout. Theasset_dirfield is where everything landed (default~/.openclaw/workspace/research/teardowns/<date>-<slug>/). - Don't run it to "check usage". Use
-h, which exits without fetching anything.
Cost: Whisper costs $0.006/min ($0.06 for a 10-min clip, about $0.36 for an hour-long Loom), plus $0.005 for the X metrics read on x.com URLs. Put the cost_estimate_usd in the delivery line. Runtime is about 45 s for 10 min and about 2 min for 30 min.
Exit codes: 2 = usage error or missing OPENAI_API_KEY. 3 = download failed. 4 = Whisper failed. Surface the message verbatim.
Loom specifics
- Public share links (
loom.com/share/<id>) work directly. - Private, password-protected, or workspace-restricted Looms fail with exit 3. Ask Marcel to hit Download in Loom and drop the mp4 on Albert (or any direct URL). Then run the script on the file path; local files are supported.
2. Read the materials (file-output discipline)
summary.json,meta.json: title, duration, uploader. For X:x_post.metrics,author_followers,impressions_per_follower.transcript.txt:[m:ss] textlines. For long videos (>30 min / >5k words), read it in chunks with offset/limit; don't slurp it into one turn.sheets/sNN.jpg: view these images to skim visually.frames.tsvmaps each sheet cell to its exact timestamp and full-res frame (frames/t_0h12m34s.jpg). Open the full-res frame when you need to read UI detail.- Don't paste the transcript into chat or into the vault note. Quote short lines only.
3. Write the breakdown
Write it to the vault, then send Marcel a short summary plus the note path.
| Lens | Vault path |
|---|---|
content |
obsidian/_WORK/Social/Teardowns/YYYY-MM-DD <author> - <short title>.md |
demo (product) |
obsidian/_WORK/Bold Video/Research/Teardowns/YYYY-MM-DD <product> demo.md if Marcel framed it for Bold, otherwise obsidian/_WORK/Research/Teardowns/ |
The raw assets (video, frames) stay in asset_dir. Never copy video or frame files into the vault (sync bloat). Link to asset_dir in the note's frontmatter instead.
Frontmatter (both lenses):
source: <url>
author: <uploader>
duration: <m:ss>
lens: content | demo
assets: <asset_dir>
cost_usd: <cost_estimate_usd>
date: YYYY-MM-DD
Lens content (social video): sections
- TL;DR: 2–3 lines on what it is and why it worked.
- Performance: raw metrics +
impressions_per_follower(outlier ratio; >10× = the video did it, not the audience). Note save/like ratio when available (bookmarks > likes = reference content). - Hook: first 3–8 s verbatim, and what kind of hook (credential, contrarian, promise, curiosity gap).
- Structure: timestamped beats.
- Format: the reusable container (e.g. "slides + facecam explainer", "$1 vs $X comparison", "challenge quiz"). Name it so it can become a format-library card.
- Core ideas: the substance, with timestamps.
- Claims to verify: every self-reported number, flagged as unverified.
- What we could reuse: concrete, not generic.
Lens demo (product demo / Loom): sections
- TL;DR: what the product is and the 3 most interesting things in it.
- Feature inventory: a table with
timestamp | feature | what it does | frame(link theframes/…jpgfilename). Be exhaustive; the point is that Marcel can jump to 14:32 and see it. - UX patterns worth noting: interaction details, empty states, onboarding, AI touches, pricing/plan gates seen on screen.
- Open questions: things shown but not explained.
- Ideas for Bold: only when Marcel framed the request for Bold (or another project). Otherwise stay neutral, per the research scope rule. When it's in scope, read
_WORK/Bold Video/Roadmap.mdandPositioning.mdfirst and map each idea to what exists versus what's new.
Don'ts
- Don't invent what's on screen. If a frame is unreadable, say so or open the full-res frame.
- Don't treat creator claims as facts ("70M views in 10 videos" stays claimed).
- Don't re-run with
--forcejust to re-read; the materials are already on disk. - Don't download private videos with cookies or by logging in on someone's behalf. Ask Marcel for the file instead.
04 同仓库更多 Skills
zight
Analyze Zight screenshots and screen recordings from share.zight.com links. Use this skill automatically when a Zight link appears in a ticket, user message, or bug report. Handles both images (view directly) and videos (extract frames, transcribe audio, analyze visually). Produces a structured summary of what the user sees and says in the recording.
x-read
Read tweets, threads, user timelines, mentions, bookmarks, likes, and search results from X (Twitter) via the official X API v2. Use when the user asks "what's in this tweet", "summarize this thread", "show my mentions / bookmarks", "what did <user> tweet about", "what's trending on X about <topic>", or pastes an x.com / twitter.com URL and wants the contents. Owned reads (the user's own posts, mentions, bookmarks, likes, followers, lists) cost $0.001 per resource since 2026-04-20; arbitrary tweet reads are $0.005. The skill never invents tweet text — every output is the literal API response or `null` when the API has no data. Does NOT post, like, follow, or mutate state — read-only.
linkedin-archive
Archive Marcel's recent LinkedIn posts into the Obsidian vault as weekly markdown files matching the social-corpus format. Use when Marcel says "archive my LinkedIn", "pull my LinkedIn", "/linkedin-archive", "update the social corpus", or "what did I post on LinkedIn this week — and capture it". Runs as a Claude cowork skill on Marcel's own machine (logged-in browser session); does NOT run on the gateway VM. Companion to the Twitter side (`~/.openclaw/bin/social-archive-x.mjs`, auto-cron Sat 21:00 Madrid) which uses the X API and runs unattended. LinkedIn API doesn't allow own-timeline reads at consumer tier, so this is intentionally manual/assisted.
keyword-research
Run real keyword research with DataForSEO. Volumes, CPC, keyword difficulty, SERP intent, competitor gaps, and clustered topical maps grounded in the user's ICP — not vibes. Use when the user wants to "do keyword research," "find keywords for," "build a keyword list," "what should I rank for," "check search volume," "find keyword gaps vs competitors," "build a topical map," "plan a content cluster," "set up Google Ads keywords," "build an AdWords campaign," or "find long-tail keywords." Pulls the ICP from the user's Obsidian vault when present, talks to DataForSEO directly (REST or MCP), and produces a prioritized, intent-tagged keyword plan ready to feed into Ads, content, or SEO. Does NOT invent volumes or CPCs — every number is cited to a DataForSEO endpoint and timestamp.
brand-dossier
Research a prospect/company/creator (from names or URLs) and produce a Bold demo-prep brand dossier — a folder with a paste-ready markdown file (org context, persona, tone, topics, transcription dictionary, conversation starters) plus downloaded logos and extracted brand colors. Use when preparing a Bold demo tenant for a prospect, or when asked to "research X for a demo", "make a dossier", or "brand research".
alpha-humanizer
Transform AI-generated content into prose that reads as 100% human-written. Use when the user wants to "humanize" text, make AI content undetectable, rewrite content to sound human, bypass AI detectors, remove the "AI voice," write with authentic human voice, or produce content that passes as organic human writing. Also triggers on "rewrite this to sound human," "make this not sound like AI," "humanize this," "remove AI patterns," "write like a real person," or any request to eliminate synthetic writing patterns. Handles blog posts, LinkedIn posts, sales copy, emails, essays, technical docs, social media, landing pages, product descriptions, and thought leadership. Does NOT just swap words — it restructures the cognitive architecture of the text.