Install
openclaw skills install grabgrabUse when the user wants to download a video or audio from a URL. Supports 20+ platforms including YouTube, X/Twitter, TikTok, Instagram, Facebook, Reddit, Bilibili, Vimeo, Dailymotion, SoundCloud, Twitch, Pinterest, Snapchat, Bluesky, VK, OK.ru, Rutube, Streamable, Loom, Tumblr, Newgrounds, Xiaohongshu and more. Trigger when user says "download video", "save video", "grab video", provides a video URL and wants to download it, or mentions downloading from supported platforms.
openclaw skills install grabgrabDownload videos and audio from 20+ platforms by URL. Powered by GrabGrab.
| Platform | Example URLs |
|---|---|
| YouTube | youtube.com/watch, youtu.be/, youtube.com/shorts/, music.youtube.com |
| X / Twitter | x.com/.../status/, twitter.com/.../status/ |
| TikTok | tiktok.com/@.../video/, vm.tiktok.com/ |
instagram.com/p/, instagram.com/reel/, instagram.com/stories/ | |
facebook.com/.../videos/, fb.watch/ | |
reddit.com/r/.../comments/ | |
| Bilibili | bilibili.com/video/, b23.tv/ |
| Vimeo | vimeo.com/<id> |
| Dailymotion | dailymotion.com/video/ |
| SoundCloud | soundcloud.com/ |
| Twitch | twitch.tv/, clips.twitch.tv/ |
pinterest.com/pin/ | |
| Snapchat | snapchat.com/ |
| Bluesky | bsky.app/ |
| VK | vk.com/video, vk.com/clip |
| OK.ru | ok.ru/video/ |
| Rutube | rutube.ru/video/ |
| Streamable | streamable.com/ |
| Loom | loom.com/share/ |
| Tumblr | tumblr.com/ |
| Newgrounds | newgrounds.com/ |
| Xiaohongshu | xiaohongshu.com/, xhslink.com/ |
Use curl via the Bash tool to call the API:
curl -s -X POST "https://grabgrab.fun/api/download" \
-H "Content-Type: application/json" \
-d '{"url": "<VIDEO_URL>", "videoQuality": "<QUALITY>"}'
Video quality options (ask user if not specified, default to 1080):
max - Best available quality2160 - 4K1440 - 2K1080 - Full HD (default)720 - HD480 - SD360 - Low144 - MinimumDownload mode options (default to auto):
auto - Video with audio (default)audio - Audio onlymute - Video without audioThe API returns JSON. Handle each response type:
Direct download (type: "direct"):
{
"success": true,
"type": "direct",
"url": "https://...",
"filename": "video.mp4"
}
Action: Download the file using curl -L -o <filename> "<url>".
Picker (type: "picker") — multiple items found (e.g., Instagram carousel):
{
"success": true,
"type": "picker",
"items": [
{"type": "video", "url": "https://..."},
{"type": "photo", "url": "https://..."}
]
}
Action: Show the user the list of items and ask which ones to download, or download all videos.
Error:
{
"success": false,
"error": "Error message here"
}
Action: Show the error message to the user.
For direct downloads:
curl -L -o "<filename>" "<download_url>"
For tunnel/redirect URLs that need the proxy:
curl -L -o "<filename>" "https://grabgrab.fun/api/proxy?url=<encoded_download_url>"
IMPORTANT: If the direct URL download fails or returns HTML instead of a video file, retry using the proxy endpoint:
curl -L -o "<filename>" "https://grabgrab.fun/api/proxy?url=$(python3 -c 'import urllib.parse; print(urllib.parse.quote("<download_url>", safe=""))')"
After download completes:
-L flag with curl to follow redirects.downloadMode to "audio".videoQuality to "max".User: "Download this YouTube video: https://www.youtube.com/watch?v=dQw4w9WgXcQ"
Actions:
curl -s -X POST "https://grabgrab.fun/api/download" -H "Content-Type: application/json" -d '{"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "videoQuality": "1080"}'curl -L -o "filename.mp4" "<url>"User: "Save the audio from this TikTok: https://www.tiktok.com/@user/video/123"
Actions:
downloadMode: "audio": curl -s -X POST "https://grabgrab.fun/api/download" -H "Content-Type: application/json" -d '{"url": "https://www.tiktok.com/@user/video/123", "downloadMode": "audio"}'User: "/GrabGrab https://www.bilibili.com/video/BV1xx411c7mD"
Actions: