story — community mulmocast-cli, community, ide skills, Claude Code, Cursor, Windsurf

v1.0.0

About this Skill

AI-powered podcast & video generator.

receptron receptron
[450]
[77]
Updated: 4/20/2026

Killer-Skills Review

Decision support comes first. Repository text comes second.

Reference-Only Page Review Score: 3/11

This page remains useful for operators, but Killer-Skills treats it as reference material instead of a primary organic landing page.

Quality floor passed for review Locale and body language aligned
Review Score
3/11
Quality Score
65
Canonical Locale
en
Detected Body Locale
en

AI-powered podcast & video generator.

Core Value

AI-powered podcast & video generator.

Ideal Agent Persona

Suitable for operator workflows that need explicit guardrails before installation and execution.

Capabilities Granted for story

! Prerequisites & Limits

Why this page is reference-only

  • - The page lacks a strong recommendation layer.
  • - The page lacks concrete use-case guidance.
  • - The page lacks explicit limitations or caution signals.

Source Boundary

The section below is imported from the upstream repository and should be treated as secondary evidence. Use the Killer-Skills review above as the primary layer for fit, risk, and installation decisions.

After The Review

Decide The Next Action Before You Keep Reading Repository Material

Killer-Skills should not stop at opening repository instructions. It should help you decide whether to install this skill, when to cross-check against trusted collections, and when to move into workflow rollout.

Labs Demo

Browser Sandbox Environment

⚡️ Ready to unleash?

Experience this Agent in a zero-setup browser environment powered by WebContainers. No installation required.

Boot Container Sandbox

FAQ & Installation Steps

These questions and steps mirror the structured data on this page for better search understanding.

? Frequently Asked Questions

What is story?

AI-powered podcast & video generator.

How do I install story?

Run the command: npx killer-skills add receptron/mulmocast-cli/story. It works with Cursor, Windsurf, VS Code, Claude Code, and 19+ other IDEs.

Which IDEs are compatible with story?

This skill is compatible with Cursor, Windsurf, VS Code, Trae, Claude Code, OpenClaw, Aider, Codex, OpenCode, Goose, Cline, Roo Code, Kiro, Augment Code, Continue, GitHub Copilot, Sourcegraph Cody, and Amazon Q Developer. Use the Killer-Skills CLI for universal one-command installation.

How To Install

  1. 1. Open your terminal

    Open the terminal or command line in your project directory.

  2. 2. Run the install command

    Run: npx killer-skills add receptron/mulmocast-cli/story. The CLI will automatically detect your IDE or AI agent and configure the skill.

  3. 3. Start using the skill

    The skill is now active. Your AI agent can use story immediately in the current project.

! Reference-Only Mode

This page remains useful for installation and reference, but Killer-Skills no longer treats it as a primary indexable landing page. Read the review above before relying on the upstream repository instructions.

Upstream Repository Material

The section below is imported from the upstream repository and should be treated as secondary evidence. Use the Killer-Skills review above as the primary layer for fit, risk, and installation decisions.

Upstream Source

story

Install story, an AI agent skill for AI agent workflows and automation. Works with Claude Code, Cursor, and Windsurf with one-command setup.

SKILL.md
Readonly
Upstream Repository Material
The section below is imported from the upstream repository and should be treated as secondary evidence. Use the Killer-Skills review above as the primary layer for fit, risk, and installation decisions.
Supporting Evidence

/story — Structured MulmoScript Creation

Create compelling MulmoScript through a structured creative process. Present Topic Brief + Beat Outline + Narrations + Visual plan to the user, then assemble the final JSON.

Key principle: Separate what to say (narration) from how to show it (visuals). Never generate both simultaneously.


Phase 1: Research & Understanding

Determine the input source

Ask the user what they want to create content about. Inputs can be:

  • URL: Fetch and analyze the page content
  • Topic: Research with WebSearch
  • File: Read the provided file(s)
  • Freeform description: Work directly from the user's description

Web fetching strategy

Try WebFetch first. Only use Playwright MCP when WebFetch fails (403, paywalled, JS-heavy).

  1. WebFetch (default): Simple and sufficient for most public pages.
  2. Playwright MCP (fallback): browser_navigate + browser_snapshot. Close with browser_close after all browser operations (fetching + image collection).
  3. WebSearch (supplement): Gather additional context regardless of the primary fetch method.

If the page has pagination, fetch ALL pages before proceeding.

Conduct deep research

  • For URLs: Extract main arguments, key data points, quotes, and structure
  • For topics: Search 3-5 sources, cross-reference facts
  • For files: Analyze content, identify themes

Collect visual assets

During research, actively download real images. Real images > AI-generated for recognizable subjects.

Store in output/images/{scriptBasename}/:

bash
1mkdir -p output/images/{scriptBasename} 2curl -fL -o output/images/{scriptBasename}/{name}.jpg "URL"

If using Playwright, collect image URLs with browser_evaluate:

javascript
1() => Array.from(document.querySelectorAll('img')).filter(img => img.naturalWidth > 200).map(img => ({src: img.src, alt: img.alt || ''}))

Present Topic Brief for approval

text
1## Topic Brief 2 3**Subject**: [one line] 4**Target audience**: [who] 5**Tone**: [professional / conversational / energetic / serious] 6**Orientation**: [landscape (1280×720) / portrait (1080×1920)] 7**Key insights** (3-5): 81. ... 9 10**Suggested theme**: [corporate / pop / warm / creative / minimal / dark] 11**Collected images** (N found): 12- [description]: [local path]

Ask the user about orientation. Default to landscape (1280×720) for presentations and standard videos. Use portrait (1080×1920) for short-form content (TikTok, Reels, Shorts, Stories).

Theme-to-Content Matching

Default to light/bright themes. Dark theme is only for explicitly technical/developer content.

Content TypeThemeBackground
Business news, financial datacorporate (DEFAULT)Light
Pop culture, entertainmentpopLight
Education, tutorialswarmLight
Academic, researchminimalLight
Startups, designcreativeDark
Tech talks, developer contentdarkDark

Phase 2: Story Structure

Determine scale

Source lengthBeat countStructure
Short (1 article)3-8 beatsHOOK → SECTIONS → CLOSE
Medium (long article)8-15 beatsHOOK → (SECTION_INTRO → BEATS) × N → CLOSE
Long (report, multi-chapter)15-25 beatsHOOK → (CHAPTER → BEATS) × N → CLOSE

When user asks for condensed/few slides, aim for 3-5 dense beats.

YouTube Shorts constraint: When portrait orientation is selected for Shorts, limit to 3-5 beats with short narrations (1-2 sentences each) to keep total duration ≤ 60 seconds. Each beat typically produces ~8-12 seconds of audio.

Present Beat Outline for approval

text
1## Beat Outline (N beats) 2 3| # | Tag | Summary | 4|---|-----|---------| 5| 1 | HOOK | ... | 6| N | CLOSE | ... |

Phase 3: Narration Writing

Quality standards

GOOD narration: Opens with specific detail, uses sensory language, natural spoken rhythm, each beat advances the story.

BAD narration: Generic statements ("AI is changing the world"), listy recitation, robotic transitions.

Guidelines

  • Length: 2-4 sentences per beat (30-60 words)
  • Language: Match the lang field
  • Flow: Each beat should feel like a natural continuation

Present narrations for approval


Phase 4: Visual Design

Theme selection

Read the theme JSON from assets/slide_themes/{theme}.json and embed in slideParams.theme.

Color scheme discipline

Follow a restrained color palette. Too many colors creates visual noise.

  1. Pick 1 base color per presentation (usually primary): Use for headings, sidebars, badges, dividers. Creates visual unity.
  2. Add 1-2 highlight colors sparingly: danger/warning only for alarming data; success only for positive metrics. Target specific words or values, not entire sections.
  3. Section sidebars share the base color: Don't assign different colors to each sidebar — use primary for all. Differentiation comes from label text.
  4. Inline {color:text} is surgical: Highlight 1-2 key terms per bullet. Default text color handles the rest.
  5. Metrics encode meaning consistently: Green=positive, red=negative, primary=neutral. Don't use 4 colors for 4 metrics unless each encodes different meaning.

BAD (rainbow sidebars):

json
1{ "type": "section", "label": "A", "color": "primary" }, 2{ "type": "section", "label": "B", "color": "accent" }, 3{ "type": "section", "label": "C", "color": "warning" }

GOOD (unified base + surgical accent):

json
1{ "type": "section", "label": "A", "color": "primary" }, 2{ "type": "section", "label": "B", "color": "primary" }, 3{ "type": "section", "label": "C", "color": "primary" }

Then inside bullets: "Key point about {danger:critical risk} and normal context"

Slide density by beat count

Beat countDensityApproach
3-5 beatsMaximumPack each slide like a cheat sheet. Use split + multiple sections, nested bullets, tables, metrics. Every pixel should carry information.
6-10 beatsStandard3-5 bullet points per slide. Use split layout with image/chart in one panel and text in the other. Fill space with imageRef or callout blocks.
11+ beatsRelaxedFocus on one key point per slide. Generous whitespace. Use title/bigQuote for section breaks.

Fill space with visuals: In any density, if a panel has room, add imageRef, imagePrompt, chart, or mermaid. Never leave panels empty.

Layout selection guide

Content TypeRecommended Layout
Opening/closingtitle or bigQuote
Dense information (DEFAULT)split with content blocks
Numbers/KPIsstats or split with metric blocks
Steps/processcolumns or timeline
Compare/contrastcomparison
Data tablestable or split with table block

DSL reference and patterns

For layout/block specifications, Read slide_dsl_reference.md in this skill directory.

For design pattern examples (dense slides, charts, mermaid), Read slide_patterns.md in this skill directory.

Image embedding

Define images in imageParams.images, then reference with imageRef blocks in slide content:

json
1{ "type": "imageRef", "ref": "keyVisual", "alt": "Description", "fit": "contain" }

Path formula: From scripts/samples/ to output/images/ = ../../output/images/{basename}/{filename}.

For AI-generated images when no real counterpart exists, use imagePrompt in imageParams.images (object form — defines a named image for imageRef to reference):

json
1{ "type": "imagePrompt", "prompt": "Detailed description..." }

For image-only beats without slide layout, use imagePrompt as a beat-level string field (generates a standalone background image):

json
1{ "text": "Narration", "imagePrompt": "Detailed prompt..." }

Animated beats (html_tailwind animation)

For beats that benefit from motion — cinematic intros, opening crawls, data visualizations, 3D effects — use html_tailwind animation instead of static slides or imagePrompt.

Read docs/llm/html_animation_reference.md for the full API reference (MulmoAnimation DSL, interpolate, Easing, property types).

When to use animation

Content TypeVisual Mode
Data, charts, structured infoslide (default)
Photographic / illustrative imageryimagePrompt
Cinematic intros, text crawls, transitionshtml_tailwind animation
Data dashboards with animated countershtml_tailwind animation
3D card flips, reveals, code walkthroughshtml_tailwind animation

Animated beat structure

json
1{ 2 "image": { 3 "type": "html_tailwind", 4 "html": ["<div id='el' style='opacity:0'>...</div>"], 5 "script": [ 6 "const animation = new MulmoAnimation();", 7 "animation.animate('#el', { opacity: [0, 1], translateY: [30, 0] }, { start: 0, end: 0.5, easing: 'easeOut' });" 8 ], 9 "animation": true 10 } 11}

Key rules:

  • html: HTML markup with Tailwind CSS (no <script> tags). Set initial styles inline (e.g., style='opacity:0')
  • script: JavaScript code (no <script> tags). Use MulmoAnimation DSL or raw render() + interpolate()
  • animation: true (30fps) or { "fps": 15 } for custom fps
  • Do NOT set duration — it is auto-calculated from the audio length. Setting it explicitly causes audio/video desync. Only set duration for silent beats or fixed-length intros.
  • Name the MulmoAnimation instance animation to enable auto-render (no manual render() needed)
  • Use end: 'auto' for animations that span the entire beat duration

Mixing animated beats with slides

Animated beats can be freely mixed with slide beats and imagePrompt beats in the same script. When mixing, ensure slideParams.theme is present for any slide beats.

Present visual plan for approval


Phase 5: Assembly & Review

Select BGM

Choose background music from the mulmocast-media BGM catalog that matches the story mood:

BGMTitleMoodBest for
story001.mp3Whispered Melodysmooth, pianoCalm narratives, reflective stories
story002.mp3Rise and Shinetechno, inspiring, pianoMotivational, startup, tech innovation
story003.mp3Chasing the Sunsetpiano, inspiringUplifting stories, journeys, aspirations
story004.mp3Whispering Keysclassical, ambientAcademic, research, thoughtful content
story005.mp3Whisper of Ivorypiano solo, classicalElegant, formal, documentary
theme001.mp3Rise of the Flameclassical, emotionalEpic achievements, milestones, announcements
vibe001.mp3Let It Vibe!rap, dancePop culture, entertainment, energetic
olympic001.mp3Olympic-style Themeepic orchestral fanfareGrand openings, celebrations, competitions
morning001.mp3Morning Dancemorning, piano soloLifestyle, daily routines, light topics

URL pattern: https://github.com/receptron/mulmocast-media/raw/refs/heads/main/bgms/{name}

Select the BGM that best matches the tone from Phase 1's Topic Brief, and add it to audioParams.

Combine narrations + visuals into MulmoScript JSON

Note: The template below shows commonly used beat fields. If you need a field not listed here, run npx mulmo tool schema to verify it exists in the schema before adding it. The beat schema is strict — unrecognized fields will cause validation errors.

json
1{ 2 "$mulmocast": { "version": "1.1" }, 3 "lang": "en", 4 "canvasSize": { "width": 1280, "height": 720 }, // portrait: { "width": 1080, "height": 1920 } 5 "title": "Title", 6 "description": "Brief description", 7 "references": [{ "url": "...", "title": "...", "type": "article" }], 8 "speechParams": { "speakers": { "Presenter": { "voiceId": "shimmer" } } }, 9 "audioParams": { 10 "bgm": { "kind": "url", "url": "https://github.com/receptron/mulmocast-media/raw/refs/heads/main/bgms/story001.mp3" }, 11 "bgmVolume": 0.15 12 }, 13 "slideParams": { "theme": { } }, 14 "imageParams": { "provider": "google", "images": { } }, 15 "beats": [ 16 { 17 "text": "Narration", 18 "speaker": "Presenter", 19 "image": { 20 "type": "slide", 21 "slide": { "layout": "...", "..." : "..." }, 22 "reference": "Source: ... (optional)" 23 } 24 } 25 ] 26}

Add reference to data-citing beats

For beats showing statistics or research findings, add "reference": "Source: ..." to the image object.

Quality checklist

  1. Hook test: Does beat 1 grab attention?
  2. Density test: Does every slide match the target density for its beat count?
  3. Specificity test: Replace vague statements with concrete numbers, names, examples.
  4. Visual variety: At least 2-3 different layout types used.
  5. Visual-narration alignment: Each visual directly supports its narration.
  6. Image check: Real images used for recognizable subjects; AI-generated only for abstract concepts.
  7. Schema compliance: Version "1.1", proper beat structure.

Write the file and present output

Generate the movie directly — yarn movie automatically generates images and audio as well, so separate yarn images / yarn audio steps are unnecessary.

bash
1yarn movie --grouped <filename>
text
1Wrote: <filename> 2 3Summary: 4- N beats, [theme] theme 5- Key topics: [brief list] 6 7Output: output/video/<basename>.mp4

Related Skills

Looking for an alternative to story or another community skill for your workflow? Explore these related open-source skills.

View All

openclaw-release-maintainer

Logo of openclaw
openclaw

Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

333.8k
0
AI

widget-generator

Logo of f
f

Generate customizable widget plugins for the prompts.chat feed system

149.6k
0
AI

flags

Logo of vercel
vercel

The React Framework

138.4k
0
Browser

pr-review

Logo of pytorch
pytorch

Tensors and Dynamic neural networks in Python with strong GPU acceleration

98.6k
0
Developer