本文へ移動
cccskills
無料GitHub で公開日本語紹介

render-street-interview

実際に確認した商業的な街頭インタビューと最新のブランド情報をもとに、商品当て形式の広告や会話型の台本・プロンプト案を準備します。

原文原文の説明を見る

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.

gooseworks-ai/goose-skillsスター 1,272(GitHub 1,272 + cccskills 0)

実行スコア 未検証

インストール方法を見る

こんなときに便利

  • 商品当て形式の街頭広告を作りたいとき
  • 会話型広告の台本案を準備したいとき
  • 試飲や目に見える課題の企画を考えるとき

日本語での紹介

できること

確認済みの街頭インタビュー事例と最新のブランド情報をもとに、街頭インタビュー形式の広告制作を支援します。商品当て形式では、商品を見せて回答後に明かす構成の動画を作成できます。会話形式は、マイクのみ、用意した試飲サンプル、目に見える作業への挑戦に対応し、台本や生成プロンプトのプレビューを準備します。状況や参加者の役割、会話のきっかけ、広告へのつなぎ方は企画に合わせます。

会話形式のプレビューでは、実際の動画や音声の生成・納品は確認されていません。商品当て形式には既存のレンダリング経路があります。会話の流れは実際に観察した内容と区別し、未確認の募集経緯や設定を事実として扱いません。

こんなときに便利

商品当ての街頭広告を作りたい場合や、会話形式の企画を台本・プロンプト段階で検討したい場合に向いています。ブランドの事実に沿って、参加者の行動や広告の見せ方を組み立てます。

使い方の例

  • 「この商品情報と確認済みの事例から、商品当て形式の街頭広告を構成して」
  • 「マイクのみの会話型広告について、台本とプロンプトのプレビューを用意して」
  • 「試飲サンプルを使う会話の状況とショット案を作って」

注意点

会話形式はプレビューのみで、映像・音声の納品は未検証です。商品当て動画の有料生成には承認済みの注文が必要で、外部の生成処理はGooseWorks proxy経由です。

この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。

含まれるファイル(85)

  • SKILL.md16.7 KB
  • brands/demo-tallgrass-oat.json3.9 KB
  • brands/fizzroot-ep3-a.json2.2 KB
  • brands/fizzroot-ep3-b.json2.6 KB
  • brands/fizzroot-ep3-c.json2.3 KB
  • brands/grimwater.json4.6 KB
  • brands/oleara-ep1-a2.json2.5 KB
  • brands/oleara-ep1-b.json2.7 KB
  • brands/oleara-ep1-c.json2.5 KB
  • episodes/fizzroot-ep3.json1009 B
  • episodes/oleara-ep1.json784 B
  • REFERENCE.md7.4 KB
  • references/cast-writing.md9.6 KB
  • references/h3-generation.md2.2 KB
  • references/model-behaviors.md5.0 KB
  • references/reference-format-rules.md7.5 KB
  • references/reference-ledger-items-01-23.md15.6 KB
  • references/reference-ledger-items-17-28.md13.2 KB
  • references/reference-ledger-items-29-42.md14.3 KB
  • references/reference-pipeline.md7.3 KB
  • references/street-reference-library.json6.6 KB
  • references/street-script-writing.md16.7 KB
  • scripts/bench.py18.2 KB
  • scripts/brandkit.py19.3 KB
  • scripts/build_episode.py77.5 KB
  • scripts/build_looks.py32.2 KB
  • scripts/build.py8.0 KB
  • scripts/check-cut.py66.3 KB
  • scripts/conversation.py12.8 KB
  • scripts/edit_timeline.py7.6 KB
  • scripts/falsify-all.py19.8 KB
  • scripts/fit_grade.py7.7 KB
  • scripts/format_spec.py93.2 KB
  • scripts/measure-pace.py2.8 KB
  • scripts/media_proxy.py56.8 KB
  • scripts/paths.py3.0 KB
  • scripts/phone_look_video.py7.2 KB
  • scripts/prepare_script_context.py12.0 KB
  • scripts/recut.py26.5 KB
  • scripts/selftest.py23.5 KB
  • scripts/single_gen.py24.9 KB
  • scripts/variants_gen.py14.0 KB
  • skill.meta.json656 B
  • TAKES.md1.5 KB
  • tests/fixtures/brands/grimwater-4816.json4.6 KB
  • tests/fixtures/brands/grimwater-4817.json2.3 KB
  • tests/fixtures/brands/grimwater-4818.json2.6 KB
  • tests/fixtures/brands/grimwater-4819.json2.1 KB
  • tests/fixtures/brands/grimwater-4820.json2.8 KB
  • tests/fixtures/brands/grimwater-4821.json2.8 KB
  • tests/fixtures/brands/grimwater-4822.json2.5 KB
  • tests/fixtures/brands/grimwater-4823.json2.3 KB
  • tests/fixtures/brands/grimwater-4824.json4.1 KB
  • tests/fixtures/brands/grimwater-4827.json4.6 KB
  • tests/fixtures/brands/grimwater-4828.json4.3 KB
  • tests/fixtures/brands/grimwater-4829.json3.8 KB
  • tests/fixtures/brands/grimwater-4830.json3.9 KB
  • tests/fixtures/brands/grimwater-4831.json4.2 KB
  • tests/fixtures/brands/grimwater-4832.json3.5 KB
  • tests/fixtures/brands/grimwater-4833.json3.7 KB
  • tests/fixtures/brands/grimwater-4834.json3.9 KB
  • tests/fixtures/brands/grimwater-4835.json3.9 KB
  • tests/fixtures/episodes/grimwater-ep1.json2.2 KB
  • tests/fixtures/episodes/grimwater-ep2.json2.2 KB
  • tests/fixtures/episodes/grimwater-ep2fix-v2.json4.9 KB
  • tests/fixtures/episodes/grimwater-ep2fix-v3.json5.7 KB
  • tests/fixtures/episodes/grimwater-ep2fix.json3.7 KB
  • tests/fixtures/episodes/grimwater-ep3.json2.5 KB
  • tests/fixtures/episodes/grimwater-ep3b.json2.3 KB
  • tests/fixtures/episodes/grimwater-ep3c.json2.3 KB
  • tests/fixtures/episodes/grimwater-ep4.json3.7 KB
  • tests/fixtures/prompt-snapshots.json20.3 KB
  • tests/READINESS.md13.3 KB
  • tests/smoke-test.md627 B
  • tests/test_cast_advice.py3.6 KB
  • tests/test_conversation.py20.5 KB
  • tests/test_edit_timeline.py8.6 KB
  • tests/test_finishing.py10.9 KB
  • tests/test_h3_provider_route.py9.2 KB
  • tests/test_opt_in_hold_grammar.py4.7 KB
  • tests/test_prompt_budget.py10.5 KB
  • tests/test_recut_media.py6.2 KB
  • tests/test_selector_route.py8.7 KB
  • tests/test_single_gen_rejection.py7.6 KB
  • tests/test_skin_and_voice_options.py4.1 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Superseded: the video kit now makes street interviews with goose-studio's street-interview style, which uses the video-h3max part, version 1.0.0 (the take), the transcribe-whisper part, version 1.1.2 and the speech-recut part, version 1.0.2 (the cut), the html-frames part, version 1.2.1 (the overlay), the end-card part, version 1.1.1 and the assemble part, version 1.2.0, in the parts folder of this repository. Its recipes are retired in goose-studio. This renderer stays, unchanged in behaviour, because the write-video-ad-script skill runs its script-context step; its scripts still run.

Human version

render-street-interview

Summary. This is the renderer for the street-interview ad format. 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 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.

InteractionCurrent supportPerson image referenceMax participants
product-guessExisting object renderer; standalone product reference requiredforbidden4
mic-onlyConversation preview; service explanation without a product or deviceforbidden1
product-sampleConversation preview; prepared sample in a plain cup, no exact package referenceforbidden1
concept-challengeConversation preview; described visible task using non-UI propsforbidden1

Use the write-video-ad-script skill 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.

Pass participants too: the number of people interviewed on screen, not counting the interviewer (default 4 for product-guess, 1 for conversation). Its route output is binding for any project built on this format, including custom ones. unsupported-route means stop and offer the listed alternatives; it is not permission to go custom. custom is one of those alternatives only when the customer picks it, and a custom video still keeps every route constraint: people in text, no person image references, one take, deep focus, local lettering.

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 model notes, cast first. 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 before reusing a seed. Keep each brand's observed successes and limitations in its own project; a seed is not a quality guarantee.

Opt-in H3 Max generation

Read the H3 adapter guide. Pass --model minimax/h3-max/reference-to-video --resolution 1080P. It keeps prompt lint and the finish manifest, saves request IDs, and recovers downloads without a new order. Historical defaults below remain unchanged.

Run (historical default endpoint)

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 (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.
  • A provider policy rejection (likeness of a real person, content policy) makes single_gen.py --yes exit 3: surface the reason, do not retry. The take's input digest covers every input by content (prompt, settings, seed, and the sha256 of the product image and the scene reference), so the unchanged request is refused before anything is uploaded, and a changed image, prompt or seed is sent as a new request.

Prompt length

The final Seedance prompt is built from the project brief and shared shot instructions. BytePlus recommends at most 1,000 English words because lengthy prompts may miss details. This is quality guidance. The current Fal schema declares no maximum prompt length; that does not prove unlimited acceptance.

single_gen.py prints a non-blocking advisory above that guideline. The old 1,200-word refusal is removed: its source-run observation did not prove a precise boundary. Keep the exact approved dialogue and required clauses; do not trim them, reduce the cast or add a paid retry just to meet a count. Missing clauses, invalid inputs and existing spend approval still block generation. The finished-cut gate reports length as advice, without failing on it. Review actual video adherence through the normal gate and full watch/listen pass.

Guarantees

  • The prompt carries every format clause; single_gen.py lints it before any spend, and check-cut.py imports the same clause list, so a clause cannot be dropped silently.
  • Captions follow the edited picture. An episode derives word timing from its finished assembly. A single-take recut measures words on the original take, aligns spelling to the approved script and moves only kept whole words through the same source-span map as the video and shot boundaries. Dropped speech is not captioned; moved or repeated spans move or repeat their captions. A boundary through a word stops finishing: widen the kept span and rebuild. Never reuse raw-take caption timestamps on an edited video.
  • The gate measures the finished file: shot lengths, splices on real cuts, caption timing and safe zone, ambience floor per shot, loudness and true peak, every scripted line audible, and detail and black point. It prints what it can NOT assess (faces, comprehension, how it sounds) on every run. Watch the cut end to end, and do not publish a FAIL.

Cost

A product-guess take is one paid generation (12 s at 720p); a 30 s episode is three paid takes. Grading, re-cut, captions, looks and every gate are free. GooseWorks quotes the price; paid steps run only on an approved order. Conversation prompt previews send no media call; no conversation media price is verified.

Local finishing

The local finishing scripts use the current Python interpreter and carry --run into child commands. The default grade (--strength 0) needs no colour-reference file. A positive strength requires the real reference.

Set approved colours in brand_layer.palette: accent, text, and background, each #RRGGBB or three RGB integers. Optional brand_layer.fonts keys are black, bold, and regular (paths relative to the project). Without overrides, fonts resolve on macOS, Windows or Linux. End-card rows keep the approved 86px spacing and 66px type. Shrink only an individual line whose visible text cannot fit the safe area; shorten copy if that line still cannot fit. Transparent text-image padding does not set the line spacing.

The subway series bar stays visible through caption gaps. It is also in the caption-free control so the gate measures captions separately from persistent branding.

For a new prompt, use generation.prompt_version: 3 (or --prompt-version 3). It keeps version 2's repairs (no duplicate articles, a top-edge rule for non-can packaging) and keeps the street in focus behind the people: never blurred and never bokeh (see REFERENCE #8). Version 3 is draft until a 720p take measures inside the real-footage detail band; its paid validation take needs its own approval. The bundled demo config stays on version 2 until then. The manifest records the version for the gate. Historical prompts default to version 1, and versions 1 and 2 retain their hashes. Use a new approved seed for a new prompt; do not overwrite an approved take.

Single-take recuts

Check local finishing prerequisites before buying a take: ffmpeg/ffprobe, PIL, NumPy, fonts, and local Whisper with its base model available. The existing episode transcription helper can download an absent Whisper model; prepare it separately before spend. This fix does not call another video or voice model. A reused take may supply previously measured original word times instead of transcribing again.

Keep the original take and generation manifest. Measure its internal cuts, caption source spans and a genuinely speech-free ambience window in brand_layer; these remain source seconds. Remove dead air locally, then add the approved brand layer and end card:

python scripts/recut.py <original-take.mp4> <run>/working/interview-recut.mp4 --brand <slug>
python scripts/build_looks.py --brand <slug> --run <run> --looks <look> \
  --edit-map <run>/working/interview-recut.plan.json
python scripts/check-cut.py --brand <slug> --run <run> --look <look> \
  --edit-map <run>/working/interview-recut.plan.json --take <original-take.mp4> --falsify
# Repeat the same gate without --falsify, then watch and listen to the entire finished file.

recut.py emits the source-span .plan.json beside its edited output. build_looks.py consumes that file, measures source words with the existing free local Whisper helper and saves interview-recut.plan.words.json. To reuse saved timing, pass --word-times <file> to finishing and the gate. Its JSON names the original source and contains ordered [start, end, word] rows. It must come from actual source audio, not estimates from the script. Missing transcription or incompatible timing stops finishing; there is no fallback to the original caption schedule.

Recut masters and caption-free controls have separate -recut- names. The original takes, controls and episode outputs stay intact. Ambience is extracted from the measured quiet window of the original source even if that window was dropped; only that WAV is looped. If the recut already applied its continuous bed, finishing does not mix it a second time. The end card always uses original room tone. The same mapped cuts clamp captions with a half-open end boundary so one person's last words do not appear on the next shot's first frame.

build.py remains an intermediate grade-and-recut helper. To finish its already graded output, use its printed map with build_looks.py --pregraded; do not grade it twice. A changed spoken line, story, paid retry or generation count still needs its existing review and approval. Run the normal finished-file gate and full watch/listen review; a synthetic timing test does not approve faces or the original customer's ad.

Free regression checks:

python -m unittest discover -s tests -p 'test_*.py' -v

Opt-in hold and handover settings

Six generation keys on the brand config, all off by default, so every recorded prompt and its hash are unchanged. They were paid for on Fizzroot and Oleara (REFERENCE.md items 37-42); start a new brand from brands/fizzroot-ep3-a.json (a can) or brands/oleara-ep1-a2.json (a bottle).

keywhat it does
handover_grammarevery person's first shot opens on the interviewer passing the product
natural_grammarthe product is held like a drink someone was just handed, not presented
real_grammarchest-height relaxed hold, one consistent interviewer, nothing printed carried
level_cameraremoves the glance down from speaking shots, which is what tips the product
no_signageno shops, signs or lettering behind the cast (names park-corner landmarks)
can_sealed_grammarexisting flag; holds with the keys above, so the can stays closed

Episode files take extra_head_s (seconds of run-up kept at the head of each take, so the handover is not trimmed as silence) and brand_layer.caption_centre_y. Transcribe every take with word timestamps before assembly: a fast take can repeat, slur or invent a line.

Known limits

  • Seedance refuses some photoreal faces (its likeness gate). Faces here come from the prompt, not a reference photo; see REFERENCE.md.
  • A multi-take episode can't make three generations be the same corner. A scene-reference still from take A (--scene-ref) couples later takes to its mic, street and light. Check by eye.
  • Ambience can differ between takes. The gate's check G fails a shot whose street bed sits within a few dB of the speech; that needs a re-take, not a mix.

Provenance

Ported from goose-studio skills/molecules/create-street-interview-video on 2026-10-02, including the episode-2 v3 fixes (hook caption, the mispronounced line, the silent end card). The port changed only path resolution and routed the paid calls through the proxy. selftest.py passes from an empty folder, and episode 2 v3 rebuilds identically (11 shots, 22.64 s); its takes are repo-only fixtures (tests/fixtures/).

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

<slug>

無料概要あり

資料には具体的なスキルの内容や手順が記載されていないため、用途や得られる結果を特定できません。

  • 用途を確認したいとき
  • 入力や手順を確認したいとき
  • 期待する結果を確認したいとき
gooseworks-ai/goose-skills1,2722026年10月27日 更新

ad-angle-miner

無料概要あり

顧客の課題や商品情報、広告事例を調べ、根拠のある広告訴求と静止画・動画・コピー案にまとめます。動画案は実際の制作フォーマットとの相性も確認し、商品単位の角度集として整理します。

  • 商品の根拠に沿った広告の切り口を探したいとき
  • 静止画広告や動画広告の案を作りたいとき
  • 顧客の言葉から見出しや広告文を考えたいとき
gooseworks-ai/goose-skills1,2722026年10月27日 更新

ad-campaign-analyzer

無料概要あり

Google、Meta、LinkedInなどの広告実績を分析し、成果の出た広告や予算の無駄を特定します。停止・拡大・テスト案や、具体的な予算配分を提案します。

  • 広告予算の無駄を見つけたいとき
  • 複数媒体の成果を比較したいとき
  • 広告の停止・拡大候補を決めたいとき
gooseworks-ai/goose-skills1,2722026年10月27日 更新

ad-lead-quality-analyzer

無料概要あり

広告費と登録後の成果を照合し、質の高いリード獲得にかかった実コストを算出します。広告素材ごとに拡大・維持・調査・停止の判断材料を整理するスキルです。

  • 広告素材ごとの実質獲得コストを比べたいとき
  • 低CPAでも質の低い広告を見つけたいとき
  • 登録後の成果データとの照合状況を調べたいとき
gooseworks-ai/goose-skills1,2722026年10月27日 更新

ad-management-intake

無料概要あり

Meta広告を始める前にブランド情報を調べ、予算や広告表現に関わる不明点だけを質問して準備を整えます。確認事項と仮定を記録し、ブランド情報とキャンペーン概要を作成します。

  • ブランド情報が未記録の状態で広告を始めたいとき
  • 予算や広告期間の前提を整理したいとき
  • 広告で使う主張や制約を記録したいとき
gooseworks-ai/goose-skills1,2722026年10月27日 更新

ad-policy-check

無料概要あり

広告文や画像内の表現を配信先と商品カテゴリのルールに照らして確認し、直せる箇所を修正しながら、法務や人の判断が必要なリスクを広告ごとに整理します。

  • 広告の配信前チェック
  • 広告画像や動画の表現確認
  • クリエイター広告の表示確認
gooseworks-ai/goose-skills1,2722026年10月27日 更新

gooseworks-ai のスキルをすべて見る

このスキルの問題を報告する