SuperAPI AI Directory

wechat-original-hot

Marketing & growth

View repository

Updated 10-16 04:59

About this skill

WeChat Official Account Original Popular Ranking (Doubaoya)

This duck helps you byindustry category + time rangefish out recentoriginalpopular viral articles from WeChat official accounts—focusing specifically on viral hits written by original creators, bypassing the pile of reposts and rewrites, so original writers can clearly see what angles and entry points peers are using to make original content go viral. With one category, the terminal lays out a clickable table of original viral articles, plus a line of creative insight.

Data goes through doubaoya.com on one line, authentication uses your own key (environment variable DOUBAOYA_API_KEY, in the form dyh_…)。

Note: The original ranking and the 100,000+ viral article rankinginterfaces share the same source(both go through category-time-hot), the difference lies inthe emphasis of the display layer/interpretation layer—this skill interprets from the perspective of original creators, emphasizing "this is a viral hit produced by original writers themselves," guiding you to distill reusable original writing methods, rather than simply looking at the ceiling of read counts.


Applicable scenarios

Scenario How to use What you get
Original topic inspiration Pull 科技数码 to see what original writers are recently writing about and how they切入 Find direction for your next original piece
Original writing method breakdown Sweep the titles and openings of original viral articles in a certain category Discover reusable original title/entry point patterns
Original trend tracking Pull at fixed intervals 人文资讯 the original ranking See where original content trends are heading
Peer benchmarking Lock onto 健康养生 to see which original authors in the same track are running volume Benchmark against top original content strategies
Original material accumulation Batch collect original viral articles by category Build a firsthand set of referenceable original examples

Workflow (4 steps)

1. Confirm category and time range

🔴 Category is an official closed set, only full track names are recognized. The most common pitfall here is not "which track has no content," but rather the name not being in the closed set: writing 科技、财经、职场、教育 always returns three empty rankings, not because these tracks have no data, but because these four words are not legal track names at all—the official forms are 科技数码、财富理财、职场发展、 教育考试, and after switching to them, the same time range immediately has all three rankings full. Upstream treats values outside the closed setwithout erroring or correcting, only silently returning empty, so "writing the wrong name" and "this track has no content" look exactly the same in the response.Match the name first, then talk about data.

The 22 officially supported tracks (copy exactly, don't abbreviate, don't invent):

人文资讯 知识百科 健康养生 时尚潮流 美食餐饮 乐活生活 旅游出行 搞笑幽默 情感心理 体育娱乐 美容美体 文摘精选 民生资讯 财富理财 科技数码 创投商业 汽车交通 房产楼市 职场发展 教育考试 学术研究 企业品牌

Map the abbreviations users say to full names before querying: Tech/Digital → 科技数码, Finance/Wealth Management/Investment → 财富理财, Workplace → 职场发展, Education → 教育考试, Entertainment/Sports → 体育娱乐, Beauty → 美容美体, Real Estate → 房产楼市, Startups/Business → 创投商业, Lifestyle → 乐活生活. Default 科技数码, only pull one category at a time.

民生资讯 is on the official list, butcurrently no data can be retrieved in actual testing(multiple time windows and multiple reruns all came back empty). It should not be removed from the list—whenever the upstream fills it in, it can be used—for now, just don't select it.

Three hard rules for the time range(tested in the same batch):

  1. startDate and endDate must both be provided, missing either one gets it rejected outright. When the script does not specify them, the default is end date = today, start date = 6 days before today(the past week); this default is safe.
  2. Don't query dates that are too old. The official statement is that it can go back 30 days; in actual testing it was relaxed to about 60 days;startDate when earlier than "60 days before today", the API returns "date format error"—this message is misleading; the format is fine, it's that the date is beyond the retention period. When you see it, move the start date later; don't change the date format. To be safe, use it as 30 days.
  3. Data lags by about two days. Querying only today or yesterday will definitely be empty; to see the latest, it is recommended to set the range end date to 2 days before today. The default past-week range already includes the days with data, so there will still be data as usual.

2. Call the script

python3 "$SKILL_PATH/scripts/fetch_original_hot.py" --type 科技数码

When specifying a rangecalculate dates based on today; don't copy any hardcoded dates(hardcoded dates will eventually slide out of the 60-day window):

python3 "$SKILL_PATH/scripts/fetch_original_hot.py" --type 人文资讯 \
  --start "$(date -d '-9 days' +%F 2>/dev/null || date -v-9d +%F)" \
  --end   "$(date -d '-2 days' +%F 2>/dev/null || date -v-2d +%F)"

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 to preview, and don't call it repeatedly with the same parameters.

3. Render the original viral article table

From data.items(article array), take the fields and lay them out as a Markdown table. Read fields defensively—title / accountName(account) / readCount(read count) may be missing; if missing, leave blank, don't error. Render the title as aclickable link(pointing to the article's original URL), sorted by read count descending.

Title Original Account Read Count
Example Original Viral Article Some Original Account 50,000+

4. Give one original creation insight

After the table, add one insight in this duck's tone from anoriginal perspective: what angles these original viral hits are using, which writing style is working, and what angles original writers haven't fully explored yet. Focus on "how to make original content go viral", keep it short and useful, don't pile on clichés.


Get the key (secret key)

  1. Open doubaoya.com
  2. Log in
  3. Go to Key Center
  4. Generate Key(in the form dyh_…)

Configure it as an environment variable (the script only recognizes this one):

export DOUBAOYA_API_KEY="dyh_你的密钥"

Iron rule: never print the key, never write it to a file, never echo it back to the user. The script itself also never outputs the key. All requests are sent only to doubaoya.com。


API and envelope

  • POST https://doubaoya.com/api/apis/gongzhonghao/category-time-hot/call (same interface as the 100k+ viral article ranking; the distinction between original and 100k+ is interpreted with a different emphasis at the presentation layer)
  • Auth header:Authorization: Bearer $DOUBAOYA_API_KEY
  • Request body:{ "type": "科技数码", "startDate": "YYYY-MM-DD", "endDate": "YYYY-MM-DD" }
    • type: string, industry category,must be one of the full names of the 22 official tracks above(default 科技数码)
    • startDate / endDate:YYYY-MM-DD,both are required; the start date must not be earlier than 60 days before today (official policy is 30 days); data lags by about two days
  • Response envelope:
    {
      "success": true,
      "requestId": "...",
      "data": { "items": [ { "title": "...", "accountName": "...", "readCount": 56789 } ] },
      "error": null
    }
    
  • First check success: if it is true , only then read data; otherwise read error.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 invalid key Check DOUBAOYA_API_KEY, go to the key center to regenerate it
400 VALIDATION_ERROR Invalid parameters (e.g. wrong date format) Fix the category/date and retry
402 INSUFFICIENT_CREDITS Insufficient quota Go to doubaoya.com to top up/renew quota
422 PROVIDER_NO_RESULT No data found for this set of input parameters.Most likely the start date is outside the 60-day retention period—even if it says "invalid date format" Move the start date forward into the 60-day window and retry; do not change the date format
502 PROVIDER_FAILED Temporary upstream failure (automatically refunded) safe to retry

502 PROVIDER_FAILED will automatically refund; retrying is safe and will not double-charge.

All three rankings have 0 entries(success: true but no data): this is not a failure, and itdoes not deduct your credits—the response will include a noResult flag, and the credits are refunded on the spot. Troubleshoot in this order:

  1. Is the category name not among those 22(most common, e.g. writing 科技 instead of 科技数码);
  2. Does the range only cover the last two days (data not out yet);
  3. If all are correct, thenwait a while and retry once with the same parameters—upstream occasionally returns transient empty values; this duck has actually encountered cases where the same set of parameters was empty once and full the next time.Don't conclude "this track has no data" based on a single empty result.

Directory structure

wechat-original-hot/
├── SKILL.md                      # 本文件
└── scripts/
    └── fetch_original_hot.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 no retry or behavior change is needed.