Skip to content
cccskills
FreePublished on GitHub

create-vo-elevenlabs

Create spoken narration for video ads from a template recipe's script and voice ID using ElevenLabs through the GooseWorks proxy. The skill can apply confirmed brand pronunciations and produce audio with timing data for edits that must follow the speech.

OriginalShow the original description

Generate a voiceover (VO) clip via ElevenLabs text-to-speech, routed through the GooseWorks proxy, so the call is charged to your GooseWorks credits. Voice id + script text come from the template recipe. Use for the spoken narration of VO-driven video-ad formats (cgi-app-sizzle, flat-vector-explainer, hypermotion). Never call ElevenLabs directly — the proxy attribution is required.

gooseworks-ai/goose-skills1,272 stars(GitHub 1,272 + cccskills 0)
Works withElevenLabs

Run score Not tested

See how to install

Good for

  • Generating narration for a video ad from its recipe
  • Applying a confirmed pronunciation for a brand name
  • Creating timestamped voiceover for speech-led edits

Files included (9)

  • SKILL.md5.9 KB
  • scripts/gen_vo.py12.1 KB
  • scripts/media_proxy.py56.8 KB
  • scripts/read_pronunciations.py3.7 KB
  • skill.meta.json221 B
  • tests/smoke-test.md98 B
  • tests/test_gen_vo.py1.0 KB
  • tests/test_pace.py4.1 KB
  • tests/test_timestamps.py3.3 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Superseded: the video kit now does this with the voice-elevenlabs part, version 1.3.0 (voice-elevenlabs@1.3.0), in the parts folder of this repository. It speaks every scene's line through the private line, keeps character timings as word timings and swaps in confirmed pronunciations the same way. The compatibility generator also supports Eleven v4 controls and pending timing provenance. Existing frozen part versions are unchanged.

create-vo-elevenlabs

VO via the elevenlabs-proxy (charged to your GooseWorks credits). gen_vo.py --text "..." --voice <id> --out vo.mp3. The template recipe supplies the voice + text; paid call routes through media_proxy.

Brand pronunciations

A brand name or product name the voice gets wrong is spoken from its phonetic spelling, never from a (pronounced …) note (the voice reads notes aloud):

gen_vo.py --text "Meet Brewq2." --voice <id> --out vo.mp3 --rules working/brand-rules.json
# or: --say-as "Brewq2=brew Q two"

Only the SPOKEN text changes. Captions, on-screen text and the approved script keep the written name. When captions are timed from this VO, map the spoken words back to the written term.

Read confirmed pronunciation before spending

At the start of every video, read the selected brand's persistent facts, including user-authored pronunciation rules. A previous video's notes or a cached rules file do not establish current pronunciation. For an unknown or ambiguous name, resolve how it is said before the paid voice step. Save the user's confirmed choice in the existing brand-facts store, update an existing rule by its id, then make a separate read and confirm it survived. Never infer successful persistence from a write acknowledgement.

The bundled read_pronunciations.py exports user-authored must rules from a fresh context snapshot (the brand read's payload, its {"result": …} wrapper, or the whole tool result). A rule's text is Pronounce "<term>" as "<say_as>"; the older Pronunciation: <term> => <say_as> is also read. It rejects a different brand, conflicting rules and required names that remain unknown. The resulting local rules file is a per-run voice input; the brand store remains the durable source. gen_vo.py supports a free dry run to review the resulting spoken text. Captions retain written names.

Model-specific performance and timing

Eleven v4 is the default (since 1.3.0; it was v3). V4 and V4 Turbo always use the timestamped endpoint, so --with-timestamps is turned on for them. eleven_v3 only when the plan locked it; never silently swap a locked model. --model-support is ignored.

Pace: measured, and --target-wps

A timestamped read writes measured_words_per_second into .provenance.json: real words (punctuation alone is not a word), over the first word's start to the last word's last letter. Pass --target-wps with the reference's rate, counted the same way: transcribe it with word timestamps, join whisper's sub-word tokens into real words, skip any token with no letter or digit, and divide the word count by the seconds from the first word's start to the last word's end (the video-production-harness skill ships this count as scripts/reference_rate.py). A read more than 10% below it is sped up to the target, at most 1.25x, with ffmpeg atempo; the raw read is kept as <stem>.raw.mp3 and the timestamps are scaled to match. The provenance records tempo, tempo_applied and tempo_applied_before_lipsync: true. This retimes only the new narration, before any lip-sync step; never a lip-synced or native talking clip. A tagged read is not paced from provider timings. A read still slow at 1.25x needs a faster direction or fewer words.

V4 supports Stability and Similarity settings; Style, Speed, speaker boost and SSML are refused. V3/V4 accept bracketed audio tags and plain --tag delivery cues. V2 does not accept those tags. A literal wanted “uh” is spoken copy that needs approval and time. Tags guide performance; do not accept their effect without listening to the actual selected voice.

Keep a connected read rather than isolated sentences padded to planned scene lengths. New kit narration defaults to join: sentence and a 0.08 s gap only between separate requests. Use join: one for an appropriate same-voice script. Do not generate six takes by default or fit a poor voice performance with automatic time stretching. Deliberate narration tempo changes happen before any lip-sync generation and need listening afterward; never retime a native speaking face's audio separately.

The generator saves .provenance.json separately from raw provider timestamps. Tagged audio has timing_status: requires_reviewed_alignment; tag characters can receive invented times. Use actual reviewed transcription or forced alignment for final caption/edit timing. A timestamp response is not a content review or proof that every word was spoken. Listen to every file, including the first seconds, joins and endings, and preserve the exact voice/model/settings and checksum in the existing library record.

Character timings for video

The bundled generator supports timestamped voiceover with per-voice settings. Use the timestamp option for podcast dialogue and other edits that must follow speech. It saves an MP3 and a character-alignment JSON beside it, sharing the same filename stem. The existing audio-only invocation keeps its behavior. A missing alignment is an error; do not render captions from guessed timings. See the bundled timestamp tests for the request and output contract.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

<slug>

FreeSummary

The supplied material contains only placeholder text for the skill’s purpose, inputs, steps, and completion criteria. It does not provide enough information to describe a task or result reliably.

  • No use case can be identified from the supplied material
  • Purpose is unspecified
  • Inputs and expected results are unspecified
gooseworks-ai/goose-skills1.3KUpdated Oct 27, 2026

ad-angle-miner

FreeSummary

Research supported advertising angles using buyer context, current product facts, customer language, and observed ads. Turn the evidence into static ad, video, or copy ideas, matching video concepts to available recipes. Scores rank ideas for testing; they do not predict results.

  • Finding evidence-backed angles for a product campaign
  • Developing static ad or video concepts from customer research
  • Writing headline and primary-text options for ads
gooseworks-ai/goose-skills1.3KUpdated Oct 27, 2026

Analyze campaign data from Google, Meta, and LinkedIn to find strong and wasteful spend. The skill checks funnel performance and test results, then recommends which campaigns to pause, scale, or test and how to shift budget across channels.

  • Finding campaigns and ads that waste budget
  • Comparing performance across Google, Meta, and LinkedIn
  • Planning specific budget shifts and follow-up tests
gooseworks-ai/goose-skills1.3KUpdated Oct 27, 2026

Compare ad spend and signups with downstream outcomes to calculate the cost of each qualified lead. The skill checks tracking coverage, accounts for how long leads need to mature, and groups creatives into actionable categories with confidence notes.

  • Compare true qualified-lead costs across creatives
  • Find low-CPA ads that bring poor-quality leads
  • Check whether signups can be linked to downstream outcomes
gooseworks-ai/goose-skills1.3KUpdated Oct 27, 2026

Prepare the intake for a Meta ad campaign by reviewing available brand information first, stating reasonable assumptions, and asking only questions whose answers could affect budget, claims, or legal exposure. It records stable brand facts, a campaign brief, and what was asked versus assumed.

  • Prepare a Meta ad campaign when brand facts are missing
  • Clarify budget and timing before campaign planning
  • Record approved claims and audience restrictions
gooseworks-ai/goose-skills1.3KUpdated Oct 27, 2026

ad-policy-check

FreeSummary

Review ad copy, image text, visuals, and people against platform and brand category rules. It suggests honest fixes and needed disclosures, then flags issues requiring human or legal review, with a separate result for each ad and platform.

  • Checking ad copy and visuals before launch
  • Reviewing creator ads for required disclosures
  • Fixing a platform disapproval and recording the issue
gooseworks-ai/goose-skills1.3KUpdated Oct 27, 2026

See all skills by gooseworks-ai

Report a problem with this skill