Creating a paid-social video ad from a single brief is a structured process. The key lies in following a predefined sequence of steps, which ensures that nothing is left to chance. Let's break down the process, starting from the initial setup to the final output, all while staying grounded in the evidence from the overnight build system.
Before diving into the steps, there are immutable rules. For instance, Higgsfield's video engine is run through the logged-in CLI (video-engine/scripts/higgsfield/hf_cli.py) and not through the API key or SDK. This is crucial to avoid billing conflicts, as noted in F85. Additionally, content guidelines are strict: no identifiable people, children as the focus, or alcohol consumption is allowed.
The process begins by copying templates/brief.example.json to a new brief.json file in your output directory. Every field must be filled since this document guides all subsequent scripts. The brief is crucial because it's the source of truth for campaign facts and drives the ad creation.
Executing python <skill>/scripts/generate.py <out_dir>/brief.json --aspect 9:16 prints the quote and halts the process. Here, the choice of model is critical; you select the cheapest model whose quote fits within the budget. The seedance_2_0_mini model is often sufficient, as detailed in the model table found in references/prompt-recipe.md.
To create the ads, run:
python <skill>/scripts/generate.py <out_dir>/brief.json --aspect 9:16 --spend
python <skill>/scripts/generate.py <out_dir>/brief.json --aspect 1:1 --spend
Each command writes a JSON file in the source directory, logging the credits used and the balance before and after the job.
Creating end cards is straightforward with python <skill>/scripts/render_endcards.py <out_dir>/brief.json. This script generates endcard-9x16.png and endcard-1x1.png. It's important to ensure the brand font loads correctly; otherwise, the script will fail.
The composite step involves fading the end card over the last ~3.8 seconds of each clip. Run python <skill>/scripts/composite.py <out_dir>/brief.json to write the final .mp4 files. Note that this step requires ffmpeg to be on your PATH.
Ad copy is checked for compliance with campaign guidelines using python <skill>/scripts/copy_check.py <out_dir>/brief.json. This ensures that all variants are within 125 characters, include the Meta disclaimer, and have no banned words.
For final review, use:
python <skill>/scripts/build_preview.py <out_dir>/brief.json
python <skill>/scripts/shoot_preview.py <out_dir>
This builds an index.html with phone frame previews and screenshots it for review. The feedback process emphasizes judging the media within its container, ensuring the ad appears as intended.
By adhering to these steps and rules, the ad creation process becomes methodical and predictable, minimizing errors and ensuring compliance with all guidelines.
Get weekly insights on AI architecture, pattern recognition, and building platforms without permission.
The photo rating bench is a straightforward yet effective tool for image evaluation, specifically designed with the founder's preferences in mind. The setup is...
Read itWhen dealing with documentation in software projects, ensuring that new or relocated docs are discoverable is as crucial as creating the content itself. I...
Read itIn the world of build systems, "cold-reopen" is an essential skill. It isn't about verifying something immediately after it's built; it's about returning to a...
Read itHave thoughts on this post? I'd love to hear them! Join the conversation on X where we can discuss AI architecture, pattern recognition, and building platforms.
Discuss on XOr reach out directly at @TravisEric_