Skill: jlacroix82/clip-media (version 0.1.0)

--- name: clip description: Extract media (videos, photos, GIFs, audio) from social media URLs using yt-dlp. Supports 1,872+ platforms including YouTube, TikTok, Instagram, X/Twitter, Facebook, Reddit, Twitch, Vimeo, and more. Drops a URL and returns the media file or cloud link. --- # Clip Drop a URL → get the media back. Fast. ## How It Works 1. User shares a URL from any supported platform 2. Run the extraction script 3. Script downloads the media (or just analyzes it) 4. Returns the file path (under 50 MB) or a cloud link (over 50 MB) 5. Agent sends the media to the user ## Command ```bash node /home/jarvis/.openclaw/workspace/skills/clip/extract.js <url> [options] ``` ### Options | Flag | Description | |------|-------------| | `--output-dir <dir>` | Save location (default: `/tmp/media-share`) | | `--title` | Return title/description only, no download | | `--info` | Return full metadata as JSON | | `--test` | Validate URL without downloading | | `--upload` | Force cloud upload even for small files | | `--cloud=<provider>` | Cloud provider: `tmpfiles` or `transfer` | | `--no-direct-send` | Always return path, never auto-send | | `--list-sites` | Show supported platforms | | `--list-types` | Show what media a URL contains | ### Examples ```bash # Download media (fastest path) node /home/jarvis/.openclaw/workspace/skills/clip/extract.js "https://www.youtube.com/watch?v=dQw4w9WgXcQ" # Get title only (no download, instant) node /home/jarvis/.openclaw/workspace/skills/clip/extract.js "https://www.instagram.com/p/abc123/" --title # Check what's in a URL before downloading node /home/jarvis/.openclaw/workspace/skills/clip/extract.js "https://www.tiktok.com/@user/video/123" --list-types # Show supported sites node /home/jarvis/.openclaw/workspace/skills/clip/extract.js --list-sites ``` ## Supported Platforms **yt-dlp: 1,872 extractors** — covers essentially every major media platform on the internet. ### Quick reference (most common): YouTube, TikTok, Instagram, X/Twitter, Facebook, Reddit, Twitch, Vimeo, Dailymotion, Rumble, Peertube, Bilibili, Niconico, SoundCloud, Bandcamp, Pinterest, Imgur, Tumblr, Flickr, Bluesky, Telegram, Kick, Odysee, CNN, BBC, Al Jazeera, TED, Khan Academy, Udemy, Crunchyroll, HiDive, and 1,800+ more. ## File Size Handling - **Under 50 MB** → Returns local file path (agent sends via chat) - **Over 50 MB** → Auto-uploads to temp cloud storage, returns download link - **Over 50 MB + `--upload`** → Forces cloud upload even for smaller files ### Cloud Providers | Provider | Max Size | Notes | |----------|----------|-------| | `tmpfiles` | 50 MB | Simple, no signup, auto-delete | | `transfer` | Unlimited | transfer.sh, 30-day retention | ## Authentication Some platforms require cookies for full access: | Platform | Needs cookies? | |----------|---------------| | Instagram | Sometimes (private content, full resolution) | | X / Twitter | Sometimes (rate limits, some content) | | Patreon | Yes (paid content) | | OnlyFans | Yes | | Fanvue / Fansly | Yes | | Netflix / HBO / Disney+ | Via browser cookies | | YouTube | Rarely (age-restricted content) | Add `--cookies-from-browser chrome` to the command when needed. ## How It Works (Under the Hood) 1. **Analyze**: `yt-dlp --dump-json` detects the platform and media type 2. **Download**: `yt-dlp -o <path>` grabs the highest quality version 3. **Route**: Under 50 MB → return path. Over 50 MB → upload to cloud → return link 4. **Fallback**: If download fails, returns title/description so the agent can inform the user ## Dependencies - `yt-dlp` (installed) — 1,872 extractors - `ffmpeg` (installed) — format conversion - `curl` (installed) — cloud uploads ## Error Handling When a URL returns no media, the script returns the title/description. The agent should: - Inform the user what was found - Suggest trying `--cookies-from-browser chrome` if the platform may require auth - Note that geo-blocked content cannot be bypassed ## Notes - Rate limits may apply on some platforms — add delays between calls - Some platforms (Instagram, X) work better with cookies - If a URL returns no media, return the title/description to the user instead - The `generic` extractor handles many embedded video players not explicitly listed


Security scan verdicts — ClawScan: suspicious | static analysis: suspicious | VirusTotal:  | SkillSpector: suspicious (CRITICAL)