This duck helps you start from one Official Account name and dig outbenchmark accounts in the same track whose playbooks you can directly copy, then recommend a fewadvanced benchmarks with more mature models worth chasing—in one sentence, laying out the competitor matrix for you.
Data goes through doubaoya.com along one line, with authentication using your own key (environment variable
DOUBAOYA_API_KEY, in the formdyh_…)。
Applicable scenarios
| Scenario | How to use | What you get |
|---|---|---|
| Competitor discovery | Give a known account and let this duck find similar accounts in the same track | A batch of competitor accounts you can benchmark |
| Benchmark matrix | Build a benchmark table around your own account | A benchmark matrix layered by same-tier + advanced |
| Launch reference | A new account has no direction; first find mature benchmarks to copy their structure | Copyable playbooks and positioning |
| Placement product selection | Before choosing cooperation/placement accounts, look at the track ecosystem | Distribution of top and mid-tier players in the same track |
Workflow (4 steps)
1. Confirm the benchmark seed account
Take one from the user descriptionOfficial Account nameas the seed. The more accurate the name, the better the hit rate; if the user provides an account category (such as "workplace" or "mother and baby"), use --type to pass it in and narrow the track.
2. Call the script
python3 "$SKILL_PATH/scripts/fetch_similar.py" "某某公众号"
Narrow with category:
python3 "$SKILL_PATH/scripts/fetch_similar.py" "某某公众号" --type "职场"
The script prints the data from the success envelope to stdout as JSON.Run the script only once per seed, read the full stdout, don't use head/tail to preview.
3. When the account is not indexed: optional pre-sync (best effort)
If the account is not yet in the database, you can first submit a sync acceptance (asynchronous, effective in about 30 minutes). You need to provide the WeChat ID at the same time:
python3 "$SKILL_PATH/scripts/fetch_similar.py" "某某公众号" --sync --wechat-id "gh_xxxx"
--sync will first send an acceptance request, thenregardless of whether the acceptance succeeds or not, continue pulling the currently available similar accounts. If it was just submitted and the data has not come back yet, just run it again after about 30 minutes.
⚠️ Pre-sync isa best-effort optional pre-step. If the sync interface is under maintenance or the call fails (it will return
503 CAPABILITY_UNAVAILABLEand other error codes), the script only prints a[warn] 预同步没做成……,without blocking the main query—seeing this warn means the indexing was not submitted this time, and the results may not include the latest data for that account; just continue with the JSON from stdout as usual. If the main query itself fails, it still reports an error and exits as usual.
4. Lay out the benchmark matrix + give one insight
From data.items , take the benchmark account fields—accountName(account name),avgReadCount(average read count),similarity(similarity), read defensively, leave blank if missing. By avgReadCount Lay out two tiers in a Markdown table:Same-tier benchmarks(similar scale, gameplay can be copied directly) and Higher-tier benchmarks(larger scale, models can be caught up to);similarity the higher, the closer to the seed track. After the table, add a line in this duck's voice: what the top players in this track are fighting for, and which tier your own account should target.
Get the key (secret key)
- Open doubaoya.com
- Log in
- Go to Key Center
- Generate key(in the form
dyh_…)
Configure it as an environment variable (the script only recognizes this):
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。
Interface and envelope
- Similar accounts:
POST https://doubaoya.com/api/apis/gongzhonghao/gongzhonghao-similar-account/call- Request body:
{ "accountName": "某某公众号", "accountType": "职场" }accountName: string, requiredaccountType: string, optional (narrow the track)
- Request body:
- Optional pre-sync:
POST https://doubaoya.com/api/apis/gongzhonghao/gzh-sync-account/call- Request body:
{ "wechatId": "gh_xxxx", "accountName": "某某公众号" } - Returns an acceptance receipt, effective asynchronously (about 30 minutes); only returns an acceptance receipt,not billed
- If this interface is in a maintenance period, it returns
503 CAPABILITY_UNAVAILABLE; this status is intercepted before points are deducted, so no fee is incurred
- Request body:
- Auth header:
Authorization: Bearer $DOUBAOYA_API_KEY - Return envelope:
{ "success": true, "requestId": "...", "data": { "items": [ { "accountName": "...", "avgReadCount": 50000, "similarity": 0.92 } ] }, "error": null } - First check
success: if it istruethen readdata; otherwise readerror.code/error.message。
Error handling
Main queryOn failure, print to stderr [error] CODE: message and exit with code 1. (The only exception is --sync 's optional pre-sync: if it fails, only print [warn] and continue running the main query, without affecting the exit code.) Common cases:
| HTTP | code | Meaning | Handling |
|---|---|---|---|
| 401 | MISSING_API_KEY / UNAUTHORIZED |
No key provided or invalid key | Check DOUBAOYA_API_KEY, go to Key Center to regenerate |
| 400 | VALIDATION_ERROR |
Invalid parameters (e.g. accountName is empty, --sync is missing --wechat-id) | Fix the parameters and retry |
| 402 | INSUFFICIENT_CREDITS |
Insufficient quota | Go to doubaoya.com to top up/renew quota |
| 404 | NOT_FOUND |
Account not indexed | You can try --sync --wechat-id to submit a sync (best effort; if submission fails, it does not block this query), and retry after about 30 minutes |
| 502 | PROVIDER_FAILED |
Temporary upstream failure (automatically refunded) | safe to retry |
| 503 | CAPABILITY_UNAVAILABLE |
This capability is in a maintenance period | If pre-sync encounters it, only downgrade to a warning, and the main query continues; not billed (intercepted before points are deducted) |
502 PROVIDER_FAILEDwill automatically refund, retrying is safe, and there will be no duplicate charge.
Directory structure
wechat-similar-account/
├── SKILL.md # 本文件
└── scripts/
└── fetch_similar.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, does not affect the result of this call, and does not require retrying or changing behavior.