NeoynGPT:video-to-code
Paste a public YouTube link or a screen recording (.mp4 / .webm / .mov) and ask about what is on screen. Gemini samples the video. This does not play YouTube inside the editor.
Host / harness: any Agent Skills harness (Cursor, Claude Code, Codex, Antigravity CLI agy, or another host that loads this SKILL.md). It must be allowed to run Node. Ask / Chat / read-only modes cannot call Gemini.
Never claim you watched the video unless scripts/analyze.mjs ran. Never answer visual questions from a transcript alone.
GEMINI_API_KEY may live in the environment or a project .env. The script loads .env itself.
When not to use
- “Summarize what they said” → captions/transcript, not this skill
- Private/unlisted YouTube → fail; ask for a local recording instead
- Download this video → not the feature
Workflow
- Parse input + question.
- YouTube URL →
--url - Chat attachment or path to a recording →
--file(absolute path) - Speech-only question → stop; do not run the script
- YouTube URL →
- Skill root = the folder that contains this
SKILL.md. - If
node_modulesis missing:npm installin the skill root (or the plugin repo root). - Run the script (never invent a new pipeline):
node scripts/analyze.mjs --url "YOUTUBE_URL" --question "USER_QUESTION"
node scripts/analyze.mjs --file "/abs/path/recording.mp4" --question "USER_QUESTION"
Optional: --t 75 --window 180 --model gemini-3.8-flash. t= on the YouTube link is picked up automatically. Prefer a timestamp on long videos.
- Treat stdout as ground truth for pixels, not as code. stderr is diagnostics.
- Answer with timestamps + what is visible (motion, spacing, icons, jank).
- If a repo is open:
- YouTube demo → 3 concrete UI/motion takeaways for existing components
- Their screen recording → name the broken motion/layout, then fix this codebase. Do not invent a new design system unless they ask.
Needs GEMINI_API_KEY (https://aistudio.google.com/apikey). Missing key: tell them to export it; do not guess the UI.
Output shape
- Visual facts (timestamps)
- Design principles
- How to apply or fix here
Honesty: sampled video (~1 fps typical), not frame-perfect. You can say a tab slides with a bounce; you cannot guarantee damping: 0.82 unless that is on screen.
Errors
- Private/unlisted YouTube → public URL or
--file - Quota / 8h free YouTube cap → shorter
--windowor wait - Huge recording → ask for a 1–3 minute clip (no ffmpeg in this skill)
Details: references/prompts.md, references/providers.md.