Skip to content

Commit 04ad593

Browse files
Add framecraft demo video generator plugin (#506)
* Add framecraft demo video generator plugin * fix: address review feedback for framecraft plugin - Revert hand-edited marketplace.json (auto-generated, kept extended.json) - Fix allowed-tools: use valid tool names (Bash not Bash(uv:*)) - Add required sections: Instructions, Error Handling, Examples, Resources - Add MIT LICENSE file to plugin directory - Fix install docs to use marketplace slug (@claude-code-plugins-plus) - Use full edge-tts voice names (en-US-AndrewNeural) Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]> * fix: address all maintainer feedback for framecraft plugin (#506) **Must-fix items:** - Update author format to standard 'Name <email>' in plugin.json and SKILL.md - Fix README install instructions (correct repo path: jeremylongshore/claude-code-plugins) - Add Permissions section documenting why scoped Bash access is needed **Network dependency:** - Document Edge TTS requires internet connectivity (no offline fallback) **Details:** - Author now: 'Srinivas Vaddisrinivas <[email protected]>' - Install path: 'claude plugin marketplace add jeremylongshore/claude-code-plugins' - Permissions: Bash scopes documented (uv, ffmpeg, python) Co-Authored-By: Claude Haiku 4.5 <[email protected]> * fix: correct email address to [email protected] --------- Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]>
1 parent bb995bc commit 04ad593

6 files changed

Lines changed: 209 additions & 55 deletions

File tree

.claude-plugin/marketplace.extended.json

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -8199,7 +8199,7 @@
81998199
{
82008200
"name": "b12-claude-plugin",
82018201
"source": "./plugins/community/b12-claude-plugin",
8202-
"description": "B12 Website Generator \u2014 an official plugin by B12.io. Ships a single auto-activating skill (website-generator) that collects a business name and description, then generates a production-ready B12 website signup link instantly.",
8202+
"description": "B12 Website Generator an official plugin by B12.io. Ships a single auto-activating skill (website-generator) that collects a business name and description, then generates a production-ready B12 website signup link instantly.",
82038203
"version": "1.0.0",
82048204
"category": "community",
82058205
"keywords": [
@@ -11036,7 +11036,7 @@
1103611036
{
1103711037
"name": "pr-to-spec",
1103811038
"source": "./plugins/mcp/pr-to-spec",
11039-
"description": "The flight envelope for agentic coding \u2014 convert PRs and local diffs into structured, agent-consumable specs with intent drift detection",
11039+
"description": "The flight envelope for agentic coding convert PRs and local diffs into structured, agent-consumable specs with intent drift detection",
1104011040
"version": "0.8.0",
1104111041
"category": "code-quality",
1104211042
"repository": "https://github.com/jeremylongshore/pr-to-prompt",
@@ -11059,7 +11059,7 @@
1105911059
{
1106011060
"name": "slack-channel",
1106111061
"source": "./plugins/mcp/slack-channel",
11062-
"description": "Two-way Slack channel for Claude Code \u2014 chat from Slack DMs and channels via Socket Mode",
11062+
"description": "Two-way Slack channel for Claude Code chat from Slack DMs and channels via Socket Mode",
1106311063
"version": "0.1.0",
1106411064
"category": "productivity",
1106511065
"keywords": [
@@ -11088,7 +11088,7 @@
1108811088
{
1108911089
"name": "x-bug-triage-plugin",
1109011090
"source": "./plugins/mcp/x-bug-triage",
11091-
"description": "Closed-loop bug triage: X complaints \u2192 clusters \u2192 repo evidence \u2192 owner routing \u2192 Slack review \u2192 filed issues",
11091+
"description": "Closed-loop bug triage: X complaints clusters repo evidence owner routing Slack review filed issues",
1109211092
"version": "0.3.0",
1109311093
"category": "devops",
1109411094
"author": {
@@ -11115,35 +11115,27 @@
1111511115
}
1111611116
},
1111711117
{
11118-
"name": "general-legal-assistant",
11119-
"source": "./plugins/business-tools/general-legal-assistant",
11120-
"description": "AI-powered contract review, risk analysis, document generation, and compliance auditing with 12 skills and 5 parallel agents",
11118+
"name": "framecraft",
11119+
"source": "./plugins/community/framecraft",
11120+
"description": "Generate polished demo videos from a single prompt. Orchestrates Playwright, FFmpeg, and Edge TTS MCP servers to produce 1920x1080 videos with voiceover, transitions, and CSS animations.",
1112111121
"version": "1.0.0",
11122-
"category": "business-tools",
11123-
"author": {
11124-
"name": "Intent Solutions",
11125-
"email": "[email protected]"
11126-
},
11122+
"category": "community",
1112711123
"keywords": [
11128-
"legal",
11129-
"contracts",
11130-
"nda",
11131-
"compliance",
11132-
"gdpr",
11133-
"ccpa",
11134-
"risk-analysis",
11135-
"terms-of-service",
11136-
"privacy-policy"
11124+
"demo-video",
11125+
"video-generation",
11126+
"playwright",
11127+
"ffmpeg",
11128+
"edge-tts",
11129+
"mcp"
1113711130
],
11138-
"repository": "https://github.com/jeremylongshore/claude-code-plugins-plus-skills",
11139-
"homepage": "https://tonsofskills.com",
11140-
"license": "MIT",
11141-
"featured": false,
11142-
"pricing": "free",
11131+
"author": {
11132+
"name": "vaddisrinivas",
11133+
"url": "https://github.com/vaddisrinivas"
11134+
},
1114311135
"components": {
11144-
"skills": 12,
11145-
"agents": 5
11146-
}
11136+
"skills": 1
11137+
},
11138+
"featured": false
1114711139
}
1114811140
]
11149-
}
11141+
}

.claude-plugin/marketplace.json

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8025,31 +8025,6 @@
80258025
"repository": "https://github.com/jeremylongshore/x-bug-triage-plugin",
80268026
"homepage": "https://tonsofskills.com",
80278027
"license": "MIT"
8028-
},
8029-
{
8030-
"name": "general-legal-assistant",
8031-
"source": "./plugins/business-tools/general-legal-assistant",
8032-
"description": "AI-powered contract review, risk analysis, document generation, and compliance auditing with 12 skills and 5 parallel agents",
8033-
"version": "1.0.0",
8034-
"category": "business-tools",
8035-
"author": {
8036-
"name": "Intent Solutions",
8037-
"email": "[email protected]"
8038-
},
8039-
"keywords": [
8040-
"legal",
8041-
"contracts",
8042-
"nda",
8043-
"compliance",
8044-
"gdpr",
8045-
"ccpa",
8046-
"risk-analysis",
8047-
"terms-of-service",
8048-
"privacy-policy"
8049-
],
8050-
"repository": "https://github.com/jeremylongshore/claude-code-plugins-plus-skills",
8051-
"homepage": "https://tonsofskills.com",
8052-
"license": "MIT"
80538028
}
80548029
]
80558030
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"name": "framecraft",
3+
"version": "1.0.0",
4+
"description": "Generate polished demo videos from a single prompt. Orchestrates Playwright, FFmpeg, and Edge TTS MCP servers to produce 1920x1080 videos with voiceover, transitions, and CSS animations.",
5+
"author": {
6+
"name": "Srinivas Vaddisrinivas",
7+
"email": "[email protected]"
8+
},
9+
"repository": "https://github.com/vaddisrinivas/framecraft",
10+
"license": "MIT",
11+
"keywords": [
12+
"demo-video",
13+
"video-generation",
14+
"playwright",
15+
"ffmpeg",
16+
"edge-tts",
17+
"mcp",
18+
"agent-skills"
19+
]
20+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 vaddisrinivas
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# framecraft
2+
3+
Generate polished demo videos from a single prompt. Orchestrates Playwright, FFmpeg, and Edge TTS MCP servers to produce 1920x1080 videos with voiceover, transitions, and CSS animations.
4+
5+
## Skills
6+
7+
| Skill | Description |
8+
|-------|-------------|
9+
| `demo-video` | Auto-activates when the user asks to create demo videos, product walkthroughs, or feature showcases |
10+
11+
## Installation
12+
13+
```bash
14+
claude plugin marketplace add jeremylongshore/claude-code-plugins
15+
ccpi install framecraft
16+
```
17+
18+
Or via npm skills registry:
19+
```bash
20+
npx skills add vaddisrinivas/framecraft
21+
```
22+
23+
## Requirements
24+
25+
- Python 3.11+, FFmpeg, Playwright chromium
26+
- Internet connection for Edge TTS voice synthesis (neural voices, free, no API key)
27+
- Edge TTS requires network connectivity for voice generation — no offline fallback
28+
29+
## Permissions
30+
31+
This skill requests scoped Bash access to:
32+
- `Bash(uv:*)` — Run Python environment via uv package manager
33+
- `Bash(ffmpeg:*)` — Run FFmpeg for video compositing and audio mixing
34+
- `Bash(python:*)` — Execute Python scripts for pipeline orchestration
35+
36+
These permissions are required because framecraft orchestrates external command-line tools (Playwright, FFmpeg, Edge TTS) that must be invoked via shell. The scopes ensure Bash calls are restricted to these three tools only.
37+
38+
**Contact:** [email protected]
39+
40+
## Links
41+
42+
- [Source Repository](https://github.com/vaddisrinivas/framecraft)
43+
- [License: MIT](https://github.com/vaddisrinivas/framecraft/blob/master/LICENSE)
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
---
2+
name: demo-video
3+
description: |
4+
Generate polished demo videos from a single prompt. Use when the user asks
5+
to create a demo video, product walkthrough, feature showcase, or animated
6+
presentation. Trigger with "make a demo video", "create a product video",
7+
"demo walkthrough", or "feature showcase video".
8+
allowed-tools: Read, Write, Edit, Bash, Glob
9+
version: 1.0.0
10+
author: Srinivas Vaddisrinivas <[email protected]>
11+
license: MIT
12+
compatible-with: claude-code
13+
tags: [video, demo, playwright, ffmpeg, edge-tts, mcp]
14+
---
15+
# Demo Video Generator
16+
17+
## Overview
18+
19+
Generate 1920x1080 demo videos with voiceover, transitions, and CSS animations from a single prompt. Orchestrates Playwright (HTML-to-frame rendering), FFmpeg (compositing and transitions), and Edge TTS (neural voiceover) MCP servers.
20+
21+
## Prerequisites
22+
23+
- Python 3.11+ and `uv` package manager
24+
- FFmpeg installed (`ffmpeg -version`)
25+
- Playwright chromium browser (`uv run playwright install chromium`)
26+
- Internet connection for Edge TTS voice synthesis
27+
28+
## Instructions
29+
30+
Install the framecraft plugin from the marketplace:
31+
32+
```bash
33+
claude plugin marketplace add jeremylongshore/claude-code-plugins-plus-skills
34+
claude plugin install framecraft@claude-code-plugins-plus
35+
```
36+
37+
### Quick Start
38+
39+
```bash
40+
uv run python framecraft.py init my-demo # scaffold a project
41+
uv run python framecraft.py render scenes.json --auto-duration
42+
uv run python framecraft.py validate output.mp4 # quality check
43+
```
44+
45+
### MCP Orchestration
46+
47+
When Playwright, FFmpeg, and Edge TTS MCP servers are available, framecraft orchestrates them directly for maximum control over each frame and audio segment.
48+
49+
### Pipeline Fallback
50+
51+
When MCP servers are not available, framecraft runs an atomic CLI pipeline that handles everything in one call.
52+
53+
### Workflow
54+
55+
1. **Story design** -- Choose a narrative arc (problem-solution, hero journey, before-after)
56+
2. **Scene authoring** -- Write HTML scenes with CSS animations, or use built-in templates
57+
3. **Rendering** -- Playwright captures frames, Edge TTS generates voiceover, FFmpeg composites
58+
59+
## Output
60+
61+
- 1920x1080 MP4 video with voiceover and transitions
62+
- Individual scene previews for iteration
63+
- Validation report for quality assurance
64+
65+
## Error Handling
66+
67+
| Error | Cause | Fix |
68+
|-------|-------|-----|
69+
| `ffmpeg: command not found` | FFmpeg not installed | Install via `brew install ffmpeg` or system package manager |
70+
| `playwright._impl._errors.Error` | Chromium not installed | Run `uv run playwright install chromium` |
71+
| `edge_tts.exceptions.NoAudioReceived` | TTS service unavailable | Check internet connection; retry after a few seconds |
72+
| `FileNotFoundError: scenes.json` | Missing scene config | Run `uv run python framecraft.py init my-demo` first |
73+
| Blank or black frames | HTML scene rendering failed | Check HTML syntax and ensure assets are accessible |
74+
75+
## Examples
76+
77+
```json
78+
{
79+
"scenes": [
80+
{
81+
"title": "Meet YourApp",
82+
"subtitle": "The smarter way to manage tasks",
83+
"narration": "24 tasks. One dashboard. Zero stress.",
84+
"voice": "en-US-AndrewNeural",
85+
"bullets": ["Smart priorities", "Team sync", "One-click reports"],
86+
"duration": 0
87+
}
88+
],
89+
"output": "demo.mp4",
90+
"width": 1920, "height": 1080,
91+
"voice": "en-US-AndrewNeural",
92+
"transition": "crossfade"
93+
}
94+
```
95+
96+
`duration: 0` = auto-detect from TTS length + 1.5s buffer.
97+
98+
## Resources
99+
100+
- Source repository with templates and pipeline: [github.com/vaddisrinivas/framecraft](https://github.com/vaddisrinivas/framecraft)
101+
- [Edge TTS voice list](https://learn.microsoft.com/en-us/azure/ai-services/speech-service/language-support)
102+
- [Playwright documentation](https://playwright.dev/python/docs/intro)
103+
- [FFmpeg documentation](https://ffmpeg.org/documentation.html)

0 commit comments

Comments
 (0)