affitor/tiktok-script-writer
> Write short-form video scripts for TikTok, Instagram Reels, and YouTube Shorts that promote affiliate products with strong hooks, demos, and CTAs. Use this skill when the user asks about TikTok scripts, Reels scripts, Shorts scripts, short-form video for affiliate marketing, or says "write a TikTok for X", "script a Reel promoting X", "YouTube Shorts script affiliate", "60-second video script", "hook for TikTok affiliate", "write a video promoting X", "TikTok script that converts", "short video script for product review", "viral TikTok affiliate script", "how to promote X on TikTok".
npx skills add https://github.com/Affitor/affiliate-skills --skill tiktok-script-writer
Write punchy 30-60 second video scripts for TikTok, Instagram Reels, and YouTube
Shorts that stop the scroll, demo the product naturally, and drive affiliate link
clicks. Every script is structured for vertical video: hook → problem → demo →
result → CTA.
This skill belongs to Stage S2: Content
{
product: {
name: string # (required) "HeyGen"
description: string # (optional) What it does — will be researched if missing
url: string # (optional) Affiliate link or product URL
reward_value: string # (optional) Commission info — never shown in script
}
duration: number # (optional, default: 45) Target duration in seconds: 15 | 30 | 45 | 60
platform: string # (optional, default: "tiktok") "tiktok" | "reels" | "shorts" | "all"
hook_style: string # (optional, default: auto) "question" | "shock" | "relatable" | "bold_claim" | "demo_first"
creator_persona: string # (optional) "beginner marketer" | "tech reviewer" | "productivity nerd"
has_product_access: boolean # (optional, default: true) Can creator do live demo?
personal_experience: string # (optional) Real experience to weave in
audience: string # (optional) "freelancers" | "small business owners" | "students"
}
If product details are sparse, use web_search "[product name] what it does tutorial" to find:
Concrete specifics > vague claims. "Creates a 2-minute video in 30 seconds" beats
"saves time on video creation".
Before selecting hook style, see what's actually winning in this niche on TikTok:
If trending-content-scout ran earlier:
top_contentengagement_benchmark to set a target engagement scorecontent-angle-ranker provided a recommended_angle → use itIf no scout data (quick mode):
web_search "[product name] tiktok" → find top TikTok videosweb_search "best [niche] tiktok viral" → find format patternsweb_search "[product name] tiktok review" → see existing contentApply findings to script:
engagement_benchmark.median_views is known → aim to beat it with better hook + formatThis step takes <2 minutes but can 3x the script's potential by building on
proven patterns instead of guessing.
Short-form video is won or lost in seconds 1-3. Pick the hook based on the product's
strongest angle:
| Hook Style | Template | Best For |
|------------|----------|----------|
| Question | "What if you could [result] without [pain]?" | Products that remove a hard task |
| Shock/Stat | "I replaced [expensive thing] with a $[price]/mo tool" | Cost/efficiency wins |
| Relatable | "[Frustrating situation]? Same. Then I found this." | Niche audience pain |
| Bold Claim | "This [tool] is the reason I [impressive result]" | Strong ROI proof |
| Demo First | [Open with screen recording of the coolest feature immediately] | Visual/AI tools |
| Story Opener | "6 months ago I was [before state]. Now [after state]. Here's why." | Transformation |
For AI tools and visual products → Demo First almost always wins on TikTok.
For SaaS productivity tools → Relatable or Shock/Stat hooks work well.
Every script follows this structure (adapt timing to duration):
For 45-second scripts:
For 30-second scripts:
For 60-second scripts:
Format scripts with:
Writing rules:
Per shared/references/ftc-compliance.md for short-form video:
Include brief notes for the creator:
Before presenting output, verify:
If any check fails, fix the output before delivering. Do not flag the checklist to the user — just ensure the output passes.
{
output_schema_version: "1.0.0" # Semver — bump major on breaking changes
scripts: [
{
platform: string # "tiktok" | "reels" | "shorts"
duration_seconds: number # 45
hook_style: string # "demo_first"
scenes: [
{
timecode: string # "0-3s"
visual: string
spoken: string
text_overlay: string
}
]
caption: string # Full TikTok caption
hashtags: string[] # Suggested hashtags
disclosure: string # How and when FTC disclosure appears
}
]
product_name: string
content_angle: string
hook_used: string
}
## TikTok Script: [Product Name] ([Duration]s)
**Hook Style:** [Style name]
**Platform:** [TikTok / Reels / Shorts]
**Target Audience:** [Who this is for]
---
### Script
| Time | Visual | Spoken | Text Overlay |
|------|--------|--------|-------------|
| 0-3s | [What's on screen] | "[Hook line]" | [On-screen text] |
| 3-8s | [Visual] | "[Spoken]" | [Overlay] |
| ... | ... | ... | ... |
---
### Caption
[Full caption text — optimized for TikTok SEO]
**Hashtags:** #[tag1] #[tag2] #[tag3] (5-8 tags max)
---
### Production Notes
- **Film:** [Camera vs screen recording breakdown]
- **Music:** [BPM and mood suggestion]
- **Best time to post:** [Platform-specific optimal time]
- **Disclosure:** #ad text overlay appears at [timecode] for [X] seconds
---
### Hook Alternatives
Want a different opening? Try:
- **[Hook Style 2]:** "[Alternative opening line]"
- **[Hook Style 3]:** "[Alternative opening line]"
recommended_program from context.
creator's face on screen reacting to the tool, narrating the discovery.
"My friend showed me this tool and I had to share it"
If 30s still feels crowded, suggest two separate videos (problem setup + solution).
with minor caption/hashtag adjustments.
Example 1:
User: "Write a 45-second TikTok script for HeyGen"
→ Research: HeyGen creates AI avatar videos, talking head from text
→ Hook: Demo first — open with a finished AI video playing
→ Script: [0-3s] Show output video → [3-8s] "Made this in 2 minutes, no camera" →
[8-30s] Screen record: paste script → avatar speaks → [30-38s] "Used this for
my client, saved 4 hours" → [38-44s] "Link in bio, 30-day free trial" → [44-45s] "#ad overlay"
Example 2:
User: "TikTok script for Notion affiliate, targeting students"
→ Hook: Relatable — "POV: it's 2am before finals and your notes are chaos"
→ Demo: Notion AI organizing scattered notes into a study guide
→ CTA: "Free forever plan — link in bio"
→ Caption: "study with me + notion hacks" for algorithm reach
Example 3:
User: "I need 3 different hooks for a ConvertKit TikTok script"
→ Write hook-only variants: Question / Shock / Bold Claim
→ Full script for the strongest one, alternative openings for others
→ Note which hook style historically performs best for SaaS on TikTok
shared/references/ftc-compliance.md — disclosure rules for short-form videoshared/references/affiliate-glossary.md — reward_type and program terminologyshared/references/platform-rules.md — TikTok/Reels/Shorts format specsshared/references/flywheel-connections.md — master flywheel connection mapbio-link-deployer)After 5 videos, check: which hook style got the highest completion rate? Which video drove the most bio link clicks? Use that hook style for your next 5 videos.
> Next step — copy-paste this prompt:
> "Schedule my TikTok content for the next 30 days" → runs social-media-scheduler
social-media-scheduler (S5) — scripts ready to schedule for filming/postingcontent-pillar-atomizer (S2) — successful scripts become content to atomize furthertrending-content-scout (S1) — top TikTok content + engagement data + winning hookscontent-angle-ranker (S1) — recommended angle with format, hook, and parametersaffiliate-program-search (S1) — recommended_program product datapurple-cow-audit (S1) — remarkable angles for script hookscontent-pillar-atomizer (S2) — atomized TikTok scripts from pillar contentBefore delivering output, verify:
Any NO → rewrite before delivering.
When mode: "volume":
volume_output:
variants:
- id: string
content: string
angle: string
chain_metadata:
skill_slug: "tiktok-script-writer"
stage: "content"
timestamp: string
suggested_next:
- "social-media-scheduler"
- "content-pillar-atomizer"
Take affitor/tiktok-script-writer from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.