AI Marketing Videos
NeverSight/learn-skills.dev
Create AI marketing videos for ads, promos, product launches, and brand content.
Generates Instagram Reels where product image cuts are synced to audio beats.
$ npx skills add gooseworks-ai/goose-skills --skill beat-sync-reel -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install gooseworks-ai/goose-skills beat-sync-reel --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/design/packs/video-production/beat-sync-reel .claude/skills/beat-sync-reel && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "beat-sync-reel" agent skill from https://github.com/gooseworks-ai/goose-skills/tree/main/skills/design/packs/video-production/beat-sync-reel into .claude/skills/beat-sync-reel/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beat-sync-reel", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/gooseworks-ai/goose-skills/tree/main/skills/design/packs/video-production/beat-sync-reelType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add gooseworks-ai/goose-skills --skill beat-sync-reel -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install gooseworks-ai/goose-skills beat-sync-reel --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/design/packs/video-production/beat-sync-reel .agents/skills/beat-sync-reel && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "beat-sync-reel" agent skill from https://github.com/gooseworks-ai/goose-skills/tree/main/skills/design/packs/video-production/beat-sync-reel into .agents/skills/beat-sync-reel/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beat-sync-reel", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gooseworks-ai/goose-skills --skill beat-sync-reel -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install gooseworks-ai/goose-skills beat-sync-reel --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/design/packs/video-production/beat-sync-reel .cursor/skills/beat-sync-reel && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "beat-sync-reel" agent skill from https://github.com/gooseworks-ai/goose-skills/tree/main/skills/design/packs/video-production/beat-sync-reel into .cursor/skills/beat-sync-reel/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beat-sync-reel", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/gooseworks-ai/goose-skills.git --path skills/design/packs/video-production/beat-sync-reel--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add gooseworks-ai/goose-skills --skill beat-sync-reel -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install gooseworks-ai/goose-skills beat-sync-reel --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/design/packs/video-production/beat-sync-reel .gemini/skills/beat-sync-reel && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "beat-sync-reel" agent skill from https://github.com/gooseworks-ai/goose-skills/tree/main/skills/design/packs/video-production/beat-sync-reel into .gemini/skills/beat-sync-reel/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beat-sync-reel", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install gooseworks-ai/goose-skills beat-sync-reelInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add gooseworks-ai/goose-skills --skill beat-sync-reel -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/design/packs/video-production/beat-sync-reel .github/skills/beat-sync-reel && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "beat-sync-reel" agent skill from https://github.com/gooseworks-ai/goose-skills/tree/main/skills/design/packs/video-production/beat-sync-reel into .github/skills/beat-sync-reel/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beat-sync-reel", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gooseworks-ai/goose-skills --skill beat-sync-reel -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install gooseworks-ai/goose-skills beat-sync-reel --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/design/packs/video-production/beat-sync-reel .opencode/skills/beat-sync-reel && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "beat-sync-reel" agent skill from https://github.com/gooseworks-ai/goose-skills/tree/main/skills/design/packs/video-production/beat-sync-reel into .opencode/skills/beat-sync-reel/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beat-sync-reel", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
beat-sync-reelGenerates Instagram Reels where product image cuts are synced to audio beats.
Beat Sync Reel is an agent skill from gooseworks-ai/goose-skills. Generates Instagram Reels where product image cuts are synced to audio beats. Accepts audio as a local file, URL, or search query. Uses librosa for beat detection, FFmpeg Ken Burns for scene animation, and Pillow for text overlays. No AI video generation — fully free, fast, and scalable.
Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `skill.meta.json`).
It sits in Media & Creative, covering Video production and AI video generation. It works with Instagram, FFmpeg and YouTube. The repository describes itself as: Library of Growth & GTM skills + data APIs for Claude Code, Codex, Cursor to run ads, social, content, lead gen, seo and data scraping. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit c650c6d. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadWriteEditGrepGlobWebSearchFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
ffmpegyt-dlpffprobeFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
damensch.cominstagram.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Beat Sync Reel loads about 2.5k tokens when it runs. Until then it costs about 76 tokens; SKILL.md has 833 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, Write, Edit, Grep, Glob, WebSearchAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from gooseworks-ai/goose-skills at commit c650c6d, republished under its MIT licence (© gooseworks-ai). 833 words, ~2,489 tokens.
.claude/skills/beat-sync-reel/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Takes product images and a trending audio track, detects beats, and produces an Instagram Reel where every image cut lands exactly on a beat. Fast, free (no API credits), and scalable.
librosa and Pillow packagesThe user provides:
Audio (required) — one of three formats:
/path/to/trending-audio.mp3yt-dlp -x --audio-format mp3 -o "audio.%(ext)s" "<URL>"Product images (required) — one of:
.json to the product URL and extract image URLs from the responsecurl with -H "Referer: <site-domain>" and a browser user-agent, then parse <img> tagsAudio segment (optional) — start and end timestamps in seconds to use a specific portion of the audio. Defaults to 0-15s.
Beat frequency (optional) — cut on every Nth beat. Defaults to 2 (every 2nd beat, ~1.3s per image at typical tempos). Use 1 for fast cuts, 4 for slower.
Product info (optional) — brand name, product name, price, CTA URL. Used for end card. If not provided, skip end card.
Style preset (optional) — for end card text. One of: minimal, luxury, bold, editorial, clean. Defaults to clean. See Style Presets table below for font details.
Based on input type:
Local file:
# Just verify it exists and get duration
ffprobe -v quiet -print_format json -show_format "audio.mp3"URL (Instagram/TikTok/YouTube):
yt-dlp -x --audio-format mp3 -o "<workdir>/audio.%(ext)s" "<URL>"Audio name (search):
"<audio name>" site:youtube.com or "<audio name>" instagram audioyt-dlp -x --audio-format mp3 -o "<workdir>/audio.%(ext)s" "<URL>"import librosa
import numpy as np
y, sr = librosa.load("audio.mp3", sr=None)
tempo, beat_frames = librosa.beat.beat_track(y=y, sr=sr)
beat_times = librosa.frames_to_time(beat_frames, sr=sr)
beat_times = [float(t) for t in beat_times]Select cut points based on beat frequency:
# beat_freq = 2 means every 2nd beat
cut_times = [0.0] + [beat_times[i] for i in range(beat_freq - 1, len(beat_times), beat_freq)]Trim to audio segment:
start, end = 0.0, 15.0 # or user-provided
cut_times = [t - start for t in cut_times if start <= t < end]
if cut_times[0] != 0.0:
cut_times.insert(0, 0.0)Typical results by tempo:
| Tempo (BPM) | Beat interval | Every 2nd beat | Cuts in 15s |
|---|---|---|---|
| 80 | 0.75s | 1.5s | ~10 |
| 100 | 0.60s | 1.2s | ~12 |
| 120 | 0.50s | 1.0s | ~15 |
| 140 | 0.43s | 0.86s | ~17 |
If cuts > available images, cycle through images with different Ken Burns effects.
If images were scraped from a product URL, filter out infographics and size charts:
Classification heuristic (by position on product page):
| Position | Likely Type |
|---|---|
| Image 1 (first on page) | Hero / front-facing model |
| Image 2 | Alternate angle (side/back) |
| Image 3-4 | Close-up or detail |
| Last image | Size guide or back view |
Model vs product-only detection: If image height > 1.5× width AND file size > 100KB → likely a model photo. Otherwise → product-only photo.
Order images for visual variety: hero → detail → alternate angle → repeat.
For each cut interval, create a Ken Burns clip from the assigned image. Alternate through these effects:
# Zoom in center
ffmpeg -y -loop 1 -i "image.jpg" \
-vf "scale=2160:3840,zoompan=z='1+0.08*in/{frames}':x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':d={frames}:s=1080x1920:fps=25" \
-t {duration} -c:v libx264 -pix_fmt yuv420p -r 25 scene.mp4
# Zoom out center
zoompan=z='1.15-0.08*in/{frames}':x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':d={frames}:s=1080x1920:fps=25
# Pan left to right
zoompan=z='1.08':x='(iw-iw/zoom)*in/{frames}':y='ih/2-(ih/zoom/2)':d={frames}:s=1080x1920:fps=25
# Pan right to left
zoompan=z='1.08':x='(iw-iw/zoom)*(1-in/{frames})':y='ih/2-(ih/zoom/2)':d={frames}:s=1080x1920:fps=25
# Zoom in top-center (for torso/face crops)
zoompan=z='1+0.08*in/{frames}':x='iw/2-(iw/zoom/2)':y='ih/4-(ih/zoom/4)':d={frames}:s=1080x1920:fps=25
# Pan up
zoompan=z='1.06':x='iw/2-(iw/zoom/2)':y='(ih-ih/zoom)*(1-in/{frames})':d={frames}:s=1080x1920:fps=25Where {frames} = int(duration * 25) (25 fps).
Important: Always scale source image to at least 2160x3840 before zoompan so there's enough resolution for the zoom.
If product info is provided, create a 2-second end card using Pillow:
from PIL import Image, ImageDraw, ImageFont
card = Image.new("RGBA", (1080, 1920), (20, 20, 20, 255))
draw = ImageDraw.Draw(card)
# Brand name (centered, y=750)
# Product name (centered, y=830)
# Price (centered, y=920, accent color)
# CTA (centered, y=1020, muted)
card.save("endcard.png")Convert to video:
ffmpeg -y -loop 1 -i endcard.png -vf "scale=1080:1920" \
-t 2 -c:v libx264 -pix_fmt yuv420p -r 25 endcard.mp4Fonts 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 |
cat > concat.txt << EOF
file 'scene-00.mp4'
file 'scene-01.mp4'
...
file 'endcard.mp4'
EOF
ffmpeg -y -f concat -safe 0 -i concat.txt \
-c:v libx264 -pix_fmt yuv420p -r 25 reel-silent.mp4ffmpeg -y -i reel-silent.mp4 -i audio.mp3 \
-filter_complex "[1:a]atrim={start}:{end},asetpts=PTS-STARTPTS,afade=t=in:st=0:d=0.5,afade=t=out:st={fade_start}:d=2,volume=0.8[aud]" \
-map 0:v -map "[aud]" \
-c:v copy -c:a aac -shortest output.mp4Where {start} and {end} are the audio segment timestamps, and {fade_start} = total_duration - 2.0.
Save the final reel to a user-specified directory (or the current working directory).
Output specs:
product-reel-generator skill which supports Higgsfield/Kling/Seedance video generation APIs.Free. No API credits needed. Only uses FFmpeg, librosa, and Pillow — all local processing.
User: "Make a beat-sync reel for this product: https://www.damensch.com/products/full-sleeve-polo
Use this audio: https://www.instagram.com/reels/audio/123456789/
Cut on every 2nd beat, use the first 15 seconds"
Agent:
1. Downloads audio with yt-dlp
2. Scrapes product images from URL
3. Detects beats with librosa
4. Creates Ken Burns clips at beat intervals
5. Adds end card with product info
6. Mixes audio
7. Outputs reel© gooseworks-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in skills/design/packs/video-production/beat-sync-reel of gooseworks-ai/goose-skills.
Open the folder on GitHubat commit c650c6d
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in gooseworks-ai/goose-skills, which our catalogue first saw on October 7, 2026.
Beat Sync Reel next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Beat Sync Reel this skillgooseworks-ai/goose-skills | 1.2k | 1 repos | ~2.5k | Automated safety check: Notes | MIT | |
| AI Marketing VideosNeverSight/learn-skills.dev | 217 | 3 repos | ~2.1k | Automated safety check: Pass | None | |
| Video Processingguia-matthieu/clawfu-skills | 150 | — | ~1.3k | Automated safety check: Notes | MIT | |
| Ffmpeg Skillkajisho5/ffmpeg-skill | 1.9k | — | ~7.4k | Automated safety check: Pass | MIT | |
| Watchmathiaschu/watch | 142 | — | ~4k | Automated safety check: Warn | MIT | |
| HyperFrames Video Entry Pointheygen-com/hyperframes | 60k | 3 repos | ~5.2k | Automated safety check: Pass | Apache-2.0 |
NeverSight/learn-skills.dev
Create AI marketing videos for ads, promos, product launches, and brand content.
guia-matthieu/clawfu-skills
Process video files with ffmpeg automation. An agent skill from guia-matthieu/clawfu-skills.
kajisho5/ffmpeg-skill
Edit video and audio with local FFmpeg from natural-language requests: cut, trim, join, resize/reframe (9:16, 1:1), speed change, captions and subtitles (SRT/ASS, animated, karaoke), logos and text…
mathiaschu/watch
Watch a video from YouTube, Instagram, X/Twitter, Vimeo, TikTok or any of ~1800 yt-dlp sites (or a local path).
heygen-com/hyperframes
Entry point for making, editing and rendering videos from HTML compositions with HyperFrames, routing each request to the right workflow.
eternityspring/reelbench-skills
拉片:把一条成片拆成逐镜头的分析表——每个镜头的时长、景别、类别、运镜、画面. An agent skill from eternityspring/reelbench-skills.
gooseworks-ai/goose-skills
Scrape and search Reddit posts using Apify. An agent skill from gooseworks-ai/goose-skills.
gooseworks-ai/goose-skills
Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent.
gooseworks-ai/goose-skills
Replace an existing video's opening with a supplied clip or free kinetic text hook while retaining and verifying every original body frame, audio, captions and ending.
gooseworks-ai/goose-skills
Scrape blog posts via RSS feeds (free, no API key) with Apify fallback for JS-heavy sites.
gooseworks-ai/goose-skills
Find leads by scraping engagers from a competitor's top LinkedIn posts.
gooseworks-ai/goose-skills
Assemble a ChatGPT chat-reveal video ad from a thread + timeline JSON — one continuous Playwright recording of a ChatGPT mobile chat (user types with the iOS keyboard up → taps send → keyboard…
Categories
Generates Instagram Reels where product image cuts are synced to audio beats. Beat Sync Reel is an agent skill from gooseworks-ai/goose-skills. Generates Instagram Reels where product image cuts are synced to audio beats.
Beat Sync Reel fits situations like: tasks that involve Video production; tasks that involve AI video generation.
Run `npx skills add gooseworks-ai/goose-skills --skill beat-sync-reel -a claude-code`. Or copy the skill folder (skills/design/packs/video-production/beat-sync-reel in gooseworks-ai/goose-skills) into .claude/skills/beat-sync-reel in your project. Claude Code loads it when a task matches its description.
Run `npx skills add gooseworks-ai/goose-skills --skill beat-sync-reel -a codex`. Or copy the skill folder (skills/design/packs/video-production/beat-sync-reel in gooseworks-ai/goose-skills) into .agents/skills/beat-sync-reel in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add gooseworks-ai/goose-skills --skill beat-sync-reel -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/beat-sync-reel, .gemini/skills/beat-sync-reel, .github/skills/beat-sync-reel and .opencode/skills/beat-sync-reel in your project.
Going by SKILL.md and its folder, Beat Sync Reel needs the command-line tools its instructions call (ffmpeg, yt-dlp and ffprobe). Our summary lists: Python 3. Its frontmatter pre-approves these tools: Bash, Read, Write, Edit, Grep, Glob, WebSearch.
SKILL.md names 2 domains. In commands or code: damensch.com and instagram.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Beat Sync Reel is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.5k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Beat Sync Reel: AI Marketing Videos (NeverSight/learn-skills.dev, 217 stars), Video Processing (guia-matthieu/clawfu-skills, 150 stars), Ffmpeg Skill (kajisho5/ffmpeg-skill, 1.9k stars) and Watch (mathiaschu/watch, 142 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
gooseworks-ai (a GitHub organization) maintains it in gooseworks-ai/goose-skills, which has 1,240 GitHub stars. The repository holds 273 skills in this directory. The repository was last updated on October 8, 2026.
Source: gooseworks-ai/goose-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.