{"id":"video-embeds","repo":"kschniedergers/paseo-plugins","url":"https://github.com/kschniedergers/paseo-plugins/tree/main/video-embeds","name":"video-embeds","description":"Renders ![clip](/path.mp4) in assistant messages as an inline video player. Desktop and web playback; iOS/Android show a placeholder card.","categories":["productivity"],"platforms":["macos","linux","windows"],"caveats":["Playback is desktop/web only; iOS and Android show a placeholder card instead of a player","Files over 30 MB are not embedded"],"images":["https://raw.githubusercontent.com/kschniedergers/paseo-plugins/da91d9b635afbd60211c66a71c0b9c06b72b828e/video-embeds/images/inline-player.png","https://raw.githubusercontent.com/kschniedergers/paseo-plugins/da91d9b635afbd60211c66a71c0b9c06b72b828e/path/to/file.mp4","https://raw.githubusercontent.com/kschniedergers/paseo-plugins/da91d9b635afbd60211c66a71c0b9c06b72b828e/video-embeds/path","https://raw.githubusercontent.com/kschniedergers/paseo-plugins/da91d9b635afbd60211c66a71c0b9c06b72b828e/abs/path/demo.mp4"],"health":{"manifestValid":true,"hasReadme":true,"hasLicense":true,"hasTests":true,"hasTypecheckScript":true,"updatedRecently":true},"scannedAt":"2026-09-11T10:26:44.332Z","path":"video-embeds","security":{"status":"passed","blockingFindings":0,"advisoryFindings":0,"scannedAt":"2026-09-11T10:25:33.100Z","commit":"da91d9b635afbd60211c66a71c0b9c06b72b828e"},"license":"MIT","paseoVersionRequirement":">=0.8.0","manifest":{"id":"video-embeds","requirements":{"paseo":">=0.8.0"}},"repoMeta":{"stars":0,"defaultBranch":"main","pushedAt":"2026-09-11T03:58:24Z"},"owner":{"login":"kschniedergers","avatarUrl":"https://avatars.githubusercontent.com/u/6611560?v=4"},"installNotesHtml":"<pre><code class=\"language-bash\">paseo plugin add kschniedergers/paseo-plugins --path video-embeds\n</code></pre>\n<p>Requires Paseo 0.8.0 or newer.</p>","readmeText":"# video-embeds\n\n> **Not for mobile.** Plugins can't ship native video playback, so iOS and Android show a\n> placeholder card with the file name instead of a player. Desktop and browser get the real thing.\n\nRenders `![clip](/path/to/file.mp4)` in assistant messages as an inline video player with\ncontrols — mp4, webm, and mov. Agents can show you a screen recording or demo clip in the chat\ninstead of leaving a file path.\n\n![Inline player in a Paseo chat](images/inline-player.png)\n\n## Install\n\n```bash\npaseo plugin add kschniedergers/paseo-plugins --path video-embeds\n```\n\nRequires Paseo 0.8.0 or newer.\n\n## Teach your agents to use it\n\nNothing in Paseo tells agents to embed images or videos; models write `![](path)` for screenshots\nout of habit, and they will not do it for a `.mp4` unless told. This plugin ships a skill that does\nthe telling — link it where your agent runtime discovers skills:\n\n```bash\nln -s \"$PASEO_HOME/plugins/<checkout>/video-embeds/skills/paseo-video-embeds\" ~/.claude/skills/paseo-video-embeds\n```\n\nOr drop one line into your global agent instructions (for example `~/.claude/CLAUDE.md`):\n\n> When you have a screen recording or demo clip, embed it as a markdown image with the absolute\n> path: `![clip](/abs/path/demo.mp4)` (mp4/webm/mov, under 30 MB).\n\n## How it works\n\n- A timeline transformer matches `assistant_message` items containing video markdown and splits\n  them into prose and video segments. Messages that also embed non-video images are left to the\n  host, because a transformer can only replace a whole item with plugin items.\n- The renderer fetches bytes over plugin RPC. The daemon-side handler reads the file, resolves\n  relative paths against the agent's working directory, expands `~`, enforces a 30 MB cap, and\n  checks the container's magic bytes. Failures render as \"Video preview unavailable.\"\n- Audio tracks play. Prose inside a transformed message renders as plain text.\n\n## Limits\n\n- Playback is web and desktop only. Plugins cannot ship native modules, so iOS and Android show a\n  labeled placeholder card instead of a player.\n- Files over 30 MB are refused; re-encode first:\n  `ffmpeg -i in.mov -c:v libx264 -crf 28 -pix_fmt yuv420p -c:a aac out.mp4`\n\n## Develop\n\n```bash\nnpm install\nnpm run typecheck\nnpm test\npaseo plugin install /absolute/path/to/paseo-plugins/video-embeds   # directory source\npaseo plugin reload video-embeds                                    # after edits\n```\n"}