Back to the catalog

mulmocast

MulmoCast skills for Claude Code — create, narrate, and extend video presentations from any input

Open source Open in the app JSON README (API)

About

MulmoCast skills for Claude Code — create, narrate, and extend video presentations from any input

Details

Kind
Plugins
Topic
No topic detected
Publisher
receptron
Origin
marketplace
Category
ferramentas
Stars
1
Open pull requests
2
Last push
2026-09-03T07:11:58Z
Repository state
ativo
Language
TypeScript
License
MIT
Added
2026-08-30 01:48:58
Updated
2026-08-30 01:48:58
Origin id
receptron/mulmocast-claude-plugin/mulmocast

README

# mulmocast-claude-plugin

[Claude Code](https://claude.com/claude-code) plugin for [MulmoCast](https://github.com/receptron/mulmocast-cli) — AI-native multi-modal presentation platform.

## Skills

### `/mulmocast:mulmocast` (dispatcher)

Unified entry point that automatically detects input type and routes to the appropriate skill.

```
/mulmocast:mulmocast https://example.com/article    → routes to story
/mulmocast:mulmocast samples/presentation.pdf       → routes to narrate
/mulmocast:mulmocast samples/document.md            → routes to narrate
/mulmocast:mulmocast scripts/talk/talk.json         → routes to extend
/mulmocast:mulmocast AI trends in 2026              → routes to story
/mulmocast:mulmocast https://example.com illustrate → routes to illustrate
/mulmocast:mulmocast AI trends, illustrated         → routes to illustrate
```

### `/mulmocast:story`

Create high-quality MulmoScript (video presentations) from scratch through a structured multi-phase creative process:

1. **Research** — Fetch URLs, search topics, collect visual assets
2. **Structure** — Design beat outline with appropriate scale
3. **Narration** — Write compelling spoken narration
4. **Visual Design** — Create slide layouts with the Slide DSL (11 layouts, 12 content block types)
5. **Assembly** — Combine into MulmoScript JSON and generate movie

**Usage:**
```
/mulmocast:story https://example.com/article 日本語でmovie
/mulmocast:story AI trends in 2026, 5 slides, English
/mulmocast:story path/to/document.pdf
```

### `/mulmocast:illustrate`

Create MulmoScript presentations where every visual is an AI-generated image via `imagePrompt`. Uses a structured 5-phase process:

1. **Research** — Fetch URLs, search topics, gather information
2. **Structure** — Design beat outline with visual concepts
3. **Narration** — Write spoken narration that complements images
4. **Image Prompts** — Write detailed prompts for AI image generation with consistent Visual Brief
5. **Assembly** — Combine into MulmoScript JSON and generate movie

**Usage:**
```
/mulmocast:illustrate https://example.com/article
/mulmocast:illustrate AI trends in 2026, illustrated
/mulmocast:illustrate 宇宙の歴史をイラストで
```

### `/mulmocast:narrate`

Convert source files (PDF, PPTX, Markdown, Keynote) into narrated ExtendedMulmoScript with AI-generated narration and metadata.

- **Markdown files**: Uses `parse-md` → presentation plan → `assemble-extended` pipeline with intelligent beat allocation and variant support (detailed/short profiles)
- **PDF/PPTX/Keynote**: Uses `narrate --scaffold-only` → AI analysis → metadata generation

**Usage:**
```
/mulmocast:narrate samples/paper.pdf
/mulmocast:narrate samples/slides.pptx
/mulmocast:narrate samples/document.md
```

### `/mulmocast:extend`

Add metadata to an existing MulmoScript to create an ExtendedMulmoScript. The metadata enables AI features (summarize, query) via `mulmocast-preprocessor`.

**Usage:**
```
/mulmocast:extend scripts/my-talk/my-talk.json
/mulmocast:extend scripts/my-talk/my-talk.json --source samples/my-talk.pdf
```

### `/mulmocast:presentation`

Create presentation slides interactively through a hearing → preview → feedback loop. Builds html_tailwind-based rich slides with animation.

1. **Hearing** — Gather theme, audience, goals, duration, tone
2. **Section-by-section creation** — Build slides per section, preview with `mulmocast movie`, iterate on feedback
3. **Assembly** — Integrate all sections, select theme/BGM, final quality check

**Usage:**
```
/mulmocast:presentation MulmoCastの20分プレゼン
/mulmocast:presentation AI trends, 10 minutes, for engineers
```

### `/mulmocast:news-shorts`

Create YouTube Shorts news videos — 2-3 beats, 18-50 seconds, portrait format with imagePrompt + html_tailwind animation.

**Usage:**
```
/mulmocast:news-shorts https://example.com/breaking-news
```

### `/mulmocast:fact-shorts`

Create "Did you know?" YouTube Shorts — 2-beat loop structure (12-18 seconds).

### `/mulmocast:explainer-shorts`

Create "What is ___?" explainer YouTube Shorts — 3-beat structure (15-25 seconds).

### `/mulmocast:ranking-shorts`

Create "Top 3" countdown YouTube Shorts — 3-beat ranking format (18-25 seconds).

### `/mulmocast:versus-shorts`

Create "X vs Y" comparison YouTube Shorts — 3-beat split-screen format (18-25 seconds).

### `/mulmocast:youtube-upload`

Upload a video file to YouTube. Automatically detects Shorts-eligible videos (vertical, ≤60s) and adds `#Shorts` tag.

**Usage:**
```
/mulmocast:youtube-upload output/my-video/my-video_ja.mp4
/mulmocast:youtube-upload output/my-video/my-video_ja.mp4 "動画タイトル"
```

### `/mulmocast:vocab-chat`

Create a vocabulary learning chat video with messenger-style animated UI and voiceover narration.

**Usage:**
```
/mulmocast:vocab-chat layover
```

### `/mulmocast:vocab-lesson`

Create a vocabulary lesson video with multi-section structure (word display, examples, explanation, review with translation).

**Usage:**
```
/mulmocast:vocab-lesson serendipity
```

### `/mulmocast:conversation-chat`

Create a conversation practice chat video with speech bubble UI and character illustrations.

**Usage:**
```
/mulmocast:conversation-chat ordering coffee
```

### `/mulmocast:stroke-order`

Create a stroke order animation video using KanjiVG data. Supports hiragana, katakana, kanji, and Latin alphabet.

**Usage:**
```
/mulmocast:stroke-order あいうえお
```

## References

The `references/` directory contains design guides for the `/mulmocast:story` and `/mulmocast:presentation` skills:

| Reference | Description |
|-----------|-------------|
| `slide_dsl_reference.md` | Slide DSL layout and block specifications |
| `slide_patterns.md` | Design pattern examples (dense slides, charts, mermaid) |
| `html_animation_reference.md` | MulmoAnimation DSL API reference |
| `cinematic_patterns.md` | Cinematic theme recipes — 14 themes with BGM URLs |
| `image_prompt_reference.md` | Image prompt writing guide and Visual Brief template |

## Repository Structure

This repo is both a **Claude Code Plugin** and a local development workspace. See [docs/plugin-structure.md](./docs/plugin-structure.md) for details on the dual-mode setup (Plugin distribution + local `.claude/skills` symlink).

## Installation

### Step 1: Add marketplace

```bash
claude plugin marketplace add receptron/mulmocast-claude-plugin
```

### Step 2: Install plugin

```bash
claude plugin install mulmocast@mulmocast-plugins
```

### Local development (alternative)

```bash
claude --plugin-dir /path/to/mulmocast-claude-plugin
```

## Prerequisites

### Required

- **Node.js** 22+
- **ffmpeg** — for video/audio assembly
  ```bash
  brew install ffmpeg   # macOS
  ```
- **OPENAI_API_KEY** — for text-to-speech (default TTS provider)
- **npx @mulmocast/slide** — for source file conversion (`narrate`, `extend` skills)
- **npx mulmocast-preprocessor** — for ExtendedMulmoScript processing

### Optional (for additional features)

| Env variable | Purpose |
|---|---|
| `GEMINI_API_KEY` | Google Gemini image generation & TTS |
| `REPLICATE_API_TOKEN` | Replicate video generation |
| `ELEVENLABS_API_KEY` | ElevenLabs TTS |

Set these in a `.env` file in your project root.

See [MulmoCast CLI setup](https://github.com/receptron/mulmocast-cli#configuration) for full details.

## YouTube Tools

### Available Scripts

| Script | Description |
|--------|-------------|
| `scripts/yt-auth.mjs` | OAuth2 initial setup (one-time) |
| `scripts/yt-upload.mjs` | Upload video with auto-scheduling |
| `scripts/yt-video.mjs` | Check video info (multiple IDs) |
| `scripts/yt-update.mjs` | Update video (--public, --schedule, --description, --thumbnail) |
| `scripts/yt-stats.mjs` | Channel stats (--json, --topics, --shorts) |
| `scripts/yt-analyze.mjs` | Offline analysis (stdin or --file) |
| `scripts/yt-delete.mjs` | Delete a video |

Shared code is in `scripts/lib/youtube-client.mjs`.

> **Known limitation**: These scripts are designed to run from the plugin root directory (`node scripts/yt-*.mjs`). They resolve `.env` from `process.cwd()` and `googleapis` from the plugin's `node_modules/`. When this plugin is installed by other users via Claude Code, the scripts may not be directly executable from the user's project directory. A future improvement would be to publish them as a separate npm package or use `import.meta.url` for path resolution.

### Setup

The `/mulmocast:youtube-upload` skill requires YouTube Data API credentials. Follow these steps to set up.

### Step 1: Create a Google Cloud project

1. Go to [Google Cloud Console](https://console.cloud.google.com/)
2. Click **Select a project** → **New Project**
3. Enter a project name (e.g. `mulmocast-youtube`) and click **Create**

### Step 2: Enable YouTube Data API v3

1. In your project, go to **APIs & Services** → **Library**
2. Search for **YouTube Data API v3**
3. Click **Enable**

### Step 3: Create OAuth 2.0 credentials

1. Go to **APIs & Services** → **Credentials**
2. Click **Create Credentials** → **OAuth client ID**
3. If prompted, configure the **OAuth consent screen** first:
   - Choose **External** user type
   - Fill in app name, user support email, and developer contact email
   - Skip scopes — the auth script requests them automatically
   - Click **Save and Return**
4. Back on **Create OAuth client ID**:
   - Application type: **Desktop app**
   - Name: any name (e.g. `mulmocast-uploader`)
   - Click **Create**
5. Copy the **Client ID** and **Client Secret**

### Step 4: Add yourself as a test user

> **Important**: Without this step, authentication will fail with `Error 403: access_denied`.

1. Go to **APIs & Services** → **OAuth consent screen**
2. Click **Test users** → **Add users**
3. Enter your Google account email address (the one you will use to upload videos)
4. Click **Save**

### Step 5: Set environment variables

Add the credentials to your `.env` file in the plugin root:

```
YOUTUBE_CLIENT_ID=your_client_id_here
YOUTUBE_CLIENT_SECRET=your_client_secret_here
```

### Step 6: Obtain a refresh token

Run the auth script:

```bash
node scripts/yt-auth.mjs
```

1. A URL will be displayed — open it in your browser
2. Sign in with the Google account you added as a test user
3. Grant the requested permissions
4. The script outputs a refresh token — add it to `.env`:

```
YOUTUBE_REFRESH_TOKEN=your_refresh_token_here
```

### Step 7: Install dependencies

```bash
yarn install
```

### Step 8: Verify

Test with an unlisted upload:

```bash
node scripts/yt-upload.mjs \
  --file "output/your-video/video.mp4" \
  --title "Test Upload" \
  --privacy unlisted
```

> **Note**: While the OAuth app is in "Testing" status, only registered test users can authenticate, and uploaded videos may default to **private** regardless of the `--privacy` setting. To lift these restrictions, submit the app for Google's verification review in the OAuth consent screen settings.

## License

MIT

More