Communitygithub.com

logo-popups

Pop app logos (Claude, Codex, ChatGPT, Grok, Gemini, Cursor and any other logo) out of the speaker's fingertip when they point, in sync with the word they say. Hand tracking follows the finger, logos stay off the face, original audio is kept. Use when the user types /logo-popups, or asks to add logos, icons or brand pop-ups where their finger points in a video.

What is logo-popups?

logo-popups is a Claude Code agent skill that pop app logos (Claude, Codex, ChatGPT, Grok, Gemini, Cursor and any other logo) out of the speaker's fingertip when they point, in sync with the word they say. Hand tracking follows the finger, logos stay off the face, original audio is kept. Use when the user types /logo-popups, or asks to add logos, icons or brand pop-ups where their finger points in a video.

Works with✓Claude Code✓Codex CLI✓Cursor✓Gemini CLI
npx skills add https://github.com/sknitd/logo-popups/tree/HEAD

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

Logo popups: logos that pop out of your pointing finger

The user is usually not technical. Keep replies short, do the work for them, never ask them to run commands.

All paths are relative to this skill's folder (the folder this SKILL.md is in). Use its absolute path in commands. PY below means .venv/bin/python in this folder (.venv\Scripts\python.exe on Windows).

1. First run: set up (once)

Run bash scripts/setup.sh. It prints READY when done (1 to 3 minutes the first time).

  • NEED_FFMPEG: install it (Mac: brew install ffmpeg, Windows: winget install ffmpeg), then run setup again.
  • NEED_PYTHON: install Python 3.12 (Mac: brew install [email protected], Windows: winget install Python.Python.3.12), then run setup again.

2. Find the pointing and the words

Run both on their video:

  • PY scripts/track.py <video>: tracks the hands, saves <video>.hands.json and prints pointing windows (times when a finger is held up).
  • PY scripts/words.py <video>: prints when each word is said.

Match each window to the brand the speaker names in or near it. Whisper often mishears brand names: "cloud" is usually Claude, "codecs" Codex, "croc"/"grok" Grok, "chat GPT" ChatGPT, "Gemini", "cursor" Cursor. If the user already told you which logos, use those in the order they point. If no words name a brand and the user didn't say, ask one short question: which logos, in what order.

3. Write the plan

Save it next to the video as <video-name>_logos.json:

{"pops": [
  {"logo": "claude", "start": 1.12, "end": 1.85},
  {"logo": "codex",  "start": 2.10, "end": 3.05},
  {"logo": "grok",   "start": 3.45, "end": 4.50}
]}
  • start: a beat after the hand settles (the window start), or on the word, whichever is later. end: when the finger drops or the next point starts. 0.7 to 1.2 s each looks best; never overlap two pops.
  • logo: a preset name (below), any icon name from lobehub.com/icons (e.g. notion, figma, vercel; it tries <name>-color first), or a path to a PNG/SVG the user gave.

Options per pop (all optional):

keywhatdefault
labeltext in the pill under the icon; "" hides itbrand name
bgtile colour (hex)preset, else white
fgcolour for one-colour SVG logoswhite on dark tiles, black on light
accentcolour of the pop ringpreset, else logo colour
sizetile width as a share of the video width0.24
logo_scalelogo size inside the tile0.66
gaphow far past the fingertip the icon sits (in tile sizes)0.85
nudgeextra [x, y] offset as a share of the width[0, 0]
avoid_faceslide up if it would cover the facetrue
burstring and sparks on poptrue

Presets: claude, anthropic, codex, openai, chatgpt, grok, gemini, cursor, perplexity, deepseek, copilot, mistral, meta.

4. Check, then render

  1. Stills first (fast): PY scripts/render.py <plan.json> <video> <folder>/check.png --still 1.5,2.6,4.0, one time in the middle of each pop. Look at the PNG yourself. Fix anything that covers the face, gets cut off at the edge, or sits far from the finger (gap, nudge, size, timing).
  2. Render: PY scripts/render.py <plan.json> <video> <video-name>_logos.mp4. Output: H.264 MP4, 1080 wide, same fps, original audio.
  3. Tell them where the file is, and to watch it before posting.

Rules

  • Never cover the face. Face avoidance is on by default; still check the stills.
  • One logo per point. If they point twice at one brand, use two pops.
  • Logos are trademarks of their owners; this is for commentary and reviews. Don't add logos the speaker doesn't mention unless the user asks.

Related Skills