---
title: "Discussion on \"I built a Claude Code skill that makes video ads without a video model\" | Hashnode"
description: "Discussion on \"I built a Claude Code skill that makes video ads without a video model\". Short vertical video ads are the cheapest reach a small product can buy, and the most annoying thing to make. A 15 second Instagram Reel needs a script with a hook, a character who looks the same in e"
url: "https://hashnode.com/posts/i-built-a-claude-code-skill-that-makes-video-ads-without-a-video-model/6aec609640cddf686572416e"
---

[Feed](https://hashnode.com/feed) /

Discussion

# [I built a Claude Code skill that makes video ads without a video model](https://mahmadmanzoor.hashnode.dev/i-built-a-claude-code-skill-that-makes-video-ads-without-a-video-model?utm_source=hashnode&utm_medium=feed)

Short vertical video ads are the cheapest reach a small product can buy, and the most annoying thing to make. A 15 second Instagram Reel needs a script with a hook, a character who looks the same in e

6d ago · 27 min read · mahmadmanzoor.hashnode.dev  
Read the article

-   [#ai](https://hashnode.com/tag/ai)
-   [#claude-code](https://hashnode.com/tag/claude-code)
-   [#ffmpeg](https://hashnode.com/tag/ffmpeg)
-   [#playwright](https://hashnode.com/tag/playwright)

## Written by

[Muhammad Ahmad](https://hashnode.com/@mahmadmanzoor)

@mahmadmanzoor · Lahore, Pakistan

  
[View profile](https://hashnode.com/@mahmadmanzoor)

AI Product Engineer @ RipeSeed. Shipping LLM features, agents and evals in production.

## Responses 5

Markdown supported · ⌘↵ to post

[DemoVexa](https://hashnode.com/@demovexa)

[3d ago](https://hashnode.com/posts/i-built-a-claude-code-skill-that-makes-video-ads-without-a-video-model/6aec609640cddf686572416e/comment/6aefe3c3a529a56101dd222c)

Measuring true peak on the final MP4 instead of the WAV is the detail most pipelines get wrong. AAC adds inter-sample peaks the limiter never sees, so a mix that reads -1 dB before muxing can land over the ceiling in the file people download. Looping the ceiling down until the encoded file passes is a tidy fix. The safe zone overlay and the per-scene contact sheet are worth stealing for any short video, not just ads; catching captions across a face in one still beats scrubbing the whole cut. I also like the LOG.md rule that a mistake becomes a SKILL.md rule only after it happens twice. That keeps the skill from filling up with one-off superstitions.

[DemoVexa](https://hashnode.com/@demovexa)

[1d ago](https://hashnode.com/posts/i-built-a-claude-code-skill-that-makes-video-ads-without-a-video-model/6aec609640cddf686572416e/comment/6aefe3c3a529a56101dd222c#reply-6af2d78ccc5b267a28d62d23)

That makes sense. The number in the file people download is the only one that holds up once the AAC encoder has had its say. On the twice rule, how do you tell that a second failure is the same mistake and not just a similar one? I'd guess the LOG.md entries need a consistent shape for that match to be reliable.

[Muhammad Ahmad](https://hashnode.com/@mahmadmanzoor)

[18h ago](https://hashnode.com/posts/i-built-a-claude-code-skill-that-makes-video-ads-without-a-video-model/6aec609640cddf686572416e/comment/6aefe3c3a529a56101dd222c#reply-6af3f906d2f2877dae790ca3)

The test is the same cause, not the same symptom, since two runs can fail in similar ways for different reasons. You're right that a fixed shape per entry, with the symptom, the cause and the fix, makes that match much easier to check.

[DemoVexa](https://hashnode.com/@demovexa)

[14h ago](https://hashnode.com/posts/i-built-a-claude-code-skill-that-makes-video-ads-without-a-video-model/6aec609640cddf686572416e/comment/6aefe3c3a529a56101dd222c#reply-6af42cc6ef641118f798f659)

Same cause over same symptom is a good test. It also means an entry only gets written once someone actually knows the cause, so a run that failed for unclear reasons stays a note instead of turning into a rule too early. When a fix lands in the skill itself, do you delete the entry, or keep it around as history?
