skills/packs/video-production/product-reel-generator/SKILL.md
Generates Instagram-ready product reels from any e-commerce product page URL. Scrapes product images, classifies by type, generates AI-animated clips via Higgsfield API, creates text overlays with style presets, and composes a 15-20 second reel with music. Supports model-based and product-only reels.
npx skillsauth add gooseworks-ai/goose-skills product-reel-generatorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are a video production skill that takes an e-commerce product page URL and produces an Instagram-ready reel. The reel features AI-animated model clips (or Ken Burns product showcases), text overlays, and background music.
brew install ffmpeg on macOS, apt install ffmpeg on Linux)Pillow and python-dotenv packages (pip install Pillow python-dotenv)HIGGSFIELD_API_KEY_ID and HIGGSFIELD_API_KEY_SECRET in a .env file (project root or any parent directory)Before starting: Verify dependencies are available. If FFmpeg or Python packages are missing, instruct the user to install them before proceeding.
The user provides:
minimal, luxury, bold, editorial, clean. Defaults to auto-detect based on brand.Try these methods in order until one works:
.json to the product URL and extract images from the responsecurl with -H "Referer: <site-domain>" and a browser user-agentFor each image, download at the highest available resolution.
Use image position on the product page as the primary signal:
| Position | Likely Type | Use In Reel | |----------|-------------|------------| | Image 1 (first on page) | Hero / front-facing model | Walk forward (AI) | | Image 2 | Alternate angle (side/back) | Turn or side walk (AI) | | Image 3-4 | Close-up or detail | Detail insert (Ken Burns) | | Last image | Size guide or back view | Back turn (AI) or product card |
Model detection heuristic: If image height > 1.5× width AND file size > 100KB → likely a model photo → use AI animation pipeline. Otherwise → product-only → use Ken Burns pipeline.
Use the Higgsfield API via this skill's scripts/higgsfield_video.py script or direct curl calls.
API details:
https://platform.higgsfield.aiAuthorization: Key {HIGGSFIELD_API_KEY_ID}:{HIGGSFIELD_API_KEY_SECRET}"aspect_ratio": "9:16" for Instagram ReelsModel selection:
bytedance/seedance/v1/pro/image-to-video) — for hero/walk scenes. Higher quality, ~45 credits. Use for the most important clip.kling-video/v2.1/pro/image-to-video) — for secondary scenes. Good quality, ~6 credits. Use for turns, side angles.Prompt guidelines:
Duration: Use "duration": 5 for each clip. Kling only supports 5 or 10.
Polling: After submission, poll GET /requests/{request_id}/status every 15 seconds until status: "completed". Then download the video from response.video.url.
For detail/texture shots where AI animation adds no value, use FFmpeg Ken Burns:
ffmpeg -y -loop 1 -i "detail.jpg" \
-vf "scale=2160:3840,zoompan=z='1+0.06*in/75':x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':d=75:s=1080x1920:fps=25" \
-t 3 -c:v libx264 -pix_fmt yuv420p -r 25 "scene-detail.mp4"
Vary the zoom type: zoom-in, zoom-out, pan-left, pan-right, pan-up, pan-down.
Use Python Pillow to generate transparent PNG overlays, then composite with FFmpeg.
IMPORTANT: Many FFmpeg installations do NOT have the drawtext filter. Always use Pillow to create PNG text images, then overlay with:
ffmpeg -y -i video.mp4 -loop 1 -t <duration> -i overlay.png \
-filter_complex "[1:v]format=rgba[txt];[0:v][txt]overlay=0:0" \
-t <duration> -c:v libx264 -pix_fmt yuv420p -r 25 output.mp4
Fonts are provided as shared files in the pack's fonts/ directory (copied into each skill on install). Fall back to system fonts if custom fonts are not found.
| Preset | Title Font | Body Font | Text Color | Treatment | |--------|-----------|-----------|------------|-----------| | minimal | Montserrat-Light.ttf | Montserrat-Light.ttf | White (255,255,255) | No background, subtle shadow | | luxury | System Didot (/System/Library/Fonts/Supplemental/Didot.ttc) | Cormorant-Regular.ttf | Cream (245,235,210) | Thin gold stroke | | bold | System Futura (/System/Library/Fonts/Supplemental/Futura.ttc) | Montserrat-Bold.ttf | White | Dark backdrop bar, uppercase | | editorial | Cormorant-Italic.ttf | Cormorant-Regular.ttf | White | Minimal, italic titles | | clean | System Helvetica (/System/Library/Fonts/Helvetica.ttc) | System Helvetica | White | Simple shadow, professional |
Overlays to create:
| Time | Scene | Type | Duration | |------|-------|------|----------| | 0-5s | Hero — walk forward or full body | AI (Seedance) | 5s | | 5-10s | Alternate angle — side/back | AI (Kling) or Ken Burns | 5s | | 10-13s | Detail — texture, fabric, accessories | Ken Burns | 3s | | 13-16s | Third angle — back turn or close-up | AI (Kling) | 3s | | 16-20s | Product card + CTA | Static + text overlay | 4s |
Target: 80% video, 20% static. The product card at the end is fine as static.
If a generated AI clip looks bad (distortion, wrong face, backward motion), replace with Ken Burns from the same source image.
| Time | Scene | Type | Duration | |------|-------|------|----------| | 0-3s | Hero reveal | Ken Burns zoom-out | 3s | | 3-6s | Detail 1 | Ken Burns zoom-in | 3s | | 6-9s | Alternate angle | Ken Burns pan | 3s | | 9-12s | Detail 2 | Ken Burns zoom | 3s | | 12-15s | Product card + CTA | Static + text | 3s |
Concatenate all scenes with FFmpeg:
cat > concat.txt << EOF
file 'scene1.mp4'
file 'scene2.mp4'
...
EOF
ffmpeg -y -f concat -safe 0 -i concat.txt -c:v libx264 -pix_fmt yuv420p -r 25 reel-silent.mp4
Mix background music with the silent reel:
ffmpeg -y -i reel-silent.mp4 -i music.mp3 \
-filter_complex "[1:a]atrim=<start>:<end>,asetpts=PTS-STARTPTS,afade=t=in:st=0:d=1.5,afade=t=out:st=<fade_start>:d=2,volume=0.5[aud]" \
-map 0:v -map "[aud]" -c:v copy -c:a aac -shortest output.mp4
If no music file is provided, ask the user to supply one or search for a royalty-free track (e.g., Kevin MacLeod's library at incompetech.com). The user should provide a local file path or URL.
Save the final reel to a user-specified directory (or the current working directory).
Output specs:
Referer header. Always include -H "Referer: <site-domain>" in curl downloads.drawtext in FFmpeg — many FFmpeg installations lack the drawtext filter. Always use Pillow for text → PNG → overlay.| Component | Credits | Approx Cost | |-----------|---------|-------------| | 1× Seedance clip (hero) | ~45 | ~$2.50 | | 1-2× Kling clips (secondary) | ~6-12 | ~$0.60-1.20 | | Ken Burns + text overlays | 0 | Free | | Total per reel | ~51-57 | ~$3-4 |
development
End-to-end skill that turns a single reference image into a fully-installed, example-rendered style preset for the goose-graphics composite. Analyzes the image, writes the slim style spec, registers it in styles/index.json, generates all 7 format examples using the standard brief, renders PNGs via Playwright, and updates examples/manifest.json. Invoke with /goose-graphics-create-style.
development
Evaluate YC batch companies for investment — scrapes the YC directory, researches each company and its founders (work history, LinkedIn, website), assesses founder-company fit, and exports to Google Sheets with priority rankings. Use when asked to evaluate YC companies, research a YC batch, screen startups, or do due diligence on YC companies.
tools
Take screenshots of any website using Notte browser automation. Use when asked to screenshot, capture, or snap a webpage.
development
Search the web, platforms, and datasets. Use when asked to search, find, look up, research, or discover information from the web, YouTube, Amazon, eBay, news, academic sources, or any online platform.