skills/terminalskills/skills/tiktok-marketing

tiktok-marketing

SKILL.md

TikTok Marketing

Overview

This skill helps AI agents create high-performing TikTok content and integrate with TikTok's APIs. It covers short-form video strategy, hook techniques, trending sounds, Content Posting API, analytics, and growth strategies for TikTok's For You Page algorithm.

Instructions

Platform Rules & Algorithm

TikTok's For You Page (FYP) algorithm:

  • Completion rate — THE most important metric. Videos watched to the end (or replayed) get massive distribution
  • Watch time — total seconds watched matters for longer videos
  • Shares — strongest engagement signal (sent via DM or external)
  • Comments — especially lengthy or emoji-heavy comments
  • Follows from video — signals high-quality creator
  • Content-based distribution — TikTok shows content to ANYONE interested, regardless of follower count
  • Batch testing — new videos shown to ~200-500 people first, performance determines next batch

What kills reach:

  • TikTok watermark on reposted content
  • Violation of community guidelines (even borderline)
  • Deleting and reposting (algorithm tracks this)
  • Very long videos without retention hooks (drop-off = death)
  • Static images without motion or text animation
  • Mentioning other platform names ("link in my Instagram bio")

Video Content Guidelines

Video Specs

  • Aspect ratio: 9:16 (1080x1920px) — always vertical
  • Duration: 15-60 seconds optimal. Under 30s has highest completion rates
  • Format: MP4 or MOV, H.264 codec
  • Max file size: 287.6 MB (mobile), 500 MB (web)
  • Max duration: 10 minutes (but short = better for growth)
  • Frame rate: 30fps minimum, 60fps for smooth motion

Hook Framework (First 1-3 seconds)

The first second determines everything. The viewer decides to scroll or stay.

Visual hooks:

  • Start with movement or action mid-frame (not a static title card)
  • Face close-up with expression (curiosity, shock, excitement)
  • Before/after preview in first second
  • Text overlay appearing with motion

Verbal hooks:

  • "Stop scrolling if you [audience identifier]"
  • "I can't believe this actually works"
  • "Here's what nobody tells you about [topic]"
  • "The secret to [desired outcome] is..."
  • "POV: you just discovered [interesting thing]"
  • "Watch till the end — the last one is insane"

Retention hooks (throughout video):

  • "But here's where it gets interesting..."
  • "Wait for it..."
  • Text: "Part 3 will blow your mind" (encourages follow for series)
  • Pattern interrupts every 3-5 seconds (zoom, cut, new angle)

Content Types That Work

Educational / How-To (highest save rate)

  • 3-5 step tutorials shown visually
  • "Things I wish I knew about [topic]"
  • Quick tips with text overlays
  • Software walkthroughs with screen recording

Trending Audio + Niche

  • Take trending sound and apply to your industry
  • Check "Trending" in TikTok's Creative Center
  • Original audio can also trend — speak clearly, memorable phrases

Storytelling

  • Personal stories with emotional arc
  • "Storytime: how I [unexpected outcome]"
  • Green screen with photos/screenshots as proof

Day in the Life / Behind the Scenes

  • Authentic > polished
  • Show real process, struggles, wins
  • Time-lapse of work with voiceover

Series Content

  • Part 1, Part 2, Part 3 format
  • Drives follows ("follow for part 2")
  • Pin part 1 to profile

Caption & Hashtag Strategy

[Caption: 1-2 sentences max. Punchy, adds context or CTA]

[Hashtags: 3-5 targeted, mix of niche and broad]

Caption rules:

  • Short — TikTok captions are secondary to video
  • Add context the video doesn't provide
  • CTA: "Save this for later 📌" or "Send to a friend who needs this"
  • Max 2,200 characters but keep it under 150

Hashtag rules:

  • 3-5 hashtags (not 30 — this isn't Instagram 2019)
  • 1-2 niche hashtags (your specific topic)
  • 1-2 medium hashtags (broader category)
  • 1 broad hashtag (#fyp is useless now — use topical broad tags)
  • TikTok SEO: use keywords naturally in caption (algorithm reads text)

TikTok Content Posting API

Authentication

// TikTok uses OAuth 2.0
const TIKTOK_AUTH_URL = 'https://www.tiktok.com/v2/auth/authorize/';

// Step 1: Redirect to authorization
const authUrl = new URL(TIKTOK_AUTH_URL);
authUrl.searchParams.set('client_key', process.env.TIKTOK_CLIENT_KEY);
authUrl.searchParams.set('response_type', 'code');
authUrl.searchParams.set('scope', 'user.info.basic,video.publish,video.upload,video.list');
authUrl.searchParams.set('redirect_uri', process.env.TIKTOK_REDIRECT_URI);
authUrl.searchParams.set('state', 'random-state');

// Step 2: Exchange code for token
const tokenRes = await fetch('https://open.tiktokapis.com/v2/oauth/token/', {
  method: 'POST',
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
  body: new URLSearchParams({
    client_key: process.env.TIKTOK_CLIENT_KEY,
    client_secret: process.env.TIKTOK_CLIENT_SECRET,
    code: authorizationCode,
    grant_type: 'authorization_code',
    redirect_uri: process.env.TIKTOK_REDIRECT_URI,
  }),
});
const { access_token, refresh_token, expires_in } = await tokenRes.json();

Publish Video

// Step 1: Initialize upload
const initRes = await fetch('https://open.tiktokapis.com/v2/post/publish/video/init/', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${access_token}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    post_info: {
      title: 'Video title',
      privacy_level: 'PUBLIC_TO_EVERYONE', // or MUTUAL_FOLLOW_FRIENDS, SELF_ONLY
      disable_duet: false,
      disable_comment: false,
      disable_stitch: false,
      video_cover_timestamp_ms: 1000, // Cover frame at 1 second
    },
    source_info: {
      source: 'FILE_UPLOAD',
      video_size: videoFileSize, // in bytes
      chunk_size: videoFileSize, // single chunk for files < 64MB
      total_chunk_count: 1,
    },
  }),
});
const { data: { publish_id, upload_url } } = await initRes.json();

// Step 2: Upload video
await fetch(upload_url, {
  method: 'PUT',
  headers: {
    'Content-Range': `bytes 0-${videoFileSize - 1}/${videoFileSize}`,
    'Content-Type': 'video/mp4',
  },
  body: videoBuffer,
});

// Step 3: Check publish status
const statusRes = await fetch('https://open.tiktokapis.com/v2/post/publish/status/fetch/', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${access_token}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ publish_id }),
});
// Status: PROCESSING_UPLOAD, PROCESSING_DOWNLOAD, PUBLISH_COMPLETE, FAILED

Query Videos & Analytics

// List user's videos
const videosRes = await fetch('https://open.tiktokapis.com/v2/video/list/?fields=id,title,create_time,share_url,duration,cover_image_url,like_count,comment_count,share_count,view_count', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${access_token}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ max_count: 20 }),
});

// Get user info
const userRes = await fetch('https://open.tiktokapis.com/v2/user/info/?fields=display_name,avatar_url,follower_count,following_count,likes_count,video_count', {
  headers: { Authorization: `Bearer ${access_token}` },
});

Growth Strategy

Posting schedule: 1-3 videos/day (consistency > quality for growth phase)

Content mix:

  • 40% trending audio + your niche (reach new audiences)
  • 30% educational/tutorial (saves, shares, follows)
  • 20% storytelling/behind-the-scenes (builds connection)
  • 10% series/part content (drives follows for "next part")

Best posting times: 7-9 AM, 12-1 PM, 7-10 PM (target timezone). Test and check your Analytics for YOUR audience's active times.

Growth tactics:

  • Post 1-3x daily during growth phase (algorithm rewards consistency)
  • Reply to comments with video replies (creates new content + engagement)
  • Stitch/Duet trending creators in your niche (rides their distribution)
  • Pin your 3 best-performing videos to profile
  • Create a series with consistent format (viewers follow for next part)
  • Cross-post to Instagram Reels and YouTube Shorts (remove TikTok watermark first using SnapTik or manual re-export)

TikTok SEO (2025-2026):

  • TikTok is now a search engine — people search it like Google
  • Use keywords in: captions, text overlays, voiceover/speech
  • Answer common search queries in your niche
  • Check TikTok search bar suggestions for content ideas

Examples

Example 1: Create a TikTok content plan for a coffee roastery

User prompt: "I run a specialty coffee roastery called Northside Beans in Portland. Create a 1-week TikTok content plan to grow my following from 400 to 2,000."

The agent will create a 7-day content calendar with specific video concepts tailored to a coffee roastery. Day 1: "POV: you just discovered single-origin Ethiopian Yirgacheffe" (trending audio + close-up pour, 15s). Day 2: "3 mistakes you're making with your morning coffee" (educational, text overlays, 30s). Day 3: "Watch us roast a batch from green to brown" (time-lapse behind-the-scenes, 20s). Day 4-7 continue with a mix of series content ("Coffee basics Part 1"), storytime ("How I quit my tech job to roast coffee"), and duet/stitch ideas. Each entry includes the hook line, suggested duration, content type, 3-5 hashtags like #SpecialtyCoffee #CoffeeTok #PortlandFood, and optimal posting time (7 AM and 7 PM PST).

Example 2: Write a TikTok API integration to auto-publish videos

User prompt: "Build a Node.js script that uploads a pre-recorded MP4 to TikTok using their Content Posting API. The video file is at ./videos/latte-art-tutorial.mp4."

The agent will create a Node.js script that authenticates via TikTok OAuth 2.0 using environment variables TIKTOK_CLIENT_KEY and TIKTOK_CLIENT_SECRET, reads the video file size, initializes the upload via POST /v2/post/publish/video/init/ with the title "Latte Art Tutorial — 3 Steps to a Perfect Rosetta", sets privacy_level to PUBLIC_TO_EVERYONE, uploads the binary to the returned upload_url with the correct Content-Range header, then polls /v2/post/publish/status/fetch/ every 5 seconds until the status is PUBLISH_COMPLETE or FAILED, logging the result.

Guidelines

  • First 1 second = make or break. Start with hook, not intro/logo
  • Under 30 seconds has highest completion rate — tight editing, no filler
  • Film vertical ALWAYS — horizontal video = instant scroll
  • Use trending sounds even if video is primarily text/voiceover (algorithmic boost)
  • Post consistently at same times — your audience learns your schedule
  • Engage with comments in first hour — drives video into next distribution batch
  • Video replies to comments count as new videos — free content ideas
  • Never delete underperforming videos — they can resurface weeks later
  • TikTok watermark on other platforms = suppressed. Always re-export clean
  • Film in good lighting and clear audio — production value matters more than ever
Weekly Installs
1
GitHub Stars
15
First Seen
3 days ago
Installed on
amp1
cline1
augment1
opencode1
cursor1
kimi-cli1