Clip
⚠️ Security warnings before use:
- Files over 50 MB require
--confirm-uploadto upload to public third-party hosts (tmpfiles.org, transfer.sh) - Browser cookie access (
--cookies-from-browser) exposes active session tokens for any platform you're logged into - Never use with private, paid, confidential, copyrighted, or regulated content unless you explicitly intend external transmission
How It Works
- User shares a URL from any supported platform
- Run the extraction script
- Script downloads the media (or just analyzes it)
- Returns the file path (under 50 MB) or a cloud link (over 50 MB)
- Agent sends the media to the user
⚠️ Before any extraction: Confirm the content is not private, paid, or sensitive. Files over 50 MB are uploaded to public temp hosts — the script now shows a pre-upload warning and supports --no-upload to skip it entirely.
Command
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 |
| --confirm-upload | Required for any public cloud upload — explicit opt-in |
| --cloud=<provider> | Cloud provider: tmpfiles or transfer |
| --no-direct-send | Always return path, never auto-send |
| --no-upload | Skip cloud upload entirely — always return local path |
| --list-sites | Show supported platforms |
| --list-types | Show what media a URL contains |
Examples
# 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 → Requires
--confirm-uploadto upload to temp cloud storage, returns download link - Over 50 MB without
--confirm-upload→ Returns local path only, blocks upload with clear message - Over 50 MB +
--upload→ Forces cloud upload even for smaller files (still requires--confirm-upload)
Cloud Providers
⚠️ Both providers are public and third-party. Uploaded files are accessible to anyone with the link.
| Provider | Max Size | Notes |
|----------|----------|-------|
| tmpfiles | 50 MB | Simple, no signup, auto-delete |
| transfer | Unlimited | transfer.sh, 30-day retention |
Pre-upload warning: Files over 50 MB require --confirm-upload for any public cloud upload. Without it, the script returns the local path only and blocks the upload with a clear message. Use --no-upload to always save locally without prompts.
Authentication
⚠️ Browser cookie access exposes active session tokens for every platform you're logged into.
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) |
If cookies are needed:
- Use
--cookies-from-browser chromeas a last resort — it exposes ALL platform session tokens in that browser - Warn the user that this could enable unauthorized account access if the machine is compromised
- Prefer manual cookie paste or API keys when available
- Never use
--cookies-from-browserwith paid/sensitive platforms unless the user explicitly consents to the risk - Consider exporting cookies from only the specific browser/profile needed, not the default one
How It Works (Under the Hood)
- Analyze:
yt-dlp --dump-jsondetects the platform and media type - Download:
yt-dlp -o <path>grabs the highest quality version - Route: Under 50 MB → return path. Over 50 MB → upload to cloud → return link
- Fallback: If download fails, returns title/description so the agent can inform the user
Dependencies
yt-dlp(installed) — 1,872 extractorsffmpeg(installed) — format conversioncurl(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 chromeif 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
genericextractor handles many embedded video players not explicitly listed
微信扫一扫