This duck helps turn a short-video share link into adirect link without a watermark—for public videos from Douyin, Xiaohongshu/RedNote, Kuaishou, Bilibili, and similar platforms. One command returns the original downloadable URL and video metadata, saving you from building the parsing flow yourself.
Data flows through doubaoya.com only; authenticate with your own key (environment variable
DOUBAOYA_API_KEY, in the formdyh_…). No custom parsing flow is needed; usage is billed per request.
Use cases
| Scenario | How to use it | What you get |
|---|---|---|
| Save videos without watermarks | Supply a share URL | A direct link without a watermark |
| Get footage for derivative edits | Resolve a popular video to its original footage | The downloadable original video URL |
| Build a collection | Resolve videos one at a time to build a library | Each video’s title + direct URL |
| View video metadata | Read the returned fields after resolving the URL | Video title and other metadata |
Resolve onlyoneshare URL per run. For multiple URLs, run the script multiple times.
Workflow (3 steps)
1. Obtain the share URL
Obtain a video share URL from the user for a public post on Douyin, Xiaohongshu/RedNote, Kuaishou, Bilibili, or a similar platform.
2. Run the script
python3 "$SKILL_PATH/scripts/download.py" "<分享链接>"
From the successful response envelope, the script writes data to stdout as JSON.Run the script only once per URL, read the full stdout directly; do not use head/tail for a preview.
3. Render the result
data has aflat structure(without an itemwrapper); usedefensive access——title(video title) / videoUrl(direct video URL without a watermark) / cover(cover image) may be missing; leave missing values empty instead of failing. Give videoUrl to the user, and usetitle as the description. For image-text posts, the video URL is empty; instead read imageUrls(array of direct image URLs).
Get the access key
- Open doubaoya.com
- Log in
- Open the Key Center
- Generate a key(in the form
dyh_…)
Set the environment variable (the script reads only this one):
export DOUBAOYA_API_KEY="dyh_你的口令"
Hard rule: never print the key, write it to a file, or echo it to the user. The script never outputs the key either. All requests go only to doubaoya.com。
API and response envelope
POST https://doubaoya.com/api/skills/video-downloader/invoke- Authorization header:
Authorization: Bearer $DOUBAOYA_API_KEY - Request body:
{ "url": "<分享链接>" }url: required string containing the video share URL
- Response envelope (
datahas a flat structure):{ "success": true, "requestId": "...", "data": { "platform": "douyin", "title": "...", "videoUrl": "https://...mp4", "cover": "https://...jpg", "imageUrls": [] }, "error": null }videoUrl: direct video URL without a watermark (empty for image-text posts)imageUrls: array of direct image URLs (populated for image-text posts; empty for video posts)cover/title/platform: cover image, title, source platform
- Check
successfirst: if it istrue, readdata; otherwise readerror.code/error.message。
Error handling
On failure, the script writes [error] CODE: message to stderr and exits with status 1. Common cases:
| HTTP | code | Meaning | Action |
|---|---|---|---|
| 401 | MISSING_API_KEY / UNAUTHORIZED |
Missing or invalid API key | Check DOUBAOYA_API_KEY, and regenerate a key in the Key Center |
| 400 | VALIDATION_ERROR |
Invalid parameter (for example, an empty or unrecognized URL) | Try a valid share URL |
| 402 | INSUFFICIENT_CREDITS |
Insufficient credits | Top up or add more credits at doubaoya.com |
| 502 | PROVIDER_FAILED |
Temporary upstream failure (automatically refunded) | Safe to retry |
502 PROVIDER_FAILEDis refunded automatically; retrying is safe and will not charge twice.
Directory structure
video-downloader/
├── SKILL.md # 本文件
└── scripts/
└── download.py # 零依赖脚本(urllib),调用 doubaoya.com