agentleFS
puntorigenpuntorigen/avatar-skills/viral-video-script/SKILL.md

viral-video-script

Skill3 starsChanged 4 months agoMITView on GitHub

Write short-form video scripts / dialogue that follow Tuan Le's "3 billion views" viral formula — the six psychological principles (familiarity / format-steal, curiosity-gap hook, identity over product via the Means-End Chain, the credential / authority shortcut, built-in shareability, and the Hook→Problem→Story→Payoff story skeleton with fast cuts + captions). Produces a beat sheet (JSON), a shooting script (Markdown) and a clean narration track (txt) ready to feed voice-clone / avatar-reel-composer. Use when the user wants to write a script, dialogue, hook, or voice-over for a reel / short / TikTok, make a brand or product go viral, repurpose a boring product into engaging content, or mentions "guion", "guión", "script para un reel", "diálogo", "hook viral", "voz en off", or the viral / psychology content formula.

The file

We split this skill into the rules it gives an agent

4 rules. About 0 are common, 4 are distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈4

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Write the words for a short-form video (reel / TikTok / Short) so the human brain can't scroll past it.

    line 8
  2. Distinctive:

    Every script follows: Hook → Problem → Story → Payoff.

    line 55
  3. Distinctive:

    If a credential or stealable format is missing, propose options rather than skipping the principle.

    line 76
  4. Distinctive:

    Keep sentences short and spoken (this is read aloud / lip-synced).

    line 129

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Viral Video Script

Write the words for a short-form video (reel / TikTok / Short) so the human brain can't scroll past it. The formula is distilled from Tuan Le's talk "What Getting 3 Billion Views Taught Me About Human Psychology" — six psychological principles plus a story skeleton. It works for "boring" products (instant ramen, SaaS, phone plans) precisely because it sells how brains work, not the product.

The deliverable is a script, not a video. Its outputs drop straight into this repo's pipeline: the clean narration track feeds voice-clone / avatar-reel-composer.

The formula (six principles)

Apply ALL six. They are not a menu.

  1. Familiarity beats originality (mere-exposure effect). Don't invent a format — steal a proven one (reaction, challenge, "walk up to a stranger", office tour, "how much do you pay for rent", "hey chef, make me something"). The brain watches what it already recognizes and has liked before. Originality reads as confusion, and confusion is the fastest path to a scroll.
  2. The curiosity gap hook. The first ~2 seconds open a gap between what the viewer knows and what they want to know — an itch they can't leave unscratched. Never lead with the product; the instant a brain tags content as an ad, it scrolls. Trigger curiosity, disbelief, or identity recognition instead. The product appears naturally once they're already watching.
  3. Sell identity, not the product (Means-End Chain). Every product has three layers: (1) attributes = what it is, (2) functional consequences = what it does, (3) psychological value = what it means to the viewer's identity/emotions. Most brands talk layer 1. Talk layer 3. ("Supplement" → healthier body → energy & mood → "I feel in control of my body and my life.") When you speak to identity, the viewer feels understood, not sold to — and the brain stops flagging the ad.
  4. The credential shortcut (authority bias). The brain takes shortcuts; the biggest is authority. Put a credential in the first ~2 seconds ("Thai chef", "Harvard student", "engineer who sold his company", a real kitchen + chef's outfit). It buys instant trust before the viewer evaluates anything.
  5. Build in shareability (social currency). People don't share what they like — they share what makes them look good (smart, funny, in-the-know) to their friends. You are the wingman: make the sharer look like they have great taste. The premise must be explainable in one sentence; if they can't describe it fast, they won't share it. Drivers that spread: humor, surprise, awe. (Sadness and anger get views but don't spread the same way.)
  6. The story skeleton (narrative transportation). Inside a story, critical thinking slows and emotion takes over — the best state for the brand to appear. Every script follows: Hook → Problem → Story → Payoff. Editing rules: cut any frame that isn't delivering new info, keep clips a few seconds each (every cut resets the brain's attention clock), always burn in captions (dual audio+visual processing boosts retention), zero dead space.

North star: the product is almost irrelevant. What matters is whether you understand the person watching — what catches their attention and what makes them share. Put people first.

Inputs to gather (ask only what's missing)

InputNeeded forExample
Product / brand / topicthe subject"Buldak instant ramen"
Audienceidentity layer (#3), tone"spice-loving Gen Z snackers"
Platformpacing / lengthtiktok | reels | shorts
Languagethe spoken copyes | en (default: match the user)
Target lengthbeat budget~30s (default 25–40s)
Credential availablethe authority hook (#4)"Korean street-food chef"
A format to steal (optional)#1 — else propose 2–3"spicy-challenge reaction"

If a credential or stealable format is missing, propose options rather than skipping the principle.

Workflow

- [ ] 1. Gather inputs (above). Propose a format-to-steal + credential if absent.
- [ ] 2. Scaffold the beat sheet JSON.
- [ ] 3. Fill every field, writing the spoken copy beat-by-beat in the formula's voice.
- [ ] 4. Validate against the formula. Fix every FAIL, weigh each WARN.
- [ ] 5. Render the shooting script (.md) + narration track (.txt).
- [ ] 6. Hand off (read aloud / send to voice-clone / avatar-reel-composer).

Step 2 — scaffold (writes <out>/<slug>.script.json pre-structured with the formula):

python3 .cursor/skills/viral-video-script/scripts/scaffold.py buldak-spicy \
  --product "Buldak instant ramen" --language en --platform tiktok --seconds 32 \
  --out scripts_out/

Step 3 — write. Edit the JSON. The hard rules the validator enforces:

  • format_steal, credential, identity_value, shareable_premise are all non-empty.
  • beats contains hook → problem → story → payoff in that order.
  • hook.spoken is ≤ ~14 words (≈2s) and must not contain the product name.
  • shareable_premise is ONE sentence, ≤ ~20 words.
  • share_trigger ∈ {humor, surprise, awe}.
  • captions: true, cut_every_seconds ≤ 4, total spoken copy fits target_seconds.

Step 4 — validate (re-run until it passes; treat WARN as review notes):

python3 .cursor/skills/viral-video-script/scripts/check_script.py scripts_out/buldak-spicy.script.json

Step 5 — render (writes <slug>.script.md + <slug>.narration.txt next to the JSON):

python3 .cursor/skills/viral-video-script/scripts/render_script.py scripts_out/buldak-spicy.script.json

Writing the spoken copy (per beat)

  • Hook (≈2s): the curiosity gap + the credential, NOT the product. Use the stolen format's recognizable opener. One short line.
  • Problem (≈4–6s): the tension the viewer already feels — framed at the identity layer, not the product layer.
  • Story (≈15–25s): the recognizable format plays out; the product enters naturally as part of the story, never as a pitch.
  • Payoff (≈5–8s): resolve the gap + the identity reward, then the lightest possible product/CTA. End on the feeling, not the feature.

Keep sentences short and spoken (this is read aloud / lip-synced). Mark on-screen action and caption text per beat; assume a cut every 2–4s.

Output files

<slug>.script.json   # the beat sheet (source of truth; edit this)
<slug>.script.md     # human shooting script: beats, timing, VO, on-screen, captions, notes
<slug>.narration.txt # clean spoken VO only — feed to voice-clone / narrate.py

Handoff into this repo's pipeline

The narration track is what the avatar speaks:

# clone/say in an avatar's voice, or compose a full reel from the script
python3 .cursor/skills/voice-clone/scripts/...           # TTS the narration.txt
python3 .cursor/skills/avatar-reel-composer/scripts/compose_reel.py <storyboard.json> --finish

For B-roll-only or found-footage shots referenced in the script, see broll-generator and broll-finder.

Anti-patterns

  1. Leading with the product in the hook (instant ad-flag → scroll). #2.
  2. Inventing a format instead of stealing a proven one. #1.
  3. Selling features (layer 1) instead of identity (layer 3). #3.
  4. A premise you can't say in one sentence → unshareable. #5.
  5. Relying on sadness/anger for reach — gets views, doesn't spread. #5.
  6. Long takes, no captions, dead space → the brain tunes out. #6.

Additional resources

  • The psychology behind each principle + the original case studies: REFERENCE.md
  • Full worked example scripts (EN + ES): examples.md

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.