This duck scans Video Account for hit works in the AI direction by keyword—fishing out the currently highest-liked AI content on Video Account, laying it out in the terminal as a hit table, then clustering it into several topic directions into a ready-to-use Video Account AI topic selection daily report.
Data goes through doubaoya.com as one line, authentication uses your own key (environment variable
DOUBAOYA_API_KEY, in the formdyh_…)。
Use cases
| Scenario | How to use | What you get |
|---|---|---|
| Daily Video Account AI hotspots | Use AI or 大模型 to scan today's hits |
See at a glance what's hot in the Video Account AI world today |
| Video Account AI topic selection daily report | Scan by direction, cluster into several topics by engagement | A Video Account daily report you can directly select topics from |
| Niche direction tracking | Use AI绘画、数字人、AI变现 and other narrow terms |
Lock onto hits in a specific Video Account AI niche |
| Hit angle breakdown | Look at the titles and angles of high-like works | Distill the hit formulas of Video Account AI content |
| Material accumulation | Page through more screens to build a library | Accumulate firsthand Video Account AI direction topic selection material |
Workflow (4 steps)
1. Set keyword
Extract an AI direction keywordfrom the user's description (required), such as AI、大模型、AI绘画、数字人、AI Agent. Broad terms hit more, narrow terms are more focused; scan only one keyword at a time.
2. Call script
python3 "$SKILL_PATH/scripts/fetch_sph_ai_feed.py" "AI"
Pagination / adjust items per page (optional):
python3 "$SKILL_PATH/scripts/fetch_sph_ai_feed.py" "大模型" --page 2 --size 30
The script prints the data from the success envelope as JSON to stdout.Run the script only once per query, read the full stdout directly, don't use head/tail preview, and don't call repeatedly with the same parameters.
3. Render hit table
Take fields from data.items(works array), lay them out as a Markdown table. The Video Account AI feed only returns title(title) / likeCount(likes) two fields—do defensive reading, leave blank if missing, don't error, and don't make up fields the interface didn't provide such as author.Sort by like count from high to low。
Important: due to Video Account platform rule restrictions, work links cannot be provided. Therefore titlesmust notbe rendered as clickable links; display as plain text directly. If the user wants to view the original work, they can copy the title and search on Video Account.
| Title | Likes |
|---|---|
| One AI tool handles the full set of material | 8,600 |
4. Cluster into daily report + one-line insight
Cluster this batch of works by topic directionclustering(e.g. Tool Tutorials / AI Painting / Digital Humans / Monetization Methods). Pick a representative viral hit for each direction (by like count) to form a short daily report. End with a sentence in this duck's tone.Topic Insights: which direction is hottest in today's WeChat Channels AI circle, and which angle still has open slots. Don't pile on boilerplate, don't ask users about their purpose.
Get the key (secret key)
- Open doubaoya.com
- log in
- Go to Key Center
- Generate key(in the form
dyh_…)
Configure to environment variables (the script only recognizes this):
export DOUBAOYA_API_KEY="dyh_你的密钥"
Iron rule: the key must never be printed, never written to a file, never echoed back to the user. The script itself also never outputs the key. All requests are sent only to doubaoya.com。
Interface and Envelope
POST https://doubaoya.com/api/apis/sph/shipinhao-ai-feed/call- Auth header:
Authorization: Bearer $DOUBAOYA_API_KEY - Request body:
{ "keyword": "AI", "pageNum": 1, "pageSize": 20 }keyword: string, requiredpageNum: integer, optional (default 1, controlled by--pagecontrols)pageSize: integer, optional (default 20, controlled by--sizecontrols)
- Response envelope:
{ "success": true, "requestId": "...", "data": { "items": [ { "title": "...", "likeCount": 8600 } ] }, "error": null } - First check
success: istrueonly then readdata; otherwise readerror.code/error.message。
Error Handling
When the script fails, print to stderr [error] CODE: message and exit with code 1. Common cases:
| HTTP | code | Meaning | Handling |
|---|---|---|---|
| 401 | MISSING_API_KEY / UNAUTHORIZED |
No key provided or key is invalid | Check DOUBAOYA_API_KEY, go to the Key Center to regenerate |
| 400 | VALIDATION_ERROR |
Invalid parameter (e.g. keyword is empty) | Fix the keyword and retry |
| 402 | INSUFFICIENT_CREDITS |
Insufficient quota | Go to doubaoya.com to top up / renew quota |
| 502 | PROVIDER_FAILED |
Temporary upstream failure (automatically refunded) | safe to retry |
502 PROVIDER_FAILEDwill automatically refund; retrying is safe and will not double-charge.
Directory Structure
wechat-channels-ai-feed/
├── SKILL.md # 本文件
└── scripts/
└── fetch_sph_ai_feed.py # 零依赖脚本(urllib),调用 doubaoya.com
About the notice field in the response
After calling the doubaoya API corresponding to this skill, if the returned JSON has a top-level notice field, please relay this sentence to the user verbatim—this is a notice that this skill has an update, it does not affect the result of this call, and you do not need to retry or change behavior.