SkillAgentSearch skills...

create-creator-takes-h3

Generate an AI creator talking to camera, saying an approved script, as one continuous track — H3 Max reference-to-video through the GooseWorks fal-proxy (charged to your GooseWorks credits).

Install / Use

npx skills add gooseworks-ai/goose-skills --skill create-creator-takes-h3

Installs into whichever agent you are using.

About this skill
📄

SKILL.md

Installable skill definition

Quality Score

91/100

Category

Other

Supported Platforms

Universal

Our assessment of create-creator-takes-h3

create-creator-takes-h3 scores 91/100 on our quality scale, 47th of 283 Other skills we index (top 17%).

Its SKILL.md is 32 KB long, well organised into 20 sections with 2 code examples: a thorough specification that gives an agent plenty to work with.

With 1,222 GitHub stars, it is one of the more widely adopted skills in the catalogue.

Substance
30/30
Structure
18/20
Description
15/15
Adoption
13/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated 33 days ago, so create-creator-takes-h3 is actively maintained.
  • Our last check on 2026-10-09 found the source still online.
  • It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
  • Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

Safety scan

No issues found

Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands.

Automated pattern scan on 2026-10-26. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.

create-creator-takes-h3 compared with similar skills

All 4 of these similar skills score higher than create-creator-takes-h3; compare them before choosing.

SkillScoreStarsUpdatedFormat
create-creator-takes-h3 (this skill)by gooseworks-ai911.2k33d agoSKILL.md
LocalAIby mudler10050.0ktodayMCP Server
algorithmic-artby anthropics100177.9k33d agoSKILL.md
pptxby anthropics100177.9k33d agoSKILL.md
designby nextlevelbuilder100137.2k11d agoSKILL.md

Frequently asked questions

How do I install create-creator-takes-h3?
Run npx skills add gooseworks-ai/goose-skills --skill create-creator-takes-h3. The install tabs above show the steps for each supported agent.
Which AI agents does create-creator-takes-h3 work with?
It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
Is create-creator-takes-h3 safe to use?
Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is create-creator-takes-h3 still maintained?
The repository was last updated 33 days ago, so create-creator-takes-h3 is actively maintained.

name: create-creator-takes-h3 description: Generate an AI creator talking to camera, saying an approved script, as one continuous track — H3 Max reference-to-video through the GooseWorks fal-proxy (charged to your GooseWorks credits). Plans takes on line boundaries under H3's 15s cap, dry-runs a cost estimate, generates the first take alone so its voice can be locked and passed to every later take, joins takes with measured 0.10s dissolves, and moves each line's timing onto the words actually spoken. Use for any format with a generated creator speaking a script (split-screen, screen inserts, talking-head ads). status: superseded version: "2.9.1" superseded_by: creator-h3@1.8.0

Superseded by: creator-h3@1.8.0. Compatibility scripts retain the source-review guards; frozen versions are unchanged.

create-creator-takes-h3

Summary. Generate one creator take, review the actual picture and sound, then continue with qualified sources. Keep native speech attached to its picture and assemble only complete reviewed takes. The provider can still invent words, drift in identity or fail an action; prompts and transcripts do not certify a pass.

Use the shared builder for people. Defaults: GPT Image 2, phone capture in a lived-in room, deep focus, no bokeh, no retouching, and one light lock (window or lamp light from one side, normal exposure, no HDR, matte skin, no over-sharpening). Studio or shallow focus only when the reference is shot that way. No forced flaws; marks only when the user chose them, and a skin condition only when the product treats it. A person who acts is an action shot, not a talking head.

| Script | What | Cost | |---|---|---| | make_character.py | build the creator still from the user's choices, one shot | paid (one still, cents) | | pair_voice.py | the voice for this person: a matched ElevenLabs voice, or a Voice Design request | free (Voice Design itself is paid) | | plan_takes.py | split lines into takes (under 15s each) and write the prompts | free | | run_takes.py | generate the takes, dry run unless --go | paid (H3 Max, 768P by default) | | join_takes.py | join into one creator track | free | | align_beats.py | move line timings onto the spoken words | free |

character-prompt.json is the realism prompt for the character still. Do not fill it by hand. make_character.py fills every slot and calls create-image-fal, because a hand-filled prompt left slots blank and produced the composite face the formula warns about, and different runs filled it differently.

make_character.py is the shared builder for any generated person still in a custom video, not only for H3 takes. Fetch create-image-fal with it; the script calls its gen_image.py. Before the paid call, price the exact --payload-out request with data_price_provider (free, read-only): --dry-run --payload-out work/character/payload.json writes {"model", "body", "quality_tier"} (plus upgrade and query when there are any), the exact request gen_image.py will send, and generates nothing. Send the body, and the query fields (shot_scene, upgrade_*) as top-level fields of the price request, so the check prices the call that will run.

Quality tier: Standard or Best

The customer picks Standard (the default) or Best at script approval. Pass it as --tier.

| Setting | Standard | Best | |---|---|---| | Still (make_character.py --quality) | GPT Image 2 medium | high | | Takes (plan_takes.py --resolution) | H3 768P | 768P |

  • No video above 768P unless the customer asks (16 Oct 2026). The finished video is 1080×1920 either way: the last edit step scales the 768P picture up with ffmpeg -vf scale=1080:1920:flags=lanczos, at no cost. fal makes H3 1080P from a native 768P take plus a refinement pass.
  • Choose the resolution before the first take. Later takes copy t1's voice and are reviewed against it, so run_takes.py refuses to go on while any take was made at another resolution: re-plan and re-roll those takes.
  • Above the tier's default is an upgrade for one shot, never for the whole video, and it needs a reason (scripts/tiers.py, the GooseWorks server's names):
    • a picture (make_character.py --quality high under Standard) after a failed check: --upgrade-reason failed_attempt --upgrade-attempt <the failed call's operation id> --upgrade-why "<one line>";
    • anything when the customer asks: --upgrade-reason customer_asked --upgrade-quote "<their words>". A video upgrade (H3 1080P) is only ever this: never after a failed check alone.
  • After one failed check, judge the shot. Retry once at the same setting when a prompt fix should work (a wrong pose, a missing prop). Upgrade the picture straight away when medium probably can't do it (small label text, a complex product shape, many parts that must stay exact).
  • The call says which shot it is. make_character.py --shot-scene <n> (a still made for one scene; leave it out for a shared person, even on an upgrade) and each take that speaks one scene send shot_scene, with the upgrade's upgrade_* fields, as the GooseWorks query. character.json, takes.json and the --payload-out file record the tier, the setting and the upgrade.

Run

# the user's person, one command, one still. --dry-run prints the prompt and spends nothing.
python make_character.py --capture phone --recording counter --age 34 --gender woman --ethnicity "South Asian"     --hair "shoulder-length black hair, slightly frizzy at the crown, one side tucked back"     --wardrobe "plain charcoal crew-neck t-shirt, slightly creased"     --scene "a lived-in home office, a full bookshelf behind her, in focus"     --voices voices.json --voice-accent american     --out work/character        # writes character.png AND character.json
#   add --action "<each scene action she performs>", --voices voices.json and --voice-accent/--voice-energy (see below)
python plan_takes.py --beats cutlist.json --character character.json --out work/takes --reference-wps <reference rate>
python run_takes.py --spec work/takes/takes.json                  # dry run: plan + estimate
python run_takes.py --spec work/takes/takes.json --only t1 --go   # after the user approves
python run_takes.py --spec work/takes/takes.json --reviews work/takes/source-reviews.json --qualification work/takes/qualification.json --go # after t1 passes actual AV review
# Transcribe and inspect EACH take into its planned tN.words.json BEFORE joining.
python join_takes.py --require-words --reviews work/takes/source-reviews.json --spec work/takes/takes.json --end <reel length> --out work/creator.mp4
# caption-burn: transcribe.py --media work/creator.mp4 --out work/creator.words.json
python align_beats.py --beats cutlist.json --words work/creator.words.json \
    --out cutlist.aligned.json --max-end <creator.mp4 length>

character.json, which make_character.py writes for you:

{"image": "character.png",
 "identity": "<age + gender + look from the user's brief>, <hair>, <wardrobe>",
 "environment": "<the real room in the approved still>, window daylight",
 "delivery": "<the tone the user chose>. Whatever the tone, keep the face relaxed: an over-energetic read can give a constant grin and busy hands that read as AI."}

The user chooses who the creator is. Ask for age, gender and ethnicity, plus hair, wardrobe and room, then pass them to make_character.py. Those six are required arguments, so there is nothing to forget and nothing to invent. There is no default person: never copy a look from an example, a reference build or a demo reel.

plan_takes.py rejects a placeholder identity or one without age or gender. These must come from the chosen creator brief: copying an example once produced the same unrequested man across builds. An unspecified identity creates a composite face.

delivery now defaults to calm and conversational. The default used to be energetic, which this file already warned "can give a constant grin and busy hands that read as AI", so avoiding a known failure depended on remembering to opt out. Pass delivery to override.

identity and environment go into every take word for word. Write them once from the approved still, then never retype them: a person described two ways drifts between takes.

Action shots, skin condition and light (2.5.0)

Two test videos looked AI-made. Every B-roll person was built as a talking head (centred, looking at the lens, hands free, clear skin), and the light was flat, glossy and perfectly exposed.

  • An action shot frames the action. With --action "..." or --capture phone_observer, the still is an action shot: the hands, the object and the face working on it are in frame, off-centre, the eyes on the task, the hands in use, the head 25-40 % of the frame (20-35 % for phone_observer). The action text goes into the prompt. --shot talking keeps the talking-head defaults for someone who talks to the lens while acting. character.json records shot.
  • Show the condition the product treats. --skin-condition "visible blackheads on the nose, oily T-zone" (or "a few small acne spots") puts it on the person, real and unretouched. It needs no --marks-approved: it comes from the product, not a random mark. Without it, no marks are invented. An oily condition drops "greasy shine" from the negative. character.json records skin_condition.
  • One light lock. Every capture asks for window or lamp light from one side, normal exposure, no HDR, matte skin with no added shine and no over-sharpening. creator-h3 1.6.0 and video-h3max 1.2.0 repeat it in the motion prompt.

Both hands, voice and pace (2.4.0)

A test video went wrong three ways. These rules stop each one.

  • Both hands busy: no selfie. The presenter pressed a strip on her nose with both hands under a selfie capture, and the model added a third hand holding the phone. Pass every scene action with make_character.py --action "...". An action that uses both hands (apply, smooth, press, peel, squeeze, hold with both hands) refuses --recording selfie and makes a propped phone (counter) instead; use --capture phone_observer for a friend filming. plan_takes.py does the same for beats whose action, picture, visual, shot or description says so, or for required_features application: it refuses phone_selfie and uses phone_counter (creator-h3 and talking takes have no phone_observer; that capture is make_character.py's, for non-speaking clips). Both print why, and record capture_decision (in character.json and takes.json).
  • The voice fits the face. The narrator was picked apart from the presenter (a 28-year-old woman) and was a voice reused across brands. make_character.py now records voice_pair in character.json, from the same age and gender plus --voice-accent and --voice-energy. With --voices (a saved voice list; see 2.6.0 below) it is the best voice that fits; --voice-exclude <id> keeps another brand's narrator out. With --voice-design (or when nothing in the list fits) it is a Voice Design request: POST /v1/text-to-voice/design with voice_description, model_id (eleven_ttv_v3) and text (100-1000 characters) or auto_generate_text, then POST /v1/text-to-voice with voice_name, voice_description and the chosen preview's generated_voice_id. Voice Design is paid: quote it, listen to the previews, then save one. Use voice_pair for every narration of this person.
  • Pace from the reference. The narration read at 2.62 words a second against the reference's 3.20 (270 words in 84.45 s). Measure the reference's rate yourself: 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

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars1.2k
CategoryOther
Updated1mo ago
Forks208

Languages

Python

Trust signals

100/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

No cautions