Home / All Skills / Content & Media Creation / ad-creative-video
Content & Media Creation · iart-ai/ad-video-skills

ad-creative-video

This skill should be used when the user asks to "make a video ad", "create an animated ad", "build a performance/UGC-style ad", "batch-produce ad creative variations", "generate ad variants for A/B testing", "swap headline/offer/CTA across many ad versions", or "export one ad in multiple aspect ratios for Meta/TikTok/Reels". Covers ad hook structures, hook→CTA message-match, data-driven variant generation (1 template × CSV = N ads), multi-aspect export, and platform specs.

L4 High-Privilege · Graded auth & full auditV1 Commit-PinnedExecute CommandNetwork AccessWrite FileDual-pass Audit
Author iart-aiGitHub iart-ai/ad-video-skills ↗Stars 8License MIT(仓库根 LICENSE:「MIT License」/「Copyright (c) 2026 iart.ai」;.claude-plugin/plugin.json 与 README「## License」同声明 MIT)Commit 0de0f2a1c1
Control levels describe skill capabilities and suggested control measures; they do not represent quality or safety certifications, nor do they dictate usability. Usage decisions rest entirely with users and administrators. Different agent hosts apply varying constraints; do not assume hosts provide automatic protection. Third-party skill copyrights belong to their original authors. Use at your own risk.

1How It Works & Mechanism

Batch mechanism: A data-driven template × CSV = N variants, rendering row by row with each row representing a complete message-matched ad.

skills/ad-creative-video/SKILL.md
The payoff: author the ad once, then let a CSV drive the matrix. Each row is one fully-formed, message-matched variant. Render once per row.
Implement batching via props rather than duplicating template files.

Deterministic rendering discipline: The template reads only one variant object, and all animation values must be pure functions of useCurrentFrame().

skills/ad-creative-video/SKILL.md
Make every animated value a pure function of `useCurrentFrame()` so each frame renders deterministically (no CSS transitions, no library timers — they desync the render).
CSS or library timers desynchronize with the frame renderer, causing jitter during export.

Experiment interpretability discipline: Change only one field at a time while locking all other layout, animation, color palette, and duration settings.

skills/ad-creative-video/SKILL.md
Hold layout, motion, colors, and timing constant; swap *only* the field under test (hook, or offer, or CTA). Mixing two changes makes the winner uninterpretable.
Embed experiment design into the skill's output discipline.

Hooks and CTAs must be message-matched: The promise made in the first 3 seconds must match the promise fulfilled by the button.

skills/ad-creative-video/SKILL.md
The promise made in the first 3 seconds must be the promise the button pays off.
In the sample CSV, every row's CTA points directly back to that row's hook.

Multi-aspect ratio export: Design the hook, product, and CTA entirely within a 1:1 center square, relying on recentering rather than letterboxing.

skills/ad-creative-video/SKILL.md
Design the hook text, product, and CTA inside the **1:1 center square** so they survive every crop.
The aspect ratio is prop-driven, and references resolve dimensions using calculateMetadata.

Platform safe zones are strict specs: The bottom third of a 9:16 layout is occupied by platform UI, requiring a reserved bottomSafe area.

skills/ad-creative-video/references/platform-specs.md
The 9:16 bottom third is the single most violated zone — captions, the CTA button, and the handle stack there.
Reserve a keep-clear band in layout constants instead of eyeballing.

Bad data must fail loud: The parser accumulates errors and exits with code 1, preventing any defective ads from being produced.

skills/ad-creative-video/references/batch-ad-pipeline.md
error(s) — no broken ads written.
Missing fields, duplicate IDs, and invalid hex colors are all intercepted.

Verification loop: Render cheap PNG stills first, then validate using shipped props (real data rows) instead of defaultProps.

skills/ad-creative-video/SKILL.md
Cheap PNGs first, full encode only once they're clean. Render with the **shipped** props (the real row), not just `defaultProps`.
Verify one representative variant per aspect ratio before running multi-aspect batch exports.

2Core Capabilities

01Data-driven ad templates (1 template × CSV = N variants)
02Single-variable test matrix generator (enforces "change one variable at a time" as a code constraint)
03Multi-placement and multi-aspect specifications and safe zones (9:16 / 4:5 / 1:1 / 16:9)
04Hook taxonomy (5 hook template categories and their use cases)
05Single-object brand lock theme (ensures 40 variants change only the tested fields)
06calculateMetadata to output any aspect ratio from a single composition

3External Dependencies

KindDependency / Endpoint
packageremotion(帧驱动渲染框架)
clinpx remotion render / still
packagezod(输出契约要求的 props schema)
cliffmpeg / ffprobe(仓库共享 contact-sheet.sh、probe-mp4.sh)
networkiart.ai(reference 尾部推广链接,具 utm 参数;仅读者点击才请求)

4Recommended Governance & Evidence

Suggested Controls for Safe Operation
For Agent Runtime
Graded/per-use authorization, sandbox recommended
For Administrators
Approval workflow, rollback support, full audit
Evidence & Triggers (File Paths & Excerpts)
  • scripts/: Execute local scripts or commands: No bundled scripts inside the skill directory; SKILL.md instructs the agent to run `node csv-to-props.js variants.csv ./pr
  • 网络端点: Declare external network access: No business API calls or business endpoint requests during runtime; ad data and assets are strictly local.
  • 本地工作目录: File I/O and artifact outputs: Writes `props/<id>.json`, `out/<id>.mp4`, and `out/demo.gif` in the user project; contact-sheet.sh writes
Audit Notes: . The triggered classification rule is "Dependencies on third-party plugins, mirrors, or remote packages": The skill directory itself is pure Markdown (no scripts, no credential reads, no env reads), but its declared delivery path requires pulling and executing remote packages `remotion` (+ zod schema) and `@remotion/cli` from npm via `npx`. The sibling package `remotion-video` in the same repo and toolchain was classified as Orange under the same standard, and this aligns with it. **Explicitly non-applicable items**: No process.env / API key / token / cookie / keychain access (zero matches across repo token scans); no user assets sent to external generation services (rendering is entirely local); no TLS downgrade, no `--no-verify`, no sandbox disabling, and no anti-automation bypass. Trigger condition: Occurs only when actually rendering video (installing and executing the remote toolchain); if the team has already locked remotion into local node_modules for offline rendering, the attack surface shrinks to "executing the user's own project code locally".

5Second-Pass Verification

  • [ok] skill 目录内是否藏脚本或凭证读取 — 目录只有 README.md(0B)/SKILL.md/references/*.md;全仓 token 扫描 process.env|API_KEY|TOKEN|cookie|keychain|Bearer 零实质命中(唯一命中是 product-demo reference 的 `.cookie-banner{display:none!important}`,属 UI 清理样式,非凭证读取)。
  • [ok] SKILL.md 与 reference 的渲染命令是否自洽 — SKILL.md 走「扁平 props/ + --props-merge 传 aspect」,reference 走「props/<ar>/ 目录 + calculateMetadata 解析尺寸」;两条路线实现同一目标,非矛盾。
  • [discrepancy] CSV 解析器校验的真实行为 — `if (errors) return;` 用的是全局错误计数:首个坏行之后,后续原本合法的行也不会写盘(注释宣称的语义是「不产出坏广告」)。行为偏保守、不会产出错误广告,但会让使用者误以为只有 1 行坏。
  • [ok] hook 长度告警阈值与平台规格是否一致 — 解析器 `if (row.hook && row.hook.length > 60) console.warn(...)` 与 platform-specs 的 hook 在 9:16 ≤ ~60 chars 的规格对得上。
  • [discrepancy] `Packaged helper (scripts/)` 的路径可解析性 — SKILL.md 写 `scripts/contact-sheet.sh` / `scripts/probe-mp4.sh` 这类相对路径,但这些脚本位于**仓库根** scripts/,skill 目录内并无 scripts/(skill 位于 skills/ad-creative-video/);从 skill 目录直接执行会找不到文件。
  • [ok] 跨 skill 指名与边界声明 — SKILL.md 用结构描述而非 skill 名排除促销与证言类("Not for sale/discount countdown promos, and not for testimonial/review-driven ads"),不存在跨仓库依赖或指纹不明的外部 skill 调用。

6Verdict & Scenarios

  • Turns experiment interpretability into actionable constraints
  • Achieves batching capabilities via props rather than template duplication, sharing a single brand lock across 40 variants
  • Front-loads data integrity: missing fields, duplicate IDs, or invalid hex colors trigger an immediate exit 1
  • Treats platform specifications as actionable pixel-level safe zones rather than vague guidelines
  • Prioritizes cost-effective verification (PNG stills) and mandates testing against shipped props
  • Best for: Performance and growth teams running multi-placement, multi-variant video ad campaigns: teams requiring hook testing, A/B test design, and batch export of 9:16/4:5/1:1/16:9 from a single template, with existing Node/Remotion engineering capabilities.
    Not for: Users looking to edit just a single video (batching and experimental design are its core value); discount countdown promotions (use promo skills) or customer testimonials/reviews (use testimonial skills); environments lacking a Node toolchain.
    Install Agent-Ready
    ① Verified Mirror 2026-09-28
    Option A · Direct DownloadDownload ad-creative-video.tar.gz
    sha256: 6cc9db5805b68bad…
    Option B · Copy Guide for Agent
    install.json
    Agents automatically download and verify mirrors from this JSON guide.
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit 0de0f2a1c1.