The director
An insight about the audience, a shape that acts out the client's promise, two ahas that each turn on one word, a motif whose states carry the story, lines written for the ear, and one craft move per scene.
A craft skill for short films
Direct the film.
Measure every frame.
Sizzle helps an agent make a 15 to 90 second kinetic brand film, with a narrator, a score and cut-downs. It decides like a director before anything is generated, then checks the work on every frame and in the mix.
Bring an outline, a deck, a site, a brand template or a folder of photos. Sizzle finds the idea, writes the film on paper and passes a creative gate before it spends a credit on voice or music. You choose the text-to-speech provider.
The skill makes the film. Your eyes and ears still approve it.
Sixty seconds, written on paper, voiced, scored and mixed, then audited with the tools on this page. Sound on. Captions are in the player.
An invented 14-second film, measured in your browser.
tools/lint.mjs and tools/motion.mjs and the audit hook the skill ships. This page has no sound; the voice and mix checks run on a real film's audio.Choose a cut
An invented town library wants students to know it stays open until midnight on Fridays. Fourteen seconds, no sound on this page.
What a quick first pass looks like: everything on screen, nothing quite readable.
Select a time to see that frame. A finding names the rule, the string and the measured number.
Two jobs, in order
Most generated films fail before the first frame: no insight, no turn, a script lifted from the deck, music chosen first. Sizzle makes those decisions on paper, then turns each quality bar into a measurement.
Where the agent cannot see or hear, the audits and the user's review stand in.
An insight about the audience, a shape that acts out the client's promise, two ahas that each turn on one word, a motif whose states carry the story, lines written for the ear, and one craft move per scene.
A canvas page drawn as a pure function of time and rendered frame by frame. Every string and image is recorded as it is drawn, so size, reading time, collisions, motion, voice and loudness are measured rather than guessed.
The order
Ten steps, always in this order. The film's state lives in files, so a new agent, or the same one after a long break, picks up exactly where the work stopped.
Music, voice and sound effects spend credits and anchor the film.
Nothing is generated until the idea, the script and the motif pass the creative gate and a person approves the storyboard. Once a score exists, the edit bends to it.
Preflight the harness: eyes, voice provider, tools. Absorb the source, the brand and the audience. Find the insight, the proposition, the shape and the two ahas, then write the film on paper.
A fresh reviewer, or a separate pass, checks the package against fifteen points and names the weakest beat. Then a person approves a storyboard of the whole film, sketched frame by frame, before any credit is spent.
Generate the score, voice and sound; build the page; render and mix. Then run the layout and motion audits and the voice, loudness and speech checks, and write the numbers down.
Decide; don't wait to be directed. A short ask is enough. Defaults cover length, voice, music, people and cut-downs, and each choice goes in the brief with its reason.
Borrow the client's eyes and ears. The agent cannot listen and may not see, so the user gets the creative package at the gate and the score finalists before the edit.
Before any credit is spent
The creative gate reviews the film on paper. Every failure is fixed before the first generation call, and the reviewer names what to cut.
Read directly from section 4 of the skill.
Measured, not guessed
Each technical gate is a number in the version's verification file. Passing them does not make a film good: the creative gate and both reviews decide that.
tools/asr_check.py).audit-hook.jsRecords every string and image the canvas draws, cut to masks, clips and coverslint.mjsCopy, type size, reading time, collisions, safe area, photo scale, optional contrastmotion.mjsStarts from rest and sudden speed changes outside marked bursts and cutspops.pySingle-frame pops and black segments in the rendered filmtts.pyVoices a line with the configured text-to-speech provider and logs the requestvoice_words.pyWord timing, level, voicing and pitch of each take; emphasis checks; spectrogramsvo_over_bed.pyVoice over music and effects, line by lineasr_check.pySpeech recognition on the final mix against the scriptextend_score.pyLengthens or rearranges a score by whole bars, with clean joinsfixture.htmlA five-second page with known problems, to try the page contract and the audit toolstools/README.md gives every command.
Bring your own voice
Name the provider, the voice and the model in the environment. Keys stay in environment variables, never in project files or chat. Every request is logged without its key, and nothing is retried on its own.
| Provider | SIZZLE_TTS_PROVIDER | Keys | SIZZLE_TTS_VOICE |
|---|---|---|---|
| ElevenLabs | elevenlabs | ELEVENLABS_API_KEY | a voice ID |
| OpenAI, or a compatible endpoint | openai | OPENAI_API_KEY; OPENAI_BASE_URL for another endpoint | a voice name |
| Azure AI Speech | azure | AZURE_SPEECH_KEY, AZURE_SPEECH_REGION | a voice name such as en-US-AvaMultilingualNeural |
| Google Cloud Text-to-Speech | google | GOOGLE_API_KEY | a voice name such as en-US-Chirp3-HD-Aoede |
| Any local engine or command line | command | SIZZLE_TTS_COMMAND | whatever the command expects |
Check the setup with python3 tools/tts.py --check. It reports which variables are set and never prints a key.
Bring it to your agent
Use the skill in a host that supports skills, such as Amplifier or Claude Code, or give its instructions to your agent with the brief and the source material.
Bring the audience, one proposition, source assets and a length. Start with a storyboard you can approve; production follows only after that approval and the creative gate.
Rendering and provider calls require production tools, configured access and an approved budget.
git clone https://github.com/michaeljabbour/amplifier-skill-sizzle.git
cd amplifier-skill-sizzle
python3 scripts/capability.py install --dest ~/.agents/skillsUse Git and Python 3.11+. Choose the skills directory your agent reads; ~/.agents/skills is one supported convention, not a universal setting. Existing conflicting copies are refused. The ZIP below is the alternative.
Use the sizzle skill to make a 45-second opener for [event] from the material in [folder]. The audience is [who], watching on [screen], with sound. Find the insight and the turn, write the film on paper, and show me the creative package before you generate anything. Voice it with my configured text-to-speech provider, and deliver a 15-second cut as well.
The bundle holds SKILL.md, the references/ lessons and the tools/ folder. Install it as a folder named sizzle in your host's skills directory.
No account, backend, model call or tracking on this site. Your host's capabilities and permissions still apply.
Keep references/ and tools/ beside the skill when installing it.