Communitygithub.com

jsath/claude-skills

Reviews and rewrites a video script (YouTube long-form, a short, or a talking-head reel) so it sounds like one person talking to one friend and holds attention: kills forced analogies and presenter phrases, fixes framing, checks hooks, open loops and re-engagement beats, and suggests titles. Use when someone says fix this script, polish my script, make it sound like me, tighten this before I film, or asks for a hook or title for a video. Returns the rewritten script plus a short change log.

claude-skills とは?

claude-skills is a Claude Code agent skill that reviews and rewrites a video script (YouTube long-form, a short, or a talking-head reel) so it sounds like one person talking to one friend and holds attention: kills forced analogies and presenter phrases, fixes framing, checks hooks, open loops and re-engagement beats, and suggests titles. Use when someone says fix this script, polish my script, make it sound like me, tighten this before I film, or asks for a hook or title for a video. Returns the rewritten script plus a short change log.

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jsath/claude-skills/tree/HEAD/skills/video/script-polish

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Script Polish

Takes a draft script and returns a version you can read on camera without sounding like a presenter or an AI. Two passes: voice (does it sound like a person) and retention (will people keep watching).

By Johann (@johannships). These rules came from rewriting dozens of my own scripts after viewers told me what felt fake.

Inputs

  • The script (pasted, or a file path in Claude Code). Required.
  • Format: long-form (5 to 20 min), short (25 to 60 s), or reel. Ask if not obvious from length.
  • Optional: 1 to 3 transcripts of the creator's own past videos. If given, match their words and rhythm over the defaults below.
  • Optional: the source (repo, article, product page) the script is about. If it is a repo or product, read its README or page before touching the hook.
  • Optional: a hook the creator wrote and wants kept. Keep it word for word unless they ask for a new one.

If no voice sample is given, use the default voice below and say so in the change log.

Pass 1: voice rules

  1. No forced analogies. Delete any comparison a real person would not say to a friend ("Ferrari in first gear", "like reading a textbook while having a conversation", anything after "think of it like..."). Say the thing directly. "73KB of context is slow" beats any metaphor.
  2. One person to one person. Talking to a friend, not presenting to a room.
    • Do: "So skills, right?" / "Here's the move." / "Let it cook."
    • Cut: "Let me tell you about...", "I'm going to walk you through...", "Today we'll be covering...", "Let me recap what we just covered."
  3. Energy from results, not metaphors. "57% less context. Noticeably faster. That's it." beats "It's like going from a bike to a rocket." Only use numbers the creator actually measured or that the source states. Never invent one.
  4. Expert framing. The speaker is teaching their process, not discovering it or confessing a mess. "Here's how I keep these tight." not "So we audited every file and found a bunch of bloat."
  5. Sentences. Short. Fragments are fine. If a sentence has a comma, ask whether it should be two. If you would run out of breath reading it, split it.
  6. No em dashes and no --- dividers in the script, description or captions. Periods or line breaks.
  7. Stage directions stay practical: [to camera], [beat], [screen: what is shown]. Never acting notes like "conspiratorial energy". The creator is being themselves, not acting.
  8. "I", not "we", unless there really is a team.
  9. No private names. A client becomes "a PE firm owner", never their real name, unless the creator says it is approved.
  10. What and why, not how it works under the hood, unless the audience is technical and asked for it.

Line test: for every line ask "would this person say this to a friend over coffee?" If no, rewrite or cut.

Pass 2: retention (long-form)

  • 0:00 to 0:05: pattern interrupt or bold, true claim. No greeting, no channel intro.
  • Open loop early: plant a question in the first 30 s that is only answered later.
  • Never close a section clean. Tease the next section before wrapping the current one.
  • Re-engagement every 2 to 3 min: a visual change, a new promise, or a shift in energy. Minutes 3 and 6 are the usual drop-off points, so put the strongest transitions there.
  • No section over 2.5 min without a visual or energy change. Alternate talking head and screen.
  • Front-load value. Someone who leaves at minute 4 should still have got something.
  • [beat] only before a real reveal.
  • CTA: small asks along the way, final CTA earned at the end, never a cold "like and subscribe" open.

Pass 2: retention (shorts and reels)

Default shape for a 25 to 45 s talking reel:

  1. Two-second tension hook: one contrarian, specific or story-led sentence.
  2. One real situation the creator is in or saw.
  3. One useful mechanism: what to do differently and why.
  4. One hard closing line. Then cut. No "follow for more".

One idea per reel. Write it loose enough to deliver in one take.

For a reel about a new tool, repo or AI release, do not open with a feature summary:

[Who] did [specific surprising thing].
Then [the problem or tension it created].
So they built [product].
[One sentence: what it does.]
[Why this changes how the viewer should think.]
[One honest caveat if the source has one.]
[Concrete CTA: a finished guide, checklist or prompt.]
  • The first two lines must create a question. "X open-sourced a platform" is a dry hook when the origin story is stronger.
  • Compress the features around one mechanism. Do not list memory, files, sandboxes, connectors and crons as equal bullets.
  • Exaggerate the framing, never the facts. "Challenging" does not become "a nightmare". Stars are not installs. A README's before/after is an illustration, not a benchmark.
  • Spoken pace: about 2.6 words per second. 90 to 105 words is roughly 35 to 40 s. Count, do not guess.

Titles (if asked)

  • Under 60 characters. Front-load the hook. Numbers add specificity ("in 20 Minutes" beats "Fast").
  • Do not repeat the thumbnail text; the two should complement each other.
  • Leave a reason to click. Patterns: "I [did X]. Here's What Happened." / "Stop Using [X]. Do This Instead." / "How I [result] in [timeframe]".
  • Give one strong title by default, plus two alternates only if asked.

Output format

  1. The rewritten script, ready to read.
  2. A change log of 3 to 8 bullets, each naming the rule applied.
  3. Retention notes (long-form only): where the hook, open loop and minute 3 / minute 6 bumps sit.
  4. Word count and estimated runtime.

Example change log:

- Cut "think of it like a Ferrari in first gear" (rule 1). Replaced with the measured number from your notes.
- "Today I'm going to walk you through" -> "So here's the move." (rule 2)
- Split the 41-word sentence in section 2 into three (rule 5).
- Added a tease of the cost section before the setup section ends (open loop).
- 312 words, about 2 min at 2.6 words/s.

When something is missing

  • No source for a claim in the script: keep the claim, flag it in the change log as "unverified, check before filming". Do not delete or strengthen it.
  • Creator's hook conflicts with a rule: keep their hook, mention the concern once.
  • Asked for a caption instead of a script: give the caption only, no strategy notes.
  • A video file was attached: use what is actually said and shown in it, not the topic of the earlier conversation.

Keep a feedback log

When the creator says "this doesn't sound like me", write the pattern into feedback.md next to this file (date, what was wrong, the new rule) and read it before the next run.

Individual skills in this repo

This repo contains 11 individual skills — each has its own dedicated page.

jsath/claude-skills

Writes captions for a finished video from its transcript: pulls the line worth repeating, writes first-line options, writes per-platform versions (Instagram, TikTok, YouTube title and description, others on request), keeps the creator's voice using their best past captions, and checks the call to action matches what the video actually says. Use when a creator asks for captions, a caption hook, a YouTube title and description, or a CTA check. Drafts only; never posts or schedules.

jsath/claude-skills

Write CAPTIONS-PLATFORMS.md for one finished short video: a per-platform post caption for Instagram, TikTok, YouTube Shorts (title + description), Facebook, Threads, Bluesky and X, each within that platform's limits, with your comment-keyword CTA on the platforms where it belongs and never on X. Keyword, CTA, platforms, hashtags and limits come from a config file; a checker script fails the file on any miss. Use after an edit is finished, when asked to 'write the captions', 'caption this reel for every platform', or before scheduling.

jsath/claude-skills

Transcribe audio or video on your own machine with Whisper (mlx-whisper, faster-whisper or whisper.cpp) and get word-level timestamps as words.json, a plain .txt and an .srt. No API key, nothing uploaded. This is the transcription step the editing skills (edit-style, longform-edit, reel-captions) depend on. Use when asked to transcribe a take, get word timings, make an SRT, re-transcribe a final render for a caption sync check, or 'run whisper locally'.

jsath/claude-skills

Turns one published long-form video or podcast transcript into up to thirty pieces: 10 clips with new hooks and exact timestamps, 8 X posts, 4 LinkedIn posts, 3 carousels, 2 threads, a newsletter, a community post and a blog post, laid out on a two-week plan, all built only from what was said. In Claude Code it also cuts, reframes and captions the clips with ffmpeg. Use when someone wants to repurpose a long video, find clips, or write social posts from a transcript. Never posts or schedules.

jsath/claude-skills

Turn a raw talking-head take into a dynamically edited 1080x1920 reel: full-face, full-graphic and split layouts that switch every 2 to 5 seconds, real UI and official-logo panels, captions on every word timed by Whisper, voice plus synthesised SFX (no music bed) mastered to -14 LUFS, and hard QA gates (caption sync on the final render, A/V length, loudness, colour, framing, contact sheet, claims). Also covers writing the script so it does not read as AI. Use when asked to 'edit this reel', 'make it look edited', 'add captions / dynamic layout / graphics', or 'write a reel script'.

jsath/claude-skills

Edits a raw long-form YouTube recording (screen recording export, camera file, or either plus a separate mic) into a publish-ready video automatically, like Descript on autopilot: transcribes with word timestamps, removes retakes and keeps the last take, tightens dead space while keeping silent on-screen action (speeding up long waits), masters the voice to -14 LUFS / -1.5 dBTP with no music bed, re-transcribes the FINAL render for an every-word SRT (optional burned-in captions), drafts chapters, titles and a description, and fails loudly on QA gates (words, A/V sync, caption sync per chapter, caption coverage, loudness) plus contact sheets you look at. Use when someone says edit this long-form, clean up my recording, cut the retakes and dead space, process the long-form inbox, or descript this. Needs Claude Code with ffmpeg, whisper.cpp and Python 3.

jsath/claude-skills

Turns one podcast episode transcript into a week of written content: an Episode Prep agent that checks the transcript and speaker names, a Clip Spotter that picks the best short-clip moments with exact timestamps and hooks for an editor to cut, a Show Notes Writer that writes show notes and chapter markers, a Repurpose Writer that turns the big ideas into a newsletter, a LinkedIn post and Instagram captions, and an Episode Planner that spreads it all over the week. Works from a transcript the user supplies or exports from their transcription tool. It does not edit audio or video and does not cut clips. Use when a podcaster asks for show notes, chapters, clip timestamps, or posts from an episode, or says \"repurpose this episode\". Drafts only; never posts.

jsath/claude-skills

Turns one raw talking-head take into a finished 1080x1920 vertical reel in Claude Code with free local tools (ffmpeg, whisper.cpp, headless Playwright): transcribes, keeps the last take of repeated lines, cuts pauses, captions every word, adds real screenshots and official logos, and runs measured QA gates. Use when someone wants a raw phone take edited into a Reel, TikTok or Short, retakes and silences cut, word-by-word captions, or a finished video checked. In Claude.ai it only produces a cut list, shot plan and .srt from a pasted transcript.

jsath/claude-skills

Turns notes, voice-note transcripts and half ideas into Reel, TikTok and YouTube scripts in the creator's own voice: ranks an idea bank, writes ten hooks per idea, writes the script at the right length, rewrites anything that sounds like AI using transcripts of the creator's past videos, and fact-checks every claim with a source and date. Use when someone wants a video script, hooks, a ranked list of what to film, a voice pass, a claims check, or a record sheet to read from while filming.

jsath/claude-skills

Make a 1280x720 YouTube thumbnail (or a banner/cover) that reads at phone size: a text-free background plate (generated or from a real frame), a real cutout of the person, 1 to 3 words in tight colour blocks, an official logo, composed by a script that checks overlaps and frame edges and renders the 320px and 168px views you must look at. Use when asked for a thumbnail, cover, banner, 'make this clickable', or to fix a thumbnail that looks cluttered or small.

jsath/claude-skills

Runs five agents that keep a YouTube channel's titles and descriptions matched to what people search for now: a Channel Reader that pulls the user's own video list and stats with their YouTube Data API key, YouTube Analytics OAuth or a pasted YouTube Studio export, a Niche Watcher that finds what is working right now for similar-size channels from public search results the API returns or the user provides, a Title Writer that drafts titles, descriptions and chapters for new videos, a Back Catalogue agent that picks old videos worth a refresh and drafts new versions, and a Change Tracker that records every change the user makes and compares before and after on matched windows. Use when a creator asks for YouTube SEO, better titles or descriptions, what is working in their niche, a back catalogue refresh, or says \"seo run\". Never invents search volumes or stats and never changes a video; drafts only.

関連スキル