ads-audit
Full multi-platform paid advertising audit with parallel subagent delegation. Analyzes Google Ads, Meta Ads, LinkedIn Ads, TikTok Ads, and Microsoft Ads…
Stage 4 of the Ben AI publishing chain. Generates chapters with accurate timestamps and a tag string for a Ben van Sprundel video. Pulls the timestamped transcript out of YouTube through Claude in Chrome, finds where each topic actually starts, names chapters to Ben's measured
$ npx -y skills add naveedharri/benai-skills --skill youtube-chapters-tags --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/youtube-chapters-tagsContext preview
The summary Claude sees to decide when to auto-load this skill.
Stage 4 of the Ben AI publishing chain. Generates chapters with accurate timestamps and a tag string for a Ben van Sprundel video. Pulls the timestamped transcript out of YouTube through Claude in Chrome, finds where each topic actually starts, names chapters to Ben's measured
name: youtube-chapters-tags description: Stage 4 of the Ben AI publishing chain. Generates chapters with accurate timestamps and a tag string for a Ben van Sprundel video. Pulls the timestamped transcript out of YouTube through Claude in Chrome, finds where each topic actually starts, names chapters to Ben's measured style, flags every outbound video reference that needs a description link, and builds the tag list from the pattern measured across Ben's last 15 published videos. Needs the video to be Unlisted first, because a Studio draft has no caption track. Use when someone says "prepare the chapters", "do the tags", "chapter this video", "what tags should I use", "review the chapters", or shares a video URL and asks for chapters or tags.
Stage 4. Two deliverables from one video, run independently so either can be asked for alone.
1. **Chapters**: `MM:SS – Title` for the description and YouTube's chapter UI. 2. **Tags**: a tag string matching the pattern measured across Ben's recent videos.
A Studio draft has **no caption track**. No captions means no timestamped transcript means no chapters. YouTube generates captions only after the video is saved at a real visibility and its checks finish. Private does not work either.
So `youtube-studio-setup` runs first. If the video is still a draft, or Unlisted but not yet captioned, say so plainly and stop. Do not fake chapters from the script, the Notion card, or the outline. Every timestamp has to come from the transcript.
Check for captions before anything else:
const h = await (await fetch('/watch?v=VIDEO_ID')).text();
h.includes('captionTracks')False means come back later. It usually clears within the same session for a video under 20 minutes.
YouTube is IP-blocked from the sandbox. `youtube-transcript-api` and `curl` both fail; do not retry them. Everything goes through Claude in Chrome.
Use the transcript-panel recipe in `references/chrome-transcript-extraction.md`.
**Do not try to fetch the caption track's `baseUrl` out of `captionTracks`.** It gets blocked, because that URL carries session tokens. Found 2026-08-25. The DOM panel is the working path.
Store the result on `window.__ts`. JS responses cap at about 1000 characters, so read it back in slices of roughly 8 lines. Tabs also die mid-session and take `window` with them, so re-derive rather than assuming state survived.
Reading 100 segments at 8 lines a call is a dozen round trips. Filter first, read only the windows around each candidate:
const p = /(first|second|thirdly|lastly|and last|best practice|now let me|moving on|
demo|review|recommend|here above|show you)/i;
window.__ts.map((l,i)=>({i,l})).filter(o=>p.test(o.l)).map(o=>o.i+' '+o.l.slice(0,40)).join('\n')Then `window.__ts.slice(n-1, n+7)` around each hit to confirm the exact boundary line.
The timestamp marks where the topic **starts being discussed**, not where the transcript block starts. If the transition phrase lands mid-block, take that block's timestamp.
**Read `references/chapter-style.md` before naming anything.** It is measured from the last 15 published videos and it overrides intuition. The corpus is in `references/examples/chapter-corpus-2026-08.md`.
The rule that matters most: a chapter title reads like a video title. It hints at the territory and withholds the payoff. `Best Practice #3`, never `Best Practice 3: Narrate Why`.
Four things worth repeating here:
it ends, not at the block that still contains its tail.
on the noun when the bare noun would not stand alone. Oskar corrected `Practice #1` to `Best Practice #1` on 2026-08-25: the `#` governs the number, not how far the noun gets trimmed.
earlier 15-second floor. Merge or shift when two transitions land closer, and say which.
Deliver in a fenced code block so it copies cleanly.
Scan for any moment Ben points at another video: "I have a full video on this", "check out the video here above", "link in the description". For each one report the timestamp, the exact quote, and what it is probably about.
The end-card reference in the last 30 seconds is the most common and almost always needs a link. Report it; do not guess which video it is.
**Read `references/tagging-pattern.md`.** It was rebuilt 2026-08-25 from the real `keywords` field of Ben's last 15 videos, and it corrects five rules that the old lost version got wrong. Do not work from memory of the old rules.
The headline corrections, so nobody rebuilds the mistakes:
staples" are topical. `claude cli` appears once in fifteen videos.
A list is mostly permutations of the video's own topic, with a thin brand layer. The measured shape and the modifier set are in the reference.
Expert automation skills for Claude Code, organized by department.
Repo: naveedharri/benai-skills
Full multi-platform paid advertising audit with parallel subagent delegation. Analyzes Google Ads, Meta Ads, LinkedIn Ads, TikTok Ads, and Microsoft Ads…
Budget allocation and bidding strategy review across all ad platforms. Evaluates spend distribution, bidding strategy appropriateness, scaling readiness, and…
Competitor ad intelligence analysis across Google, Meta, LinkedIn, TikTok, and Microsoft. Analyzes competitor ad copy, creative strategy, keyword targeting,…
Cross-platform creative quality audit covering ad copy, video, image, and format diversity across all platforms. Detects creative fatigue, evaluates…
Google Ads deep analysis covering Search, Performance Max, Display, YouTube, and Demand Gen campaigns. Evaluates 74 checks across conversion tracking, wasted…
Landing page quality assessment for paid advertising campaigns. Evaluates message match, page speed, mobile experience, trust signals, form optimization, and…