answer-ads-questions
Answer questions about a brand's Meta ads (spend, results, which ad is winning, is it paused,…
Build a vox-pop street interview video ad. An interviewer with a handheld mic asks passers-by one question about the brand's product, they give blunt wrong guesses, one gives the real answer, and the cut lands on a branded end card. Generates the takes through the GooseWorks fal
$ npx -y skills add gooseworks-ai/goose-skills --skill render-street-interview --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/render-street-interviewContext preview
The summary Claude sees to decide when to auto-load this skill.
Build a vox-pop street interview video ad. An interviewer with a handheld mic asks passers-by one question about the brand's product, they give blunt wrong guesses, one gives the real answer, and the cut lands on a branded end card. Generates the takes through the GooseWorks fal
name: render-street-interview description: Write a street-interview ad from a complete inspected commercial interaction and current brand facts. Render product guessing, or prepare mic-only, prepared-sample or visible-task conversation script/prompt previews. Premise, actions and ad connection vary; capture rules stay fixed. Conversation media delivery is unverified. status: draft
**Summary.** This is the renderer for the **street-interview** ad format (goose-studio recipe `one-shot-videos/create-street-interview-video`). Product guessing retains its visible object and reveal. Conversation supports mic-only, prepared-sample and visible-task **script/prompt previews**. Choose a coherent situation and earned ad connection before writing words. People are generated; conversation media delivery remains unverified.
---
Read [street-script-writing](references/street-script-writing.md) before adapting a brand. The recipe fixes camera, audio, native timing and finishing rules. Its story choices govern premise, participant role, participation reason, visible task, actions, edited opening, hook, supported brand explanation and payoff. Do not force a correct-answer winner into a service conversation or reduce every brand to a routine problem followed by a logo card.
| Interaction | Current support | | --- | --- | | `product-guess` | Existing object renderer; standalone product reference required | | `mic-only` | Conversation preview; service explanation without a product or device | | `product-sample` | Conversation preview; prepared sample in a plain cup, no exact package reference | | `concept-challenge` | Conversation preview; described visible task using non-UI props |
Use [[composes::write-video-ad-script]] with the scoped angle bank, current facts and selected complete commercial street interactions. `scripts/prepare_script_context.py` requires a brief with `offering_type=physical|service|digital` and `interaction_type=product-guess|mic-only|product-sample|concept-challenge`. Inspect the full visual timeline and spoken exchange: setup, participation reason, hook, product role and payoff. Record unseen recruitment or setup as unknown; inference is not observation. Seed snippets are leads. Radio and editorial exchanges cannot fill a street-ad gap. Keep private observations project-scoped and transfer mechanics, not source-brand claims.
Save a situation brief before dialogue. Write the user's requested count, then map words and actions to ordered shots. An edited participant answer or silent action/reaction may open the ad. `cfg.question` mirrors the first actual interviewer question, spoken once. Keep both spoken voices and 3–8 shots in 6–15 seconds, at no more than 2.5 spoken words/s; leave time for actions. New configs describe `interaction.type`, `visible_setup`, `participant_reason` and optional `props`; missing interaction defaults to mic-only. No forced greeting/consent speech, invented use history or instant product efficacy.
`conversation` currently runs config validation and prompt previews. `single_gen.py --yes` refuses that mode until a rendered pilot is validated. Natural speech, audio and camera performance remain unverified. The existing product-guess render path is preserved. All conversation subtypes refuse product/scene reference bindings and phone, screen or UI demonstrations. Dry-run success is not a performed sample, challenge or finished video.
Read the bundled [model notes](references/model-behaviors.md) before generation. If a required guide cannot be fetched or opened, stop before spending and name it. `REFERENCE.md` holds the format's historical **Critical knowledge** entries and the rejected takes behind them. Read it before changing the prompt scaffold or a gate; its older experiments do not override the current recipe or this entry. Use the [project take-ledger guidance](TAKES.md) before reusing a seed. Keep each brand's observed successes and limitations in its own project; a seed is not a quality guarantee.
The paid generation and finishing commands below are for `product-guess`. Conversation supports `brandkit.py` validation and `single_gen.py` dry runs only.
Run everything from the project the video belongs to. Brand-asset paths in the configs (logo, product photo, end-card sting) resolve against that folder, or `$STREET_INTERVIEW_ROOT`. The run folder is `--run <dir>` (default `projects/street-interview/`), with `working/` for intermediates and `output/` for deliverables.
python scripts/selftest.py # free: the format and the lint hold python scripts/single_gen.py --brand <slug> # dry run: price + the full prompt python scripts/single_gen.py --brand <slug> --seed <n> --yes # PAID: one take (~$3.64 at 12 s, 720p) python scripts/build_episode.py --episode <name> # free: grade, re-cut, captions, end card python scripts/check-cut.py --episode <render>.episode.json # free: the ship gate
street, the question, the cast and their lines, props, captions, logo and end card. Copy `brands/demo-tallgrass-oat.json`. No brand appears in `format_spec.py`.
any whole shots to drop (`drop_shots`, each pair a real shot's start and end), the brand layer and, optionally, `brand_layer.end_card_music`, a short sting played under the end card.
On a poll timeout, resume with `media_proxy.resume_fal(request_id)`. Never resubmit, since a dropped poll has already been billed.
The final Seedance prompt is built from the project brief and shared shot instructions. [B
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…