Loading repository data…
Loading repository data…
Bhonar / repository
Turn any documentation URL into an MP4 tutorial video using your own React components. MCP server + Remotion + Claude Code Skill.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Turn any documentation URL into a 30-60 second tutorial video — using your own React components so the video looks like your actual product.
| Key | Required? | Free tier? | Get it at |
|---|---|---|---|
| Tabstack | Yes | 50k credits/month free | https://tabstack.ai/dashboard |
| ElevenLabs | Yes | Yes (TTS). Music needs paid plan. | https://elevenlabs.io |
Run this from your project root (where your package.json and src/ live):
cd /path/to/my-react-app
npx docs-to-video setup
This will:
docs-to-video/ into your project (MCP server, remotion template, skill)Your project will look like:
my-react-app/
├── src/ ← your code
├── package.json
└── docs-to-video/ ← created by setup
├── mcp-server/ (MCP server + dependencies)
├── remotion-template/ (video scaffolding)
└── skill/ (SKILL.md)
Then restart Claude Code and run:
/docs-to-video https://docs.stripe.com/payments/quickstart
Important: Always start Claude Code from your project root so it can find your components and the
docs-to-video/directory.
If you use skills.sh, you can install the skill with:
npx skills add Bhonar/docs-to-video
The first time you run /docs-to-video, Claude will automatically run npx docs-to-video setup to install the MCP server and dependencies.
If you prefer to clone the repo directly:
Go to the folder that contains your package.json and src/ — not inside src/:
cd /path/to/my-react-app # where package.json and src/ live
git clone https://github.com/Bhonar/docs-to-video.git docs-to-video
Your project should now look like:
my-react-app/
├── src/ ← your code
├── package.json
└── docs-to-video/ ← cloned here, next to src/
cd docs-to-video/mcp-server
npm install
npm run build
cd ../..
Replace YOUR_TABSTACK_KEY and YOUR_ELEVENLABS_KEY with your actual keys:
cat > docs-to-video/mcp-server/.env << 'EOF'
TABSTACK_API_KEY=YOUR_TABSTACK_KEY
ELEVENLABS_API_KEY=YOUR_ELEVENLABS_KEY
EOF
Make sure the file is saved with your actual keys before continuing.
Add the MCP server to your global Claude Code config (~/.claude/config.json).
If the file doesn't exist yet, create it. If it already has other servers, add docs-to-video to the existing mcpServers object.
# Run this from your project root (where docs-to-video/ lives)
node -e "
const path = require('path');
const fs = require('fs');
const serverPath = path.resolve('docs-to-video/mcp-server/dist/server.js');
const projectRoot = process.cwd();
if (!fs.existsSync(serverPath)) {
console.error('ERROR: Server not found at ' + serverPath);
console.error('Make sure you ran: cd docs-to-video/mcp-server && npm run build');
console.error('And that you are running this from your project root');
process.exit(1);
}
const configPath = path.join(require('os').homedir(), '.claude', 'config.json');
const config = fs.existsSync(configPath) ? JSON.parse(fs.readFileSync(configPath, 'utf8')) : {};
config.mcpServers = config.mcpServers || {};
config.mcpServers['docs-to-video'] = {
command: 'node',
args: [serverPath],
cwd: projectRoot
};
fs.mkdirSync(path.dirname(configPath), { recursive: true });
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
console.log('Written to', configPath);
console.log('Server:', serverPath);
console.log('Working directory:', projectRoot);
"
If you see
ERROR: Server not found, make sure you're in the right directory and that you rannpm run buildin Step 2.
Claude Code expects each skill to be a directory containing a SKILL.md file:
mkdir -p ~/.claude/skills/docs-to-video
ln -s "$(pwd)/docs-to-video/skill/SKILL.md" ~/.claude/skills/docs-to-video/SKILL.md
Restart required — Claude Code loads skills and MCP servers at startup. If Claude Code is already running, quit and restart it.
Start Claude Code from your project root (not from inside docs-to-video/):
claude
Claude Code will prompt you to allow the MCP tools on first run — type y to approve them.
Then type:
/docs-to-video https://docs.stripe.com/payments/quickstart
Wrong skill structure — Claude Code expects a directory with SKILL.md inside, not a standalone file. Check with:
ls -la ~/.claude/skills/docs-to-video/
You should see SKILL.md (symlink). If the structure is wrong, fix it:
rm -rf ~/.claude/skills/docs-to-video ~/.claude/skills/docs-to-video.md
mkdir -p ~/.claude/skills/docs-to-video
ln -s "$(pwd)/docs-to-video/skill/SKILL.md" ~/.claude/skills/docs-to-video/SKILL.md
Symlink target doesn't resolve — the symlink must use an absolute path. Re-run the ln -s command from Step 5 while in your project root.
Didn't restart Claude Code — skills are loaded at startup. Adding a skill mid-session won't work. Quit Claude Code and start it again.
Wrong directory — you must run claude from your project root, not from inside docs-to-video/.
.mcp.json — If a previous test created a .mcp.json in your project with relative paths, delete it. The global ~/.claude/config.json (set by Step 4) uses absolute paths and is more reliable.docs-to-video/ lives), not a parent directory.~/.claude/config.json to verify.cd docs-to-video/mcp-server && npm run buildELEVENLABS_API_KEY is set in docs-to-video/mcp-server/.env (git clone) or ~/.docs-to-video/.env (npm)If you installed via npm:
cd /path/to/my-react-app # run from your project root
npx docs-to-video uninstall
rm -rf docs-to-video/ # remove the copied files
If you installed via git clone:
rm -rf docs-to-video/
rm -rf ~/.claude/skills/docs-to-video
# Then remove the "docs-to-video" entry from ~/.claude/config.json
The /docs-to-video skill tells Claude to follow a 6-step workflow:
remotion/ directory in your project if neededGenerated.tsx using your own components, with each step as its own scene inside a centered SafeZone layout