Communitygithub.com

linwanjiu/short-video-copy

把一句话选题写成短视频文案。默认只输出文案与发布文案,分镜表按需再给。按平台/品类/调性预设组合,带计时模型与标点规范。当用户说"写个短视频文案/口播稿/脚本"时使用。

short-video-copy 是什么?

short-video-copy is a Claude Code agent skill that 把一句话选题写成短视频文案。默认只输出文案与发布文案,分镜表按需再给。按平台/品类/调性预设组合,带计时模型与标点规范。当用户说"写个短视频文案/口播稿/脚本"时使用。.

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/linwanjiu/short-video-copy/tree/HEAD/skills/short-video-copy

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Short Video Copywriting

One-sentence topic → A set of scripts ready to shoot.

This skill is an engine + presets structure: the methodology is here, the styles are in presets/, and the current selection is in profile.md.


0. Read These Two Things First

  1. profile.md — current selection (platform / category / tone / duration / density / person / cta / banned)
  2. Go to the corresponding preset file and read only the section it selects, not the whole file
profile fieldGo read thisRead only this section
platformpresets/platforms.mdMatching section header (Douyin / Xiaohongshu / WeChat Video / Bilibili / Generic)
categorypresets/categories.mdMatching section header
tonepresets/tones.mdMatching section header
hookspresets/hooks.mdPick 1–2 types based on topic

Values in profile take precedence over everything in this file; whatever the user says on the spot takes precedence.


1. Default Workflow: Output First, Then Collect Parameters

When the user gives a one-sentence topic, do not start with a long list of questions. First use the current profile (if none, use: Generic / Clear and Direct / 30 seconds) to generate a complete draft so they can see something, then ask.

Step 1: Generate a Generic Draft

All four components: voiceover + storyboard + publish copy. Time calculated using presets/timing.md. Start with a note: "This is the generic version, not platform-specific" — otherwise the user might think this is the final version.

Step 2: Four Fixed Questions

Ask only these four, in order, each with options. Do not add extra questions.

1. Platform: Douyin / Xiaohongshu / WeChat Video / Bilibili / Stick with generic? — Determines pace, speech rate, CTA

2. Tone: Sharp / Friendly / Humorous / Reserved Professional / Keep it clear and direct? — Determines sentence length, verbs, distance from the audience

3. Structure: Three-part voiceover / Educational (conclusion first + mechanism) / Story (experience + takeaway) / Skit (conflict + twist)? — Determines paragraph order and proportions

4. Twist & Hooks: None / A counter-intuitive twist in the middle / A reversal at the end / Double hook (stop in the first 3 seconds + keep viewers at 8 seconds)? — Determines completion rate design

After asking, add: "Just reply with numbers like 1/2/3, or tell me in one sentence—I'll rewrite based on that."

Step 3: Rewrite

  • Only modify the affected paragraphs; keep parts the user approved.
  • Start with a line explaining what changed: Platform→Douyin, Tone→Sharp, Duration 30→15 seconds, added a counter-intuitive twist in the middle
  • After rewriting, recalculate the time; do not reuse the old timing.

Step 4: Should We Remember This?

If the user says "Always do this", "Remember", "Set as default" → Follow §5 to write profile.md and report back.

Exceptions

SituationHandling
User specifies platform/tone upfrontSkip the questionnaire, go straight to a targeted draft
User says "Show me the generic version"Only output the generic draft, no questions
User wants only hooks, not the full textOnly offer 5 candidate hooks and let them pick

1b. What's Missing in a One-Sentence Topic

MissingHow to handle
Target audienceInfer the most likely audience from the topic, state your assumption explicitly
Desired actionUse the profile's cta
LengthUse the profile's duration
PlatformUse the profile's platform; if none, use "Generic"

During the generic draft phase, only fill in the most critical assumption. Do not fire a barrage of questions. Save those for the fixed four questions in Step 2.


2. Assembly: How the Four Presets Stack

Order must not be changed; each layer solves a different problem:

platform  → Determines pace, speech rate, CTA (outer form)
category  → Determines paragraph order and proportions (skeleton)
tone      → Determines sentence length, verbs, distance (skin)
hooks     → Determines the first 3 seconds (door)

Conflict priority: platform > category > tone. For example, Xiaohongshu wants "slow," but product promotion wants "dense"; take a middle value and state the trade-off at the end.

Common Combinations (Recommended for Users)

GoalCombination
Douyin viral feelDouyin + Educational knowledge + Sharp + Counter-intuitive hook
Xiaohongshu product seedingXiaohongshu + Product promotion + Friendly + Pain point scene
WeChat Video trustWeChat Video + Personal brand + Reserved Professional + Story presence
Bilibili hardcoreBilibili + Educational knowledge + Reserved Professional + Specific numbers
Safest for beginnersGeneric + Voiceover + Clear and direct + Counter-intuitive

3. Output: Default is Only the Script

Don't pile on a ton of stuff right away. By default, only output two things: the script and the publish copy. Ask before giving the storyboard.

3.1 Script (Default Deliverable—the Only Mandatory Piece)

A timed voiceover script in three columns:

TimeWord CountLines
0.0–1.9s6The more you rest, the more tired you get.
  • Time calculated using presets/timing.md, not estimated by hand; directly run node scripts/timing.mjs --rate <speech_rate> "line 1" "line 2"
  • Punctuation and sentence structure strictly follow presets/punctuation.md: full-width punctuation, single sentence ≤ 15 characters, at most 2 commas per sentence
  • End time must be within 0.5 seconds of the target duration. If exceeded, cut words—do not rely on speaking faster.
  • When delivering, do not attach JSON or a storyboard unless the user asks for it.

3.2 Publish Copy (Default Deliverable)

Title (≤ 20 characters) + 3–5 hashtags + one comment section call-to-action sentence.

3.3 Must Ask After Delivery

After delivering the script, immediately ask:

Do you need a storyboard based on this script? (What visuals, on-screen text, and timing for each line?)

  • User says yes → Output 3.4
  • User says no or doesn't respond → Stop here
  • Do not proactively hand out content.json; do not ask "Do you want to produce the video?"

3.4 Storyboard (Only When User Explicitly Requests It)

#TimeVisualOn-Screen TextNotes
  • Time column must exactly copy the time from 3.1—do not allocate independently.
  • One line of dialogue = one shot; if a line is split into two, write 1a/1b, and their sum must equal the original line.
  • Merge shots shorter than 1.2 seconds; split shots longer than 6 seconds.
  • Visual column must describe something that can actually be filmed, not "atmospheric b-roll."

3.5 Effects Check (Only When User Explicitly Wants to Produce the Video)

Only when the user says "I want to produce it" or "Give me a draft":

cd <video-studio>
.\check-effects.ps1 -Human
ResultAction
Script doesn't existUser hasn't installed the video pipeline → skip, do not treat as an error
installed=trueContinue
installed=falseWarn first, then ask—don't generate silently

You haven't generated the effects asset library yet (9 files, about 196 MB). Do you want to generate it now? About 2.5 minutes.

Do not run generation unless the user agrees.

3.6 Things Explicitly Not Done

  • Do not output content.json / scenes: that's the video side's structure; the copywriting side doesn't need to carry it.
  • Do not proactively offer a storyboard; do not proactively suggest "Do you want to produce the video?"
  • Do not decide the platform and tone for the user—that's in profile.md.

4. Self-Check

  • First 3 seconds are a hook, not an introduction
  • Hook belongs to a clear category in hooks.md, not mixed
  • There's a sentence that can be screenshot and shared standalone
  • At least one specific number, and it's fulfilled in the body text
  • Each line ≤ 15 characters; read through at the given speech rate without exceeding time
  • Single tone throughout, no mid-text mood change
  • Structure matches the selected category's paragraph proportions
  • No absolute language (most, first, cure, one hundred percent)
  • No efficacy promises for medical, financial, or educational content
  • Any word in banned? If so, rewrite that line
  • All punctuation is full-width, no half-width ,.!?
  • Consistent quotation marks («» or “”), ellipsis is ……, em dash is ——
  • No long sentences with trailing commas; each sentence ≤ 15 characters
  • Consistent number formatting (15 seconds / 73%), spaces around English words

5. How to Handle Feedback

Change the presets, not the engine.

User saysChange this
Too long / Too shortduration
Too formal / Too aggressive / Too cheesytone
Doesn't sound like Xiaohongshu / sounds like Douyinplatform
Too information-dense / Too emptydensity
Wrong structurecategory
Bad openingChange hook category
Don't use this wordbanned

Temporary vs Permanent Changes (Important)

User saysWhat you doSave?
"Rewrite this version for Xiaohongshu"Just rewrite this one version with the new parameters❌ Don't write
"Always use Xiaohongshu" / "Remember" / "Set as default"Must use the editing tool to change profile.md✅ Write
"Too aggressive" / "Too cheesy"Judge temporary or long-term, ask or treat as long-term✅ Write

If you only say it and don't write it, it's not changed. Once the session ends, the context is gone, and next time it'll still be the old parameters.

When saving to disk, you must do three things:

  1. Change the corresponding line in profile.md
  2. Append a line to the "Change Log" section in profile.md: - YYYY-MM-DD Changed tone from X to Y (reason)
  3. Reply to the user: "Written to profile.md: tone: Sharp"

What to Do When a Preset Doesn't Have the Value

User wants platform: Zhihu, but presets/platforms.md only has four platforms:

  1. First, write using the closest match (Zhihu ≈ Bilibili long-form + Reserved Professional), state that you made an approximation
  2. Ask if they'd like to add it to presets/platforms.md
  3. If yes, add a section following the existing format—do not stuff it into SKILL.md

If the user adjusts the same dimension three times in a row, the preset itself is too coarse; only then consider modifying that section in presets/.


6. Deconstruction Mode (Optional)

When the user provides a reference video (link or transcript) instead of a topic, follow references/analysis.md: Output hook type, structural segmentation, style tags, viral reasons, and 3 rewrite directions.


7. Boundaries

  • Do not fabricate data. If no numbers are given, use verifiable vague quantities, or ask directly.
  • Medical, financial, and educational content: do not write specific efficacy promises.
  • Mark uncertain facts as "To be verified"—do not write them as conclusions.
  • Do not use absolute terms like "most," "first," "only" unless backed by a verifiable source.

相关技能