Skill Tiktok Ads Video

v2.1.0

Generate TikTok-style short-form ad videos with animated pill captions. Takes a base MP4 (Veo/Runway/Kling), overlays animated captions with fade in/out, mix...

0· 367·1 current·1 all-time
byZero2Ai@zero2ai-hub
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description match the delivered artifact: a Python script that overlays animated pill captions on an MP4. Declared required binary 'uv' matches the SKILL.md usage (uv run ...). The script lists expected Python deps (moviepy, pillow, numpy) which are appropriate for video/image processing.
Instruction Scope
SKILL.md instructs running the included script locally with uv and installing the necessary Python libs; it references only local video/audio files and optional font paths. The instructions do not direct the agent to read unrelated system state, contact external endpoints, or exfiltrate data. The script reads font files from standard locations (~/.local/share/fonts, /usr/share/fonts) which is expected for font fallback.
Install Mechanism
No install spec is provided (instruction-only plus an included script). The usage examples rely on 'uv --with moviepy --with pillow' which will cause Python packages to be installed at runtime (typically from PyPI). That is expected but carries the usual supply-chain risk of installing third-party packages; the skill itself does not download arbitrary binaries or point to unknown URLs.
Credentials
The skill requests no environment variables, no credentials, and no config paths. The code accesses local font files and user-supplied video files only, which is proportionate to its purpose.
Persistence & Privilege
always is false and the skill does not request persistent system-wide changes. It does not modify other skills or agent-wide config. Autonomous invocation is allowed (platform default) but not combined with other red flags.
Assessment
This skill appears to do what it claims: overlay captions on local videos. Before installing or running it: 1) Be prepared to let 'uv' install moviepy/pillow/numpy (PyPI packages)—run in a virtualenv or sandbox if you want to limit supply-chain risk. 2) Review the rest of scripts/overlay.py (truncated in the manifest) to confirm there are no hidden network calls or subprocess executions. 3) Provide only non-sensitive videos to the tool and be aware it will read system font paths for rendering. If you need stronger guarantees, run it in an isolated environment or inspect the full file contents and dependency versions first.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

Binsuv
latestvk97as00y62ef7z5bvf8f6bxg5s825d93
367downloads
0stars
3versions
Updated 1mo ago
v2.1.0
MIT-0

skill-tiktok-ads-video v2.0.0

Animated pill-style caption overlays for short-form video. No Premiere, no CapCut — pure Python. v2 ships with built-in product presets — no more manual captions JSON.

Usage (v2 — product presets)

uv run --with moviepy --with pillow scripts/overlay.py \
  --video base.mp4 \
  --output final.mp4 \
  --product rain_cloud \
  --style subtitle_talk

Products

  • rain_cloud — Rain Cloud Humidifier
  • hydro_bottle — Hydrogen Water Bottle
  • mini_cam — Mini Clip Camera

Styles

  • phrase_slam — Bold full-screen phrase drops
  • subtitle_talk — Conversational subtitle-style captions
  • big_center — Large centered text with price bar at top. Best for bold product reveals.
  • random — Randomly picks a style

Optional audio

  --audio music.mp3 \
  --audio-start 8 \
  --audio-vol 0.5

No --audio keeps the original video audio.

Custom fonts

--font-black /path/to/Montserrat-Black.ttf \
--font-bold  /path/to/Montserrat-Bold.ttf

Falls back to Montserrat from ~/.local/share/fonts/ if not specified.

Legacy usage (v1 — manual captions JSON)

Still supported for backward compatibility:

uv run --with moviepy --with pillow scripts/overlay.py \
  --video base.mp4 \
  --output final.mp4 \
  --captions scripts/example_captions.json

PIL textbbox fix

PIL's textbbox((0,0), text, font) returns (x0, y0, x1, y1) where y0 is a non-zero offset (typically 7–15px depending on font size). Drawing text at (x, y) without compensating for this offset causes text to appear below the pill's visual center.

Fix implemented in pill():

bb    = draw.textbbox((0, 0), text, font=font)
x_off, y_off = bb[0], bb[1]
vis_w = bb[2] - bb[0]   # actual visual width
vis_h = bb[3] - bb[1]   # actual visual height

# Compensate offsets when drawing text
tx = cx - vis_w // 2 - x_off
ty = y - y_off
draw.text((tx, ty), text, font=font, fill=fg)

Emoji note

NotoColorEmoji.ttf fails with PIL at arbitrary sizes (bitmap font with limited supported sizes). Use text alternatives ("Free delivery" instead of "Free delivery 🚚") for reliable rendering.

Comments

Loading comments...