Skip to content
cccskills
FreePublished on GitHubEnglish overview

StoryFilm

Turn a story in Markdown into an animated reading film. The skill plans consistent characters and settings, creates one painting for each story beat, adds Fish Audio narration and timed captions, then renders and verifies the film.

OriginalShow the original description

Turns a story markdown file into a narrated animated film, a new reading format where the listener is read to and sees the story as it is told: beats from paragraphs, a bible so every character and place looks the same in every shot, one painting per beat in one style, Fish Audio narration in the story's voice with word timings, a HyperFrames film with camera moves, dissolves, scene breaks, a caption line and title cards, read back and verified. USE WHEN animated reading, story film, film this story, animate this story, illustrated audiobook, narrated story video, turn this story into a movie, storyboard this story, paint the shots, render the story film. NOT FOR the principal's own recordings, argument-first video essays, one-off motion graphics (Remotion), single illustrations (Art), writing the story itself (WriteStory).

danielmiessler/LifeOS19,635 stars(GitHub 19,635 + cccskills 0)

Run score Not tested

See how to install

Good for

  • Making an animated reading from a story
  • Turning a story file into a narrated video
  • Planning consistent characters and locations across shots
  • Repainting a scene and rerendering the film

Overview

What it does

StoryFilm turns a story written in Markdown into an animated film that combines narration and visuals. It divides the text into story beats, prepares reference material to keep characters and places consistent, and creates one painting for each beat. Fish Audio provides narration suited to the story. The film includes captions timed to the audio, camera movement, scene transitions, and title cards. The completed video is reviewed for issues such as mismatched images, captions, or audio. You can review the storyboard before production or ask the skill to proceed straight through.

When it helps

Use it when you want readers to listen to a story while watching its scenes, or when you need a video whose images share a consistent look and character designs.

Example requests

  • “Turn this story file into an animated film.”
  • “Scene 12 looks like a restaurant. Please revise the image.”
  • “Update the character’s age and face details, then redraw the relevant scenes.”

Notes

First-time setup requires Fish Audio and Google keys, as well as tools such as ffmpeg.

This overview was written by AI (OpenAI Codex) from the public SKILL.md. Check the original below for the exact behavior.

Document check

AI checked the SKILL.md for operations that need care and for setup requirements. The score comes only from actually running the skill (hands-on test).

SafetyAre sending data, deleting files, and running commands disclosed?
AGoodThere is no upload or publishing path; delivery requires a passing critique and an explicit command.
Easy setupDoes it need few tools or API keys, and are they documented?
BPartly lackingFish Audio and Google keys plus `ffmpeg` are required; `Setup.md` is identified for setup.

Not counted in the score. Rated by AI (OpenAI Codex) as of Oct 28, 2026. Treat it as a guide and read the original before installing.

Disagree? Request a re-evaluation

Tell us which point is wrong and why. No login needed. We will check it against the SKILL.md, redo the evaluation, and show the result here.

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

Files included (26)

  • SKILL.md7.8 KB
  • Intents/Full.md4.7 KB
  • Intents/Produce.md10.8 KB
  • Intents/Storyboard.md4.6 KB
  • References/StoryboardSchema.md2.0 KB
  • Setup.md4.7 KB
  • Tools/.gitignore14 B
  • Tools/Build.ts6.6 KB
  • Tools/bun.lock9.1 KB
  • Tools/Characters.ts5.0 KB
  • Tools/FilmComposition.ts8.0 KB
  • Tools/FilmRuntime.ts4.2 KB
  • Tools/FilmTimeline.ts12.7 KB
  • Tools/Intake.ts5.0 KB
  • Tools/Lib.ts16.8 KB
  • Tools/Motion.ts3.0 KB
  • Tools/Narrate.ts22.8 KB
  • Tools/package.json642 B
  • Tools/Paint.ts10.2 KB
  • Tools/Run.ts11.2 KB
  • Tools/SerifFont.ts6.8 KB
  • Tools/Setup.ts3.1 KB
  • Tools/Shots.ts5.4 KB
  • Tools/StoryboardLint.ts4.9 KB
  • Tools/tsconfig.json400 B
  • Tools/Verify.ts24.0 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

StoryFilm

A story goes in; a verified film of it comes out. One creative stage (the storyboard) and a deterministic tail (bible, shots, narration, render, verification, critique, delivery).

Ideal State

  • A story file becomes a film a viewer accepts as one made thing: the same faces first frame to last, each painting fitting its beat, the caption in step with the voice.
  • Every film is read back before anyone sees it: Out/verify.json green and complete, the Assay video eval set (video-eval) passed in the verify stage as Intents/Produce.md declares it, the review sheets looked at, and the ArtDirection critique passed on the exact bytes delivered.
  • Nothing reaches the principal as a first draft: the film and its sheets land in the downloads folder only through Run.ts --deliver, after a passing critique and a Proof receipt.
  • Expensive stages run once per change: the storyboard is reviewed and linted before any painting, and every later stage is hash-cached so an edit redoes only what it touched.
  • Nothing leaves review: the skill has no upload or publish path.

Intent Routing

IntentTriggerFile
Full"film this story", "animated reading of X", "turn this story into a movie", anything that starts from a story fileIntents/Full.md
Storyboard"storyboard this", "write the bible", "plan the shots", a redo of the creative stage after intakeIntents/Storyboard.md
Produce"paint the shots", "render it", "re-render after an edit", "verify the film"Intents/Produce.md
FileRead when
References/StoryboardSchema.mdwriting or editing Storyboard.json
ISA.mdchanging what the skill does: its ideal state, criteria and decisions
Setup.mdfirst-time setup: Fish Audio and Google keys, ffmpeg and the other programs, optional Config.json

Full is Intake → Storyboard → Produce. The storyboard is the review checkpoint when the principal wants one: it is cheap to change and forty paintings are not. Skip it by saying so ("straight through").

Run Layout

<run>/
  run.json  Beats.json  Storyboard.json  pronunciations.json (optional)
  Bible/<id>.<hash>.png        style plate + reference sheets
  Shots/<beat>.<hash>.png      one painting per beat · contact-sheet.png
  Narration/<beat>.<hash>.{mp3,align.json,wav}  narration.wav  timeline.json
  Out/composition/             the HyperFrames project Build.ts writes (index.html, plan.js, film.js, shots/, narration.wav)
  Out/film.mp4  render.json  render.log  verify.json  Critique.json  frames/  caption-check/  review/{contact-sheet,motion-strip}.png

Data & Config

First-time setup (accounts, keys, files to fill in): Setup.md.

  • Voice: --voice, else the story's audio_voice frontmatter, else the DA's main voice from LIFEOS_CONFIG.toml. The value is a role (main, presenter, principal), fish:<reference id>, or the voice_id of a [da.voices.*] profile that has a fish_reference_id; any other id stops with an error naming where to add one. Narration is Fish Audio Drama 3 (FishTTS.ts) and takes no model flag; the DA's own voice reads at its configured fish_speed, any other voice at natural pace. Key: FISH_API_KEY in the env file; the principal role also needs FISH_PRINCIPAL_VOICE_ID.
  • Images: the geminiImage lane in LIFEOS/TOOLS/models.ts on GOOGLE_API_KEY, 16:9 at 2K, reference images attached per shot.
  • LIFEOS/USER/CUSTOMIZATIONS/SKILLS/StoryFilm/Config.json: runsRoot (default ~/StoryFilms; LIFEOS_STORYFILM_DIR overrides), fonts.serif / fonts.serifItalic (paths to licensed faces; path.ttc#<index> names one face of a collection), embedded into each composition as @font-face data. No font configured means the default serif, Source Serif 4 roman and italic (SIL Open Font License), installed by Setup.ts as the pinned @fontsource/source-serif-4 dependency.
  • LIFEOS/USER/CUSTOMIZATIONS/SKILLS/StoryFilm/PREFERENCES.md: the principal's casting and register taste for the Storyboard intent. Config.json provingRun names the run slug the skill ISA's proving-run checks use (Setup.ts --proving-run prints it).
  • Pronunciations: USER/PRINCIPAL/PRONUNCIATIONS.json plus a per-run pronunciations.json, applied to spoken text only; the caption shows the story's words.
  • Run.ts refuses a run dir under the config tree or the user-data repo (symlinks dereferenced first).

Gotchas

  • The image model copies whatever is in the style plate, including things that are not style (2026-09-17, first run). A violet dot in the plate put a stray bead on a character sheet. Keep the plate's subject empty (the prompt asks for an empty interior) and say in each bible desc what the character must NOT carry.
  • The story file can change under a run. Intake reads the frontmatter once; a voice or prose edit in the source after intake is invisible until Intake.ts runs again (2026-09-17: the narrator was re-cast in the story file after the first intake, and the first film went out in the old voice). Re-run Intake before any re-narration and diff the beat count.
  • bun test <bare path> drops child-process output (Bun 1.3.6). Always bun test ./skills/StoryFilm/Tools.

Examples

Example 1: a story file to a film

User: "Turn the story at stories/the-lighthouse.md into an animated reading"
→ Full: Intake writes Beats.json; the Storyboard intent writes the bible and one shot per beat; lint exits 0
→ Run.ts: bible painted, shots painted (4 at a time, cached by hash), narration synthesized, film rendered, verify.json green, review sheets written
→ ArtDirection critique of Out/film.mp4 passes into Out/Critique.json; Run.ts --from sheet --deliver lands the film and sheets in the downloads folder

Example 2: one painting is wrong

User: "The kitchen in beat 12 looks like a restaurant — fix it"
→ Edit that shot's prompt in Storyboard.json (and the place's bible desc if the sheet is the problem)
→ Run.ts --from lint --to shots repaints that one beat (everything else is cached); Run.ts --from build re-renders and re-verifies

Example 3: a character drifts

User: "Ana looks forty in half the shots"
→ Tighten her bible desc (age, face), Characters.ts --only ana repaints her sheet, Shots.ts --force repaints the shots that carry her ref (their hash changed with the sheet)

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

AnnualReports

FreeSummary

Find and fetch vendor cybersecurity reports, then compare their findings on topics such as ransomware, breaches, cloud security, and AI. Analyses identify the reports consulted and cite each figure by vendor, year, and report, including where sources disagree.

  • Find reports in a cybersecurity topic area
  • Fetch a specific vendor report
  • Compare ransomware findings across reports
danielmiessler/LifeOS19.6KUpdated Oct 28, 2026

Compare a component's own design needs with the goals of the larger system through three structured passes. The result identifies conflicts, recommends an appropriate scope, and assesses whether the proposed design fits the whole.

  • Choosing between a service, a library, and inline code
  • Comparing feature requests with product goals
  • Checking how new components fit an existing system
danielmiessler/LifeOS19.6KUpdated Oct 28, 2026

Aphorisms

FreeSummary

Find quotes that fit a text’s themes, with attribution and a short reason for each suggestion. Add sourced quotes, research thinkers, and organize a quote collection by theme and usage history to avoid repetition.

  • Finding a fitting quote for a newsletter
  • Saving sourced quotes without duplicates
  • Researching a thinker’s quotes by theme
danielmiessler/LifeOS19.6KUpdated Oct 28, 2026

Art

FreeSummary

Create blog illustrations, technical diagrams, comparisons, comics, and icons through workflows tailored to each format. The skill guides composition, color, and model selection, then stages generated images for review before they are used in a project.

  • Creating blog header illustrations
  • Explaining a system with a technical diagram
  • Visualizing comparisons and timelines
danielmiessler/LifeOS19.6KUpdated Oct 28, 2026

ArtDirection

FreeSummary

Assess the visual quality of images, films, slides, and site captures against a brief and craft criteria. Two vision judges score the work and rank defects, guiding bounded revision; delivery is gated on a passing critique, with human calibration labels recorded separately.

  • Reviewing a render and listing the most important visual defects
  • Iterating on a film or slide deck until it meets a defined bar
  • Checking whether an image reads as professional
danielmiessler/LifeOS19.6KUpdated Oct 28, 2026

ArXiv

FreeSummary

Find arXiv papers by topic, research category, or paper ID. Retrieve titles, authors, abstracts, and links, check new submissions, and add AlphaXiv's AI-generated overviews when available to help decide which papers to read.

  • Checking new AI and machine learning papers
  • Finding papers on a specific research topic
  • Looking up a paper by its ID or arXiv URL
danielmiessler/LifeOS19.6KUpdated Oct 28, 2026

See all skills by danielmiessler

Report a problem with this skill