answer-ads-questions
Answer questions about a brand's Meta ads (spend, results, which ad is winning, is it paused,…
Write the words of a short-form video ad (voiceover, dialogue, chat bubbles, on-screen lines) the way performance creative teams do instead of from a blank page. Builds the script from the buyers' own words, the beat sheet of an ad that already works and three deliberately
$ npx -y skills add gooseworks-ai/goose-skills --skill write-video-ad-script --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/write-video-ad-scriptContext preview
The summary Claude sees to decide when to auto-load this skill.
Write the words of a short-form video ad (voiceover, dialogue, chat bubbles, on-screen lines) the way performance creative teams do instead of from a blank page. Builds the script from the buyers' own words, the beat sheet of an ad that already works and three deliberately
name: write-video-ad-script description: Write a short-form video ad from an evidence-backed angle and the selected template's actual recipe. Reuses or fetches ad-angle-miner, preserves the chosen angle, plans words and visuals together, checks product claims and production fit, and delivers the strongest script with useful alternatives. Use before video production and for script rewrites. Customer language is one input alongside audience, promise, product proof, offer and format. status: active
**Summary.** Turn a researched advertising promise into a video this template can actually make. First load the angle research, then bind it to the recipe's story, visuals, timing and assets. Write and check the complete concept before the user reviews it. The output is one recommended script, its visual plan and up to two viable alternatives. A model score is a quality screen; ad results establish performance.
Use before production for voiceover, dialogue, chat, cards or lyrics. For a silent format, still plan its visual promise and payoff; skip spoken copy, not creative strategy.
When the user supplied exact lines, keep them verbatim. Check them in report-only mode and raise material timing, claim or format conflicts. Rewrite only with their authorization. The runtime owns research-spend permissions and production approval. Follow its existing review round; this skill adds no approval round of its own.
Read this skill's files reference before creating working files. Required context:
The user's explicit direction and chosen angle are fixed. The recipe determines what is possible. If those conflict, explain the concrete conflict and offer a compatible execution or format before production. Do not silently replace the angle or rewrite the template. A reference provides a storytelling structure; the product's facts provide claims.
**Fetch ad-angle-miner through the skill catalogue if its instructions and handoff reference are not already loaded.** It is a declared dependency. Fetching it does not run research.
With the GooseWorks MCP, use `catalog_fetch {type: "skill", slug: "ad-angle-miner"}`; with the CLI, use `gooseworks fetch ad-angle-miner`. Read the returned instructions and handoff files. If an explicitly supplied draft/local copy is under test, load that copy and record the override rather than claiming the published skill includes it. Record how the dependency was loaded, which bank/pointer was read, and whether research was reused or run. Naming the miner in a plan is not loading or executing it.
Check, in order:
1. An angle bank or selected idea already present in this run. 2. The brief's research pointer and selected angle id. 3. The brand and product's saved video-scripts workspace: angle-bank.json, beside customer-words.json. Check a legacy brand-level bank only if its product scope matches. 4. Legacy angle-bank Markdown and ideas JSON from a previous miner run. Read their actual sources and normalize them into the shared handoff; never manufacture missing evidence.
The shared handoff is video-angle-bank.v1, defined in ad-angle-miner's video-handoff reference. Use the preparation script to check brand, product, source ids and template compatibility, and write angle-context.json. Preserve selected ids and the original angle. Keep facts, quotes and observed ad structures separate. Refresh changing prices, offers and claims against current product sources; research age alone does not invalidate every insight.
Retain each angle's `buyer_case` and `product_role`. For a legacy bank missing them, enrich the selected angle from its actual sources before Step 2, keeping its id and promise. Record an unsupported connection as a gap, not an invented mechanism. These fields travel across recipes; their dialogue, narrative role and visible proof do not.
**If no usable bank exists, run ad-angle-miner in video mode**, limited to this audience, product and selected template. Reuse existing evidence. Its output is an angle bank, not a second script-writing workflow. Paid research follows the runtime's permissions. If access is missing or paid research is declined, build a smaller, explicitly provisional bank from verified product facts and available references. Do not require 20 reviews or invent quotes.
If the user has already chosen an angle, research supports that direction; it does not reopen the choice. If the selected angle cannot be supported, name the missing proof and propose a supported version. Never pretend to have run the miner when it could not run.
Read the actual recipe, not just its catalogue card. Write shape.json with:
For speech, read [pacing](references/pacing.md). Set the desired cadence from the brief's explicit delivery direction or observed reference audio, then the recipe's default. Preserve explicit recipe limits and record any conflict. Without usable evidence, use a provisional 3 words per second for conversation or 2.5 for slow narration, labelled as a fallback.
Budget each spoken beat from its sp
Put your AI agent on the growth team. Research customers and competitors, analyze what is working, create the next campaign, and learn from the result.
Repo: gooseworks-ai/goose-skills
Answer questions about a brand's Meta ads (spend, results, which ad is winning, is it paused,…
Burned-in captions for a finished vertical video, three kinds. transcribe.py gets word…
Composite a generated creator track into a product layer, per beat — in the creator's zone on…
Generate an AI creator talking to camera, saying an approved script, as one continuous track…
Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...),…
Generate a single photoreal or designed image with OpenAI gpt-image via fal.ai. Supports…