원클릭으로
video-overlays
Produce professional overlay cards for edited YouTube videos.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Produce professional overlay cards for edited YouTube videos.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
/blog-schedule - Manage Post Schedule
Generate a blog post from source materials (text, PDFs, images, transcripts). Use when user wants to create a blog post or article.
Render carousel slides from social/carousel.md into 1080x1350 PNG images.
Push blog posts to Google Docs for review, then pull comments and suggestions back as feedback for discussion.
Generate AI images for content using Gemini or other image generation APIs. Use when user needs diagrams, illustrations, or visual content.
Initialize a new content project with the standard directory structure in projects). Use when user wants to create a new blog post and one doesn't exist for it.
| name | video-overlays |
| description | Produce professional overlay cards for edited YouTube videos. |
Produce professional overlay cards for edited YouTube videos. Read the top-level references/visual-editing-principles.md before making any overlay decisions — it contains the mental model for what to overlay, where, how big, and why.
All outputs go in <project_root>/claude-edits/.
<project_root>/claude-edits/
<video_stem>_overlays.json # Overlay specification with per-overlay Resolve properties
overlays/
assets/ # Screenshots, thumbnails, logos (from gather_assets.py)
rendered/ # Text overlays rendered as PNG cards (via ffmpeg)
frames/ # Extracted video frames for visual analysis
ffmpeg — extract video frames, render text overlay cardsgather_assets.py — fetch screenshots/OG images for URLs mentioned in the video (uses Playwright)Read the transcript and decide what moments benefit from visual reinforcement. Do not use a script for this — reason about the content. Ask:
ffmpeg -ss <seconds> -i <source_video> -frames:v 1 -update 1 -vf scale=960:-1 \
<project_root>/claude-edits/overlays/frames/<overlay_id>_frame.png
Read each frame image. For each overlay, decide:
# Preview composite (scale values to match preview resolution)
ffmpeg -y -i frame.png -i overlay.png \
-filter_complex "[1]scale=<preview_width>:-1[card];[0][card]overlay=x=<px>:y=<py>" \
-frames:v 1 -update 1 preview.png
If the preview shows the overlay blocking content or covering the face, adjust and re-preview.
cd <project_root>/.claude/skills/video-overlays
uv run scripts/gather_assets.py <project_root>/claude-edits/<stem>_mentions.json --output-dir <project_root>/claude-edits/
ffmpeg -y -f lavfi -i "color=c=0x0d1117@0.88:s=1600x80:d=1,format=rgba" \
-vf "drawbox=x=0:y=0:w=8:h=80:c=0x58a6ff@1.0:t=fill,drawtext=text='<label>':fontfile=/System/Library/Fonts/Helvetica.ttc:fontsize=38:fontcolor=0xffffff:x=28:y=(h-text_h)/2" \
-frames:v 1 -update 1 rendered/<overlay_id>.png
These are starting-point defaults for card style. Adjust colors, size, font based on the video's visual context. Dark backgrounds need lighter cards; light backgrounds need darker or more opaque cards.
Each overlay gets a resolve dict with exact pixel values and a _note explaining the placement reasoning:
{
"id": "overlay_justfile_key",
"type": "key-takeaway",
"label": "One Just file = entry point for all commands",
"timing": { "source_start": 51.3, "source_end": 59.1, "display_duration": 7.8 },
"resolve": {
"ZoomX": 0.55, "ZoomY": 0.55,
"Pan": -200, "Tilt": -930,
"_note": "VS Code with code and terminal. Lower-third on terminal tab bar, left of webcam bottom-right."
}
}
scripts/
gather_assets.py # Fetch screenshots, OG images (Playwright + requests)