skills/video-post-processing/SKILL.md
--- name: video-post-processing description: Post-processes AI-generated video with film grain, ambient audio, metadata stripping, and compression. Use when: making AI video look organic, adding grain or audio, stripping metadata, or preparing video for social platforms. --- # Video Post-Processing Make AI-generated video look organic. Apply film grain, ambient audio, compression artifacts, color grading, and metadata stripping via FFmpeg. Five named presets cover the most common use cases — f
npx skillsauth add clawdvine/skills skills/video-post-processingInstall 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.
Make AI-generated video look organic. Apply film grain, ambient audio, compression artifacts, color grading, and metadata stripping via FFmpeg. Five named presets cover the most common use cases — from subtle polish to full phone-footage simulation.
Dependencies: FFmpeg (required), Node.js 18+ (required)
# Apply the default "ugc" preset (looks like phone footage)
node process.mjs --input video.mp4 --output processed.mp4
# Choose a preset
node process.mjs --input video.mp4 --preset cinema
# Override individual params
node process.mjs --input video.mp4 --preset ugc --grain 4 --crf 26
# Auto-detect ambient track from prompt keywords
node process.mjs --input video.mp4 --preset ugc --prompt "woman walking through rainy tokyo street"
# → selects rain-light.wav automatically
# From URL (downloads first)
node process.mjs --input "https://example.com/video.mp4" --preset subtle
# Strip AI metadata only (no visual processing)
node scripts/metadata-strip.mjs --input video.mp4 --output clean.mp4
# Pipe-friendly — outputs processed file path to stdout
PROCESSED=$(node process.mjs --input video.mp4 --preset ugc --quiet)
| Preset | Description | Grain | CRF | Resolution |
|--------|-------------|-------|-----|------------|
| raw | No processing. Pass-through. | 0 | native | native |
| subtle | Light touch. Slight grain, faint room tone. Still polished. | 1.5 | 24 | 1080p |
| ugc | Looks like phone footage. Default for social content. | 2.5 | 28 | 1080p |
| vintage | Retro film look. Heavy grain, warm shift, lo-fi audio. | 5 | 30 | 720p |
| cinema | Cinematic grade. Subtle grain, letterbox, desaturated. | 2 | 22 | 1080p |
Full preset definitions are in presets.json.
node process.mjs [options]
Required:
--input <path|url> Input video file or URL
Options:
--output <path> Output file path (default: input with -processed suffix)
--preset <name> Preset name: raw, subtle, ugc, vintage, cinema (default: ugc)
--prompt <text> Prompt text for auto-selecting ambient audio track
--ambient <path> Override ambient audio file path
--grain <number> Override grain intensity (0-10)
--crf <number> Override CRF value (18-35, lower = better quality)
--blur <number> Override blur amount (0-1)
--quiet Only output the processed file path (for piping)
When --prompt is provided, keywords are matched to ambient audio tracks:
| Keywords | Ambient Track | Rationale |
|----------|--------------|-----------|
| rain, storm, wet, umbrella | rain-light.wav | Match visual weather |
| cafe, coffee, restaurant, indoor | coffee-shop.wav | Interior social setting |
| city, street, urban, tokyo, nyc | street-light.wav | Urban soundscape |
| nature, forest, mountain, outdoor | nature.wav | Organic environment |
| default / no match | room-tone.wav | Neutral, works everywhere |
Without --prompt, defaults to room-tone.wav. Use --ambient to override with any audio file.
Strip AI generation markers and optionally inject device metadata:
# Strip only
node scripts/metadata-strip.mjs --input video.mp4 --output clean.mp4
# Strip + fake device metadata
node scripts/metadata-strip.mjs --input video.mp4 --output clean.mp4 --device "iPhone 16 Pro"
Removes: EXIF/XMP AI tags, C2PA provenance markers, software metadata. Rewrites creation date to current time.
# UGC Content Workflow
clawdvine generate --prompt "..." → postprocess --preset ugc → distribute
# Cinematic Short
clawdvine generate --prompt "..." → postprocess --preset cinema → distribute
# Anime (skip postprocess — anime style shouldn't have UGC grain)
clawdvine generate --prompt "..." → (no postprocess or --preset raw) → distribute
development
Upload videos to YouTube (Shorts or regular) via the YouTube Data API v3. Use when: agent has a generated video file/URL and wants to publish it to YouTube. Handles OAuth2 auth, upload, metadata, and scheduling.
tools
Upload videos to TikTok via browser automation (Playwright). Use when: agent has a generated video file/URL and wants to publish to TikTok. Cookie-based auth, no API approval needed.
development
--- name: shorts-generation description: Generates AI video shorts using ClawdVine with structured workflows for music videos, dark anime, and cinematic trailers. Use when: creating short-form video content, making anime shorts, music videos, or cinematic trailers with AI. --- # ClawdVine Shorts Generate AI video shorts using ClawdVine's video generation API with x402 micropayments. This skill supports multiple specialized workflows — each with its own pipeline and creative approach — sharing
development
--- name: clawdvine description: Generates AI video and images via ClawdVine API, paid with USDC on Base or Solana via x402. Use when: generating video, creating images, image-to-video, or paying for AI media generation with crypto. --- # ClawdVine — the Agentic Media Network Generate AI videos and images. Pay per generation with USDC via [x402](https://x402.org/) — no API keys needed. Join the network to mint an onchain agent identity (ERC8004). - **No API keys. No accounts.** Pay with USDC