用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/diegosouzapw/awesome-omni-skill --skill video命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Token-efficient tracking for AI orchestration. CLI-first for status updates (~50 tokens), agent fallback for complex ops (~1KB). Use when: updating task status, querying blockers, creating progress files, validating phases.
AshAi extension guidelines for integrating AI capabilities with Ash Framework. Use when implementing vectorization/embeddings, exposing Ash actions as LLM tools, creating prompt-backed actions, or setting up MCP servers. Covers semantic search, LangChain integration, and structured outputs.
This skill should be used when solving hard questions, complex architectural problems, or debugging issues that benefit from GPT-5 Pro or GPT-5.1 thinking models with large file context. Use when standard Claude analysis needs deeper reasoning or extended context windows.
基于 SOC 职业分类
正在显示 SKILL.md
| name | video |
| description | Generate videos using fal.ai (Wan, Kling) or Sora. Text-to-video and image-to-video. |
| user-invocable | false |
| disable-model-invocation | true |
| disabled | false |
| icon | film.fill |
| aliases | ["sora","generate video","vid","fal"] |
| parameters | [{"name":"prompt","placeholder":"Describe the video...","required":true}] |
Two providers: fal.ai (Wan, Kling — API-based, $5/day budget) and Sora (Playwright automation, currently disabled).
Default provider: fal.ai — use Sora only when explicitly requested.
--budget to see status.# Text-to-video (Wan 2.2, 480p, 16:9 — cheapest)
python3 .claude/skills/video/src/fal_create.py "a goldfish swimming in clear water"
# Portrait (9:16)
python3 .claude/skills/video/src/fal_create.py "neon dice rolling" -a 9:16
# Higher quality (720p — 2x cost)
python3 .claude/skills/video/src/fal_create.py "epic landscape" -r 720p
# Kling Standard (better quality, $0.28/5s)
python3 .claude/skills/video/src/fal_create.py "robot playing poker" -m kling-std
# Kling Pro (best quality, $0.49/5s)
python3 .claude/skills/video/src/fal_create.py "cinematic casino scene" -m kling-pro
# 10-second Kling ($0.56)
python3 .claude/skills/video/src/fal_create.py "dice duel showdown" -m kling-std -d 10
# Image-to-video (auto-selects i2v model)
python3 .claude/skills/video/src/fal_create.py "camera slowly zooms out" --image /path/to/photo.png
# Batch mode
python3 .claude/skills/video/src/fal_create.py --batch /path/to/jobs.json
# Check budget
python3 .claude/skills/video/src/fal_create.py --budget
# Override daily limit
python3 .claude/skills/video/src/fal_create.py "prompt" --daily-limit 3.00
| Flag | Options | Default | Notes |
|---|---|---|---|
-m | wan-t2v, wan-i2v, kling-std, kling-pro, kling-std-i2v | wan-t2v | Auto-switches to i2v with --image |
-r | 480p, 580p, 720p | 480p | Wan only |
-a | 16:9, 9:16, 1:1 | 16:9 | All models |
-d | 5, 10 | 5 | Kling only (seconds) |
-f | 17-161 | 81 | Wan only (frames, 81≈5s at 16fps) |
-i | path | — | Reference image |
-b | path | — | Batch JSON |
| Model | Resolution/Duration | Cost | Videos per $5 |
|---|---|---|---|
| wan-t2v | 480p | ~$0.04/sec | ~125 |
| wan-t2v | 720p | ~$0.08/sec | ~62 |
| wan-i2v | 480p | $0.20 | 25 |
| wan-i2v | 720p | $0.40 | 12 |
| kling-std | 5s | $0.28 | 17 |
| kling-std | 10s | $0.56 | 8 |
| kling-pro | 5s | $0.49 | 10 |
| kling-pro | 10s | $0.98 | 5 |
Budget tracked in ~/.config/fal/budget.json, resets daily.
[
{"prompt": "neon dice rolling on felt", "model": "wan-t2v", "aspect_ratio": "9:16"},
{"prompt": "robot casino", "model": "kling-std", "duration": "5"},
{"prompt": "animate this", "model": "wan-i2v", "image": "/path/to/img.png"}
]
Each job supports: prompt (required), model, resolution, aspect_ratio, duration, num_frames, image.
Do NOT use when:
image skill instead)# Text-to-video (portrait, 5 seconds — portrait is default)
python3 .claude/skills/video/src/create.py "a goldfish swimming in clear water" -o portrait
# Landscape orientation (only when explicitly requested)
python3 .claude/skills/video/src/create.py "a person walking through rain" -o landscape
# Square
python3 .claude/skills/video/src/create.py "abstract shapes morphing" -o square
# Longer duration (10s = 300 frames, 15s = 450, 20s = 600)
python3 .claude/skills/video/src/create.py "timelapse of clouds" -f 300
# Image-to-video (animate a reference image)
python3 .claude/skills/video/src/create.py "camera slowly zooms out" --image /path/to/photo.png
# Larger resolution (512x896 portrait, 1024x576 landscape)
python3 .claude/skills/video/src/create.py "epic landscape" -s large
# Batch mode (submit multiple jobs in one browser session)
python3 .claude/skills/video/src/create.py --batch /path/to/jobs.json
# Download recent videos WITHOUT generating (recover from timeouts)
python3 .claude/skills/video/src/download.py
# Download more history (default: 20 recent drafts)
python3 .claude/skills/video/src/download.py --limit 50
-o, --orientation: landscape (default), portrait (square is NOT supported by Sora)-s, --size: small (default), large-f, --frames: 150 (5s, default), 300 (10s), 450 (15s), 600 (20s)-i, --image: path to reference image for image-to-video generation-b, --batch: path to JSON file with array of jobsSubmit multiple videos in a single browser session. Write a JSON file with an array of jobs:
[
{"prompt": "first video prompt", "orientation": "portrait"},
{"prompt": "second video", "image": "/path/to/ref.png", "frames": 300},
{"prompt": "third video", "orientation": "square", "size": "large"}
]
Each job supports: prompt (required), orientation, size, frames, image (all optional).
All jobs are submitted at once, polled together, and downloaded when ready. Much faster than running one at a time.
For multi-scene videos with consistent visual style, use this Gemini→Gemini→Sora pipeline:
Generate 2-3 mood boards with the image skill to establish the visual identity. Include color palette, key elements, atmosphere, character design. Present to user for approval.
Generate each scene frame with Gemini, chaining the previous frame as reference:
The mood board is the anchor preventing style drift. The previous frame gives scene continuity. Always include "Match the visual style of the reference image exactly. Same color palette, same pixel art fidelity, same lighting approach." in every prompt.
Build a single composite image with all frames for efficient review:
from PIL import Image
frames = [Image.open(f'frame-{i}.jpg') for i in range(1, N+1)]
target_h = 400
frames = [f.resize((int(f.width * target_h/f.height), target_h), Image.LANCZOS) for f in frames]
padding = 8
comp = Image.new('RGB', (sum(f.width for f in frames) + padding*(len(frames)+1), target_h + padding*2), (20,20,30))
x = padding
for f in frames:
comp.paste(f, (x, padding))
x += f.width + padding
comp.save('storyboard.jpg', 'JPEG', quality=85)
Feed each approved frame to Sora as image-to-video in a batch. Prompt only describes MOTION, not the scene content (Sora sees the image).
When aligning with a specific brand:
Tested vocabulary for controlling Sora's output. Use these terms with confidence — they've been verified.
All work reliably for text-to-video. Sora interprets loosely but distinctly.
| Prompt term | What you get | Best for |
|---|---|---|
| "Aerial drone shot" | High-angle follow (~60°), NOT true bird's eye | Establishing shots, spectacle |
| "Extreme close-up" | Tight face/detail, beautiful bokeh, minimal motion | Emotional beats, texture |
| "Low angle looking up" | Camera on ground, subject towering, dramatic | Power shots, imposing feel |
| "Wide establishing shot" | Full environment, subject small in frame | Scene-setting, mood |
| "Over-the-shoulder" | Behind subject, shallow DOF, intimate framing | Following, voyeuristic |
Note: "Straight down / bird's eye / top-down" doesn't work — you'll get ~60° instead. True overhead needs stronger language.
Text-to-video supports some movement. Image-to-video does NOT (confirmed in earlier experiments).
| Prompt term | Actual movement? | Quality |
|---|---|---|
| "Slow dolly forward" | Barely perceptible | Beautiful scene but almost static |
| "Slow pan left to right" | YES — clear horizontal reveal | Reliable, new elements appear |
| "Camera slowly orbits" | NO — micro-shift at best | Becomes a static beauty shot |
| "Handheld shaky camera" | Subtle natural motion, NOT shaky | Sora smooths everything |
| "Steadicam tracking shot following [subject]" | YES — best actual movement | Spatial progression, most cinematic |
Winner: "steadicam tracking shot following" — the words "tracking" + "following" trigger real spatial movement. Avoid: "dolly" and "orbit" — these produce nearly static results. Note: "pan" works but may override your style — in testing it produced Pixar/3D instead of requested photorealism.
Styles that completely avoid the "AI-generated" look, ranked by convincingness:
| Style keyword | What you get | AI-looking? |
|---|---|---|
| "Japanese woodblock print, ukiyo-e, flat perspective, bold outlines" | Authentic Hiroshige-quality print | NO — could frame it |
| "Loose watercolor painting, visible brushstrokes, paint bleeding" | Real paper texture, paint bleed | NO — hand-painted feel |
| "Stop motion, handcrafted felt and wool textures, miniature set" | Felt characters, tiny props, Wes Anderson palette | NO — genuinely handcrafted |
| "Claymation, visible fingerprints on clay, handmade miniature set" | Wallace & Gromit quality clay figures | NO — physical materials |
| "Charcoal sketch on cream paper, rough expressive strokes, smudged" | Actual charcoal texture, rough marks | NO — traditional medium |
| "16-bit pixel art, retro game aesthetic, dithering" | SNES RPG quality, dithered sky | NO — retro constraint hides AI |
| "VHS camcorder footage, tracking lines, dated color" | Authentic 90s home video degradation | NO — artifacts mask tells |
| "Kodak Portra 400 film, warm grain, overexposed highlights" | Warm film grain, soft highlights | NO — passes as real footage |
| "Anime, Studio Ghibli aesthetic, hand-drawn cel animation" | Clean linework, warm flat colors | Slightly — rain too 3D |
| "Anamorphic widescreen, blue and orange grade, lens flare" | Bokeh orbs, cinematic grade | Slightly — too clean/rendered |
Top 3 for marketing: Kodak Portra (authentic), stop motion/felt (charming + unique), VHS (nostalgic).
Tested: 3 shots of same scene (wide, close-up, OTS) with identical style keywords.
What Sora CAN match across generations:
What Sora CANNOT match:
Continuity recipe: Use identical style keywords + setting description + color words across all prompts. Cut between shots that FEEL the same but avoid showing the same specific object prominently in multiple clips. For character consistency, use Gemini mood board chaining (see Multi-Scene workflow above).
Sora produces its best work with:
Avoid: interiors with harsh fluorescent lighting, anything requiring readable text.
New anti-AI styles confirmed:
| Style keyword | What you get | AI-looking? |
|---|---|---|
| "Paper craft, folded paper, cardboard, origami" | Physical-looking paper city with hanging clouds | NO — real model feel |
| "Knitted yarn landscape, button fruits, wool clouds" | Yoshi's Woolly World quality, joyful | NO — craft materials |
| "Pottery wheel, wet clay, kiln glow, 16mm film grain" | Tactile hands shaping clay, meditative | NO — earthy, real |
| "Stained glass window, light streaming, dust particles" | Cathedral light beams, rainbow on stone floor | NO — breathtaking |
| "Chalk drawing on blackboard, being drawn in real time" | Hand actually drawing with chalk, satisfying | NO — classroom feel |
| "Light painting photography, long exposure trails" | Neon trails forming shapes in pure darkness | NO — photographic |
| "Double exposure: [subject] overlaid with [background]" | Clean composite, neon accents, artistic | Slightly — but intentionally surreal |
Composition techniques that work:
Text rendering update:
Crowded scenes update:
Sora is a storyteller, not an animator. Given an image + motion prompt, it doesn't move existing elements — it reinterprets the scene through the lens of the prompt. The more motion/narrative you request, the more it invents.
| Level | Prompt Type | Scene Preservation | Quality |
|---|---|---|---|
| 1 - Still | "subtle breathing, faint particles" | Near-perfect | Best |
| 2 - Ambient | "rain falls, lights flicker, ripples" | Very good, minor color shift | Great |
| 2.5 - Detail | "cape flutters, eyes blink, cloud rises" | Very good | Great |
| 2.5 - Micro cam | "barely perceptible zoom in" | Very good | Great |
| 3 - Camera | "zoom out", "pan", "dolly" | Destroyed — scene reimagined | Broken |
| 4 - Orbit | "camera orbits around" | Destroyed — new scene invented | Broken |
| 5 - Action | "character flies, intense action" | Destroyed — new narrative created | Broken but creative |
Safe zone: Levels 1–2.5. The boundary is not "ambient vs everything" — it's "effect-like motion" vs "motion requiring 3D scene understanding." Cape flutter, rain, micro zoom, object displacement (cloud rising) = effects that work. Camera orbit, walking, flying = requires 3D understanding = breaks.
Safe at the boundary:
~95% speech hallucination rate across 30+ videos. Every prompt-based approach to prevent it fails:
ffmpeg -i input.mp4 -an -c:v copy output.mp4)Same image + same prompt produces visually consistent results across 5 runs. Composition, character position, and scene layout are highly deterministic. Only minor variations in neon sign text and color temperature. Speech content varies wildly (random noise).
API metadata reports half the actual resolution. Real values:
| Setting | Actual Resolution | File Size (5s) |
|---|---|---|
| Portrait small | 704x1280 | ~3.6 MB |
| Portrait large | 1024x1792 | ~4.5 MB |
| Landscape small | 1280x704 | ~2.9 MB |
| Square | Not supported (400 error) | N/A |
download_urls.no_watermark always returns NoneWording barely matters for ambient motion. Tested 5 variations (plain, constrained, "looping ambient", negative framing, "cinemagraph") — all produced nearly identical results. The simplest prompt works just as well as complex ones. Don't overthink it.
Two fundamentally different modes:
| Aspect | Image-to-Video | Text-to-Video |
|---|---|---|
| Style control | Exact (from reference) | Unreliable ("pixel art" may become 3D) |
| Camera movement | Destroys scene | Works well |
| Motion quality | Ambient only | Full cinematic |
| Speech hallucination | ~95% rate | Lower (0% on character-free scenes) |
| Best for | Animating existing art | Cinematic/atmospheric content |
Strategy: Use image-to-video for style-exact ambient scenes. Use text-to-video for cinematic motion and character-free atmospheric content.
All styles preserve scene with ambient prompts. But motion quality varies:
| Style | Motion Amount | Best For |
|---|---|---|
| Pixel art / neon | Most dramatic | Many light sources → lots to flicker |
| Flat illustration | Charming subtle | Eyes blink, warm light shifts |
| Art nouveau / graphic | Minimal | Fewer moving elements = less animation |
Rule: styles with many light sources = better ambient animation. Sora needs "things that can flicker."
[ambient motion description]. No new objects, preserve exact art style.
Note: speech constraints are useless — always strip audio. "No new objects, preserve exact art style" helps visual fidelity. Prompt complexity doesn't matter — keep it simple.
What works well (image-to-video):
What breaks (image-to-video):
For text-to-video:
Pre-flight checklist — do ALL of these before every batch submission:
ps aux | grep -E "src/create.py|src/download.py" | grep -v grep
If anything is running, STOP. Wait for it to finish. Do not submit a new batch.
python3 .claude/skills/video/src/download.py
The CLI often times out but the script keeps running in the background. Videos generate server-side even after a timeout. Always recover missed downloads before starting new work.
ls -lt .claude/skills/video/data/raw/*.mp4 | head -10
Verify what you already have so you don't re-generate.
Create the experiment JSON file BEFORE running the script. This way the experiment is documented even if the CLI times out mid-run.
Only now run create.py --batch. The Sora jobs are submitted server-side the moment the script runs — even if the CLI connection drops, the videos will generate. Use download.py to recover them later if needed.
ls -lt output/raw/*.mp4 | head for new files before re-running — you'll burn duplicate credits otherwise.audio_transcript: {"text": "..."} and audio_caption: "string" are accepted by the API but videos with audio never produce download URLs on the sy_8 model. Audio appears broken — use Kokoro TTS locally instead for narration overlay.SingletonLock file persists in browser/. Delete it before retrying: rm -f .claude/skills/video/browser/SingletonLock. Also kill zombie Chrome processes: ps aux | grep "Chrome.*browser" | grep -v grep | awk '{print $2}' | xargs kill -9.If the session expires, re-authenticate:
python3 .claude/skills/video/src/session.py login
# Opens Chrome, sign in to sora.chatgpt.com, type 'done'
Default output: .claude/skills/video/data/raw/
Files are named sora_{timestamp}.mp4.
data/
├── raw/ # Individual Sora generations
├── compilations/ # Finished stitched videos
├── shorts/ # Short-form edits (daily-short v1/v2/v3)
├── experiments/ # JSON batch configs
├── characters/ # Pixel character designs + rosters
├── moodboards/ # Style reference collages
├── storyboards/ # Composite overview images
└── frames/ # Gemini reference frames for Sora input
Where to save things:
data/raw/ (automatic via scripts)data/compilations/data/shorts/data/experiments/data/frames/data/moodboards/data/storyboards/data/characters/All batch JSONs live in data/experiments/.
| Batch | File | Theme | Videos | Top Picks |
|---|---|---|---|---|
| 1 | batch1-camera-angles.json | Camera angles (aerial, close-up, low, wide, OTS) | 5/5 | All solid reference |
| 2 | batch2-camera-movement.json | Camera movement (pan, orbit, dolly, tracking, handheld) | 5/5 | Steadicam tracking = winner |
| 3 | batch3-visual-styles.json | Visual styles (Kodak Portra, woodblock, watercolor) | 3/3 | Woodblock print |
| 4 | batch4-non-ai-styles.json | Non-AI aesthetics (stop motion, claymation, pixel art, VHS) | 4/4 | Stop motion felt |
| 5 | batch5-continuity.json | Continuity across shots (same scene, different angles) | 4/4 | Mood matches, details don't |
| 6 | batch6-lighting.json | Lighting variations and atmospheric effects | 5/5 | All good |
| 7 | batch7-marketing-scenes.json | Marketing/commercial scenes | 5/5 | Cozy workspace |
| 8 | batch8-mixed-styles.json | Mixed creative combos (felt+neon, claymation, aerial ocean) | 5/5 | Felt neon city walk (#1) |
| 9 | batch9-untested.json | Risky/untested (market, timelapse, split screen, underwater, candle) | 5/5 | Split screen 4 seasons, underwater |
| 10 | batch10-longer-duration.json | 10s and 15s marketing clips (forest, felt city, aerial lake) | 3/3 | Aerial mountain lake 15s |
| 11 | batch11-cloude-marketing.json | Cloude-specific (couch+cat, city walk, desk, felt DEPLOY, bed phone) | 5/5 | Couch coder (#1), felt DEPLOY (#4) |
| 12 | batch12-night-mood.json | Night cinematics (rain window, subway, rooftop, noir, aurora) | 4/5 | Rooftop 3am (#3), rain window (#1) |
| 13 | batch13-tech-aesthetic.json | Tech/coding (code screen, server room, hologram, keyboard, glasses) | 5/5 | Server room (#2), code glasses (#5) |
| 14 | batch14-textures.json | Material textures (paper, pottery, knitted, stained glass, chalk) |
Stitched videos from batches 16-19:
compilations/01-universe-creatures.mp4 — 5 clips, 25scompilations/02-universe-clouds.mp4 — 5 clips, 25scompilations/03-gaming-creatures.mp4 — 4 clips, 20s ⭐ BESTcompilations/04-gaming-clouds.mp4 — 4 clips, 20s10 pixel art variants from ref-creature.png saved in data/characters/:
DJ, Hacker, Astronaut, Samurai, Scientist, Boxer, Skater, King, Rockstar, Pirate
Best pipeline discovered for character-consistent animated pixel art:
Full recipe documented in plans/20_active/gaming-creatures-video.md.
| 5/5 |
| Stained glass (#4), knitted world (#3) |
| 15 | batch15-abstract.json | Abstract (ink water, geometric, light painting, double exposure, particles) | 5/5 | Double exposure face+city (#4), particle brain (#5) |
| 16 | batch16-universe-creatures.json | Cloude Universe — pixel creatures in cloud city (aerial, home, market, sunset, tavern) | 5/5 | Sunset panorama, tavern meeting |
| 17 | batch17-universe-clouds.json | Cloude Universe — cloud squad (village, home, forest, stargazing, festival) | 5/5 | Magic forest, cloud festival |
| 18 | batch18-gaming-creatures.json | Cloude Gaming — creatures in retro games (pac-man, fighter, platformer, invaders, kart) | 4/5 | Kart racing, fighter game |
| 19 | batch19-gaming-clouds.json | Cloude Gaming — clouds in retro games (pac-man, tetris, pokemon, cooking, arcade) | 4/5 | Pokemon battle, cooking mama |