Security warning — review recommended

ClawHub Security found sensitive or high-impact capabilities. Review the scan results before using.

Skill Tiktok Video Pipeline

End-to-end TikTok ad video pipeline. Product script → Veo base video → animated caption overlay → audio mix → final MP4. One command, full automation.

Audits

Warn

Install

openclaw skills install skill-tiktok-video-pipeline

skill-tiktok-video-pipeline v2

Full end-to-end pipeline for TikTok product ads. Takes a product_id + script_text and outputs a publish-ready vertical short-form video with captions, optional logo watermark, and background music.

Architecture

script_text + product_id
       │
       ▼
Step 1: Veo 3 base video generation (9:16, ~8s)
       │
       ▼
Step 2: Caption overlay + logo watermark
        └── tiktok_overlay_engine_v3.py (ffmpeg drawtext)
       │
       ▼
Step 3: Background audio mix (20% volume, ffmpeg amix)
       │
       ▼
output/tiktok/<product_id>_<lang>_final.mp4

Requirements

  • GEMINI_API_KEY env var (for Veo generation)
  • ffmpeg on PATH
  • uv on PATH (for Python scripts)
  • veo3-video-gen skill installed at skills/veo3-video-gen/

Usage

node scripts/generate.js \
  --product-id rain_cloud \
  --script-text "Stop dry air!|Ultrasonic mist|Whisper-quiet|Get yours today" \
  --lang EN

With logo and custom audio

node scripts/generate.js \
  --product-id hydro_bottle \
  --script-text "Hydrogen water|Boosts energy|Pure & clean|Shop now" \
  --lang EN \
  --logo /path/to/brand_logo.png \
  --audio /path/to/bgm.mp3

Arabic (AR) captions

node scripts/generate.js \
  --product-id mini_cam \
  --script-text "صوّر كل لحظة|دقة عالية|خفيف وصغير|اطلب الآن" \
  --lang AR

Dry-run (no API calls, generates dummy video for testing overlay)

node scripts/generate.js \
  --product-id test \
  --script-text "Line 1|Line 2|Line 3" \
  --dry-run

Inputs

ArgumentRequiredDefaultDescription
--product-idProduct identifier (used in output filename)
--script-textCaption lines separated by |
--langENLanguage: EN or AR
--logononePath to logo PNG for watermark (top-right)
--audioassets/bgm_default.mp3Background music path
--veo-modelveo-3.1-generate-previewVeo model to use
--promptautoCustom Veo generation prompt
--segments1Number of Veo segments to generate & stitch
--dry-runfalseSkip Veo API call; use dummy black video

Outputs

FileDescription
output/tiktok/<product_id>_<lang>_final.mp4Final publish-ready TikTok video

Scripts

ScriptDescription
scripts/generate.jsMain Node.js orchestrator
scripts/tiktok_overlay_engine_v3.pyPython/ffmpeg caption overlay engine

Caption Format

Captions are split by | and timed evenly across the video duration.

Example: "Hook line!|Feature 1|Feature 2|CTA here" → 4 pills, each shown for ~2s on an 8s video.

Pill style: dark semi-transparent box, white text, centered at 75% height.

Default Audio

Place a royalty-free BGM file at assets/bgm_default.mp3 in this skill folder to auto-mix audio in all runs. If no audio is found, the video is output without BGM.

Pipeline Steps Detail

Step 1  Veo 3 generates a 9:16 base MP4           ~60–120s
Step 2  Python overlays timed caption pills         ~5s
Step 3  ffmpeg mixes BGM at 20% volume              ~5s
─────────────────────────────────────────────────────────
Output  Final branded MP4 ready to post

pipeline.py (v2.0.0 — Python orchestrator)

Direct Python pipeline wired to overlay engine via subprocess.

uv run scripts/pipeline.py \
  --product rain_cloud \
  --image product.jpg \
  --output final.mp4 \
  --audio /path/to/music.mp3 \
  --slowmo

New flags (v2.0.0)

FlagDefaultDescription
--audio$DEFAULT_AUDIO env or bundled Hyperfun.mp3Audio file passed to overlay step
--slowmofalseApply 0.83x speed → fills ~12s. Overrides --extend-to auto-stretch

Environment Variables

VarDefaultDescription
DEFAULT_AUDIOworkspace root audio_Hyperfun.mp3Default audio if --audio not set