Skip to content
Marketing
Skill

/render-street-interview

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

BOOST
From plugin
goose-skills
1.2k200 skills
Install
$ npx -y skills add gooseworks-ai/goose-skills --skill render-street-interview --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/render-street-interview

Context 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

SKILL.md

render-street-interview.SKILL.md
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

Human version

render-street-interview

**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.

---

Agent version

Script first: choose the execution

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.

Run

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
  • **Product-guess brand data:** `brands/<slug>.json` holds the product and its reference photo, the

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`.

  • **An episode** (`episodes/<name>.json`) joins three takes into a ~25-30 s cut. It names the takes,

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.

  • Paid calls go **through the GooseWorks proxy** (`scripts/media_proxy.py`), never a local key.

On a poll timeout, resume with `media_proxy.resume_fal(request_id)`. Never resubmit, since a dropped poll has already been billed.

Prompt length

The final Seedance prompt is built from the project brief and shared shot instructions. [B

Read more
Ships withgoose-skills

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.

Get the whole plugin

Other skills on goose-skills.