{
  "markdown": "# mulmocast-claude-plugin\n\n[Claude Code](https://claude.com/claude-code) plugin for [MulmoCast](https://github.com/receptron/mulmocast-cli) — AI-native multi-modal presentation platform.\n\n## Skills\n\n### `/mulmocast:mulmocast` (dispatcher)\n\nUnified entry point that automatically detects input type and routes to the appropriate skill.\n\n```\n/mulmocast:mulmocast https://example.com/article    → routes to story\n/mulmocast:mulmocast samples/presentation.pdf       → routes to narrate\n/mulmocast:mulmocast samples/document.md            → routes to narrate\n/mulmocast:mulmocast scripts/talk/talk.json         → routes to extend\n/mulmocast:mulmocast AI trends in 2026              → routes to story\n/mulmocast:mulmocast https://example.com illustrate → routes to illustrate\n/mulmocast:mulmocast AI trends, illustrated         → routes to illustrate\n```\n\n### `/mulmocast:story`\n\nCreate high-quality MulmoScript (video presentations) from scratch through a structured multi-phase creative process:\n\n1. **Research** — Fetch URLs, search topics, collect visual assets\n2. **Structure** — Design beat outline with appropriate scale\n3. **Narration** — Write compelling spoken narration\n4. **Visual Design** — Create slide layouts with the Slide DSL (11 layouts, 12 content block types)\n5. **Assembly** — Combine into MulmoScript JSON and generate movie\n\n**Usage:**\n```\n/mulmocast:story https://example.com/article 日本語でmovie\n/mulmocast:story AI trends in 2026, 5 slides, English\n/mulmocast:story path/to/document.pdf\n```\n\n### `/mulmocast:illustrate`\n\nCreate MulmoScript presentations where every visual is an AI-generated image via `imagePrompt`. Uses a structured 5-phase process:\n\n1. **Research** — Fetch URLs, search topics, gather information\n2. **Structure** — Design beat outline with visual concepts\n3. **Narration** — Write spoken narration that complements images\n4. **Image Prompts** — Write detailed prompts for AI image generation with consistent Visual Brief\n5. **Assembly** — Combine into MulmoScript JSON and generate movie\n\n**Usage:**\n```\n/mulmocast:illustrate https://example.com/article\n/mulmocast:illustrate AI trends in 2026, illustrated\n/mulmocast:illustrate 宇宙の歴史をイラストで\n```\n\n### `/mulmocast:narrate`\n\nConvert source files (PDF, PPTX, Markdown, Keynote) into narrated ExtendedMulmoScript with AI-generated narration and metadata.\n\n- **Markdown files**: Uses `parse-md` → presentation plan → `assemble-extended` pipeline with intelligent beat allocation and variant support (detailed/short profiles)\n- **PDF/PPTX/Keynote**: Uses `narrate --scaffold-only` → AI analysis → metadata generation\n\n**Usage:**\n```\n/mulmocast:narrate samples/paper.pdf\n/mulmocast:narrate samples/slides.pptx\n/mulmocast:narrate samples/document.md\n```\n\n### `/mulmocast:extend`\n\nAdd metadata to an existing MulmoScript to create an ExtendedMulmoScript. The metadata enables AI features (summarize, query) via `mulmocast-preprocessor`.\n\n**Usage:**\n```\n/mulmocast:extend scripts/my-talk/my-talk.json\n/mulmocast:extend scripts/my-talk/my-talk.json --source samples/my-talk.pdf\n```\n\n### `/mulmocast:presentation`\n\nCreate presentation slides interactively through a hearing → preview → feedback loop. Builds html_tailwind-based rich slides with animation.\n\n1. **Hearing** — Gather theme, audience, goals, duration, tone\n2. **Section-by-section creation** — Build slides per section, preview with `mulmocast movie`, iterate on feedback\n3. **Assembly** — Integrate all sections, select theme/BGM, final quality check\n\n**Usage:**\n```\n/mulmocast:presentation MulmoCastの20分プレゼン\n/mulmocast:presentation AI trends, 10 minutes, for engineers\n```\n\n### `/mulmocast:news-shorts`\n\nCreate YouTube Shorts news videos — 2-3 beats, 18-50 seconds, portrait format with imagePrompt + html_tailwind animation.\n\n**Usage:**\n```\n/mulmocast:news-shorts https://example.com/breaking-news\n```\n\n### `/mulmocast:fact-shorts`\n\nCreate \"Did you know?\" YouTube Shorts — 2-beat loop structure (12-18 seconds).\n\n### `/mulmocast:explainer-shorts`\n\nCreate \"What is ___?\" explainer YouTube Shorts — 3-beat structure (15-25 seconds).\n\n### `/mulmocast:ranking-shorts`\n\nCreate \"Top 3\" countdown YouTube Shorts — 3-beat ranking format (18-25 seconds).\n\n### `/mulmocast:versus-shorts`\n\nCreate \"X vs Y\" comparison YouTube Shorts — 3-beat split-screen format (18-25 seconds).\n\n### `/mulmocast:youtube-upload`\n\nUpload a video file to YouTube. Automatically detects Shorts-eligible videos (vertical, ≤60s) and adds `#Shorts` tag.\n\n**Usage:**\n```\n/mulmocast:youtube-upload output/my-video/my-video_ja.mp4\n/mulmocast:youtube-upload output/my-video/my-video_ja.mp4 \"動画タイトル\"\n```\n\n### `/mulmocast:vocab-chat`\n\nCreate a vocabulary learning chat video with messenger-style animated UI and voiceover narration.\n\n**Usage:**\n```\n/mulmocast:vocab-chat layover\n```\n\n### `/mulmocast:vocab-lesson`\n\nCreate a vocabulary lesson video with multi-section structure (word display, examples, explanation, review with translation).\n\n**Usage:**\n```\n/mulmocast:vocab-lesson serendipity\n```\n\n### `/mulmocast:conversation-chat`\n\nCreate a conversation practice chat video with speech bubble UI and character illustrations.\n\n**Usage:**\n```\n/mulmocast:conversation-chat ordering coffee\n```\n\n### `/mulmocast:stroke-order`\n\nCreate a stroke order animation video using KanjiVG data. Supports hiragana, katakana, kanji, and Latin alphabet.\n\n**Usage:**\n```\n/mulmocast:stroke-order あいうえお\n```\n\n## References\n\nThe `references/` directory contains design guides for the `/mulmocast:story` and `/mulmocast:presentation` skills:\n\n| Reference | Description |\n|-----------|-------------|\n| `slide_dsl_reference.md` | Slide DSL layout and block specifications |\n| `slide_patterns.md` | Design pattern examples (dense slides, charts, mermaid) |\n| `html_animation_reference.md` | MulmoAnimation DSL API reference |\n| `cinematic_patterns.md` | Cinematic theme recipes — 14 themes with BGM URLs |\n| `image_prompt_reference.md` | Image prompt writing guide and Visual Brief template |\n\n## Repository Structure\n\nThis 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).\n\n## Installation\n\n### Step 1: Add marketplace\n\n```bash\nclaude plugin marketplace add receptron/mulmocast-claude-plugin\n```\n\n### Step 2: Install plugin\n\n```bash\nclaude plugin install mulmocast@mulmocast-plugins\n```\n\n### Local development (alternative)\n\n```bash\nclaude --plugin-dir /path/to/mulmocast-claude-plugin\n```\n\n## Prerequisites\n\n### Required\n\n- **Node.js** 22+\n- **ffmpeg** — for video/audio assembly\n  ```bash\n  brew install ffmpeg   # macOS\n  ```\n- **OPENAI_API_KEY** — for text-to-speech (default TTS provider)\n- **npx @mulmocast/slide** — for source file conversion (`narrate`, `extend` skills)\n- **npx mulmocast-preprocessor** — for ExtendedMulmoScript processing\n\n### Optional (for additional features)\n\n| Env variable | Purpose |\n|---|---|\n| `GEMINI_API_KEY` | Google Gemini image generation & TTS |\n| `REPLICATE_API_TOKEN` | Replicate video generation |\n| `ELEVENLABS_API_KEY` | ElevenLabs TTS |\n\nSet these in a `.env` file in your project root.\n\nSee [MulmoCast CLI setup](https://github.com/receptron/mulmocast-cli#configuration) for full details.\n\n## YouTube Tools\n\n### Available Scripts\n\n| Script | Description |\n|--------|-------------|\n| `scripts/yt-auth.mjs` | OAuth2 initial setup (one-time) |\n| `scripts/yt-upload.mjs` | Upload video with auto-scheduling |\n| `scripts/yt-video.mjs` | Check video info (multiple IDs) |\n| `scripts/yt-update.mjs` | Update video (--public, --schedule, --description, --thumbnail) |\n| `scripts/yt-stats.mjs` | Channel stats (--json, --topics, --shorts) |\n| `scripts/yt-analyze.mjs` | Offline analysis (stdin or --file) |\n| `scripts/yt-delete.mjs` | Delete a video |\n\nShared code is in `scripts/lib/youtube-client.mjs`.\n\n> **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.\n\n### Setup\n\nThe `/mulmocast:youtube-upload` skill requires YouTube Data API credentials. Follow these steps to set up.\n\n### Step 1: Create a Google Cloud project\n\n1. Go to [Google Cloud Console](https://console.cloud.google.com/)\n2. Click **Select a project** → **New Project**\n3. Enter a project name (e.g. `mulmocast-youtube`) and click **Create**\n\n### Step 2: Enable YouTube Data API v3\n\n1. In your project, go to **APIs & Services** → **Library**\n2. Search for **YouTube Data API v3**\n3. Click **Enable**\n\n### Step 3: Create OAuth 2.0 credentials\n\n1. Go to **APIs & Services** → **Credentials**\n2. Click **Create Credentials** → **OAuth client ID**\n3. If prompted, configure the **OAuth consent screen** first:\n   - Choose **External** user type\n   - Fill in app name, user support email, and developer contact email\n   - Skip scopes — the auth script requests them automatically\n   - Click **Save and Return**\n4. Back on **Create OAuth client ID**:\n   - Application type: **Desktop app**\n   - Name: any name (e.g. `mulmocast-uploader`)\n   - Click **Create**\n5. Copy the **Client ID** and **Client Secret**\n\n### Step 4: Add yourself as a test user\n\n> **Important**: Without this step, authentication will fail with `Error 403: access_denied`.\n\n1. Go to **APIs & Services** → **OAuth consent screen**\n2. Click **Test users** → **Add users**\n3. Enter your Google account email address (the one you will use to upload videos)\n4. Click **Save**\n\n### Step 5: Set environment variables\n\nAdd the credentials to your `.env` file in the plugin root:\n\n```\nYOUTUBE_CLIENT_ID=your_client_id_here\nYOUTUBE_CLIENT_SECRET=your_client_secret_here\n```\n\n### Step 6: Obtain a refresh token\n\nRun the auth script:\n\n```bash\nnode scripts/yt-auth.mjs\n```\n\n1. A URL will be displayed — open it in your browser\n2. Sign in with the Google account you added as a test user\n3. Grant the requested permissions\n4. The script outputs a refresh token — add it to `.env`:\n\n```\nYOUTUBE_REFRESH_TOKEN=your_refresh_token_here\n```\n\n### Step 7: Install dependencies\n\n```bash\nyarn install\n```\n\n### Step 8: Verify\n\nTest with an unlisted upload:\n\n```bash\nnode scripts/yt-upload.mjs \\\n  --file \"output/your-video/video.mp4\" \\\n  --title \"Test Upload\" \\\n  --privacy unlisted\n```\n\n> **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.\n\n## License\n\nMIT\n",
  "bytes": 10918,
  "sha": "9bf63727f2777091b069871b7252679d93c079e6b3ce1e1f9ff04a791d40364e",
  "repo_slug": "receptron/mulmocast-claude-plugin",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_receptron_mulmocast_claude_plugin_mulmoc_7b606e7b/readme"
}