doubaoya
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinese都爆鸭 · doubaoya
Doubaoya · doubaoya
本鸭是给新媒体 / 运营准备的爆款工作搭子。你(AI agent)拿一条 ,
就能替用户挖爆款选题、追全网热点、搜三大平台内容、解析作品、写开场脚本、检测违禁词——
全部通过 的公开 API 完成。用户不用碰任何技术细节,你负责调接口、拼结果。
DOUBAOYA_API_KEYhttps://doubaoya.comThis Duck is a viral content assistant for new media / operations professionals. As an AI agent, with a single , you can help users dig viral topics, track cross-platform hot spots, search content across three major platforms, analyze content, write opening scripts, and detect prohibited words—all through public APIs of . Users don't need to deal with any technical details; you are responsible for calling the APIs and presenting the results in user-friendly language.
DOUBAOYA_API_KEYhttps://doubaoya.com0. 你能帮用户做什么(一句话版)
0. What You Can Do for Users (One-Sentence Version)
- 挖选题:给个赛道关键词,返回正在升温的爆款方向。
- 追热点:一次请求聚合多平台热榜,给出选题信号。
- 搜内容:按关键词搜抖音 / 小红书 / 公众号的真实作品与文章。
- 看账号:查达人 / 竞品账号的粉丝量、作品概况。
- 解析作品:粘贴一个公开链接,返回归一化的标题、作者、互动数据。
- 保命:发布前检测违禁词,返回标注版正文与风险类别;命中词从标注定位,替换由你结合上下文给。
- 写脚本:以上数据为素材,由你(agent)合成开场脚本 / 分镜。
记进第二大脑(—— ⛔ 已下架,见 §3 的「第二大脑」小节。)mera
- Topic Mining: Provide a track keyword, return rising viral directions.
- Hot Topic Tracking: Aggregate multi-platform hot rankings in one request, provide topic signals.
- Content Search: Search real content and articles on Douyin / Xiaohongshu / Gongzhonghao by keywords.
- Account Insights: Check follower counts and content overview of influencers / competitor accounts.
- Content Analysis: Paste a public link, return normalized title, author, and interaction data.
- Compliance Check: Detect prohibited words before publishing, return annotated content and risk categories; locate hit words from the difference between annotated and original content, and provide replacement suggestions based on context.
- Script Writing: Use the above data as materials to synthesize opening scripts / storyboards (as an agent).
Save to Second Brain (—— ⛔ Discontinued, see "Second Brain" section in §3.)mera
0.5 用户该用哪个能力?(按"我想做什么"选)
0.5 Which Capability Should Users Use? (Choose by "What I Want to Do")
本 Skill 是总入口 / 上手向导:一条 key 通到都爆鸭全部能力。用户通常不知道有哪些能力,
你(agent)的活是听懂用户想干嘛 → 选对能力 → 调 → 把结果讲成人话。
🔑 这张速查表只回答「该调哪一条」,不回答「怎么填参数」。 每行给三样东西:能力的、一句用途、详情端点(operationKey,免鉴权免费)。 要发请求,先GET那个详情端点,从返回里读入参规格和GET的execution(§2.1)—— 入参一律现拉,本文档一个字段名都不抄。抄进来的字段会漂,而漂了没有任何地方会报错。target
公众号请求例外:只要请求涉及公众号,先读
,再按其优先级选 Skill。极简原则:
要交付一篇完整文章(写 + 排版 + 存草稿)走写作交付链;本地扫码、按号查最新 / 今日、拉正文或历史归档走
MP Ark;公开数据、互动指标和选题分析走都爆鸭云端能力。
references/wechat-routing.json「帮我写一篇公众号文章」例外:这不是一个 API 能干完的活,是一条链——
本 Skill 自己接前四跳( 拉爆文样本 + 写正文; 起标题与
封面套路,要成品封面方案则用 ; 出过审版正文)→
(排版 + 封面 + 存进用户自己的公众号草稿箱)。
🔴 先问清用户要的终态,再决定走到链上哪一站:只要成稿,写完正文就结束;
要排版好的公众号 HTML 或要文章进自己的草稿箱,就得一路走到 。
交一段 Markdown 就默认收尾,是这条链最常见的断头;反过来,用户只要成稿时擅自去写他的公众号后台
同样不对—— 有真实副作用。拿不准就问一句。
逐跳导航(做完这一步该走哪一步)由 负责,它有完整的任务后导航图;把交棒说清楚再交过去,
用户没装 时就按上面这条链自己接续。
api.gzh.hotArticleapi.gzh.cozeDataskill.wechat.coverDesignskill.wechat.prohibitedWordwechat-article-pipelinewechat-article-pipelinewechat-article-pipelinedbydby「我自己的东西」例外 —— ⛔ 该能力已下架:请求指向用户自己的内容(帮我记一下 / 我的笔记 /
我之前说过 / 我是个什么样的人)时,过去走 第二大脑;该能力已下架,现在调不通(判据与
失效条件见 的 字段)。
如实告诉用户这个能力下架了,别拿公开平台搜索去顶替——公开搜索看不见用户自己的笔记,
只会拿陌生人的内容糊弄他,那比直说「没有这个能力」更糟。
merareferences/mera-routing.jsonretired选题 / 热点 —— 通用选题从这一档起手
| 用户这么说(运营白话) | 该调哪条 | 一句话用途 | 详情端点( |
|---|---|---|---|
| "最近全网在火什么?给我点选题" —— 🔴 不带关键词直取,通用选题的正确起手 | | 全网热点聚合直取,通用选题首选 | |
| "全网热搜 / 热搜关键词 / 热榜TOP10 / 出一批热词当选题种子" | | 全网热搜关键词 | |
| "某个词近 30 天在各平台被讨论成什么样 / 近30天作品 / 社媒舆情 / 舆情监测" | | 全平台近30天作品聚合 | |
| "这个词的跨平台讨论量趋势"(CN 版近 30 天,与上一条是两条能力) | | Last 30 Days—CN版 | |
| "内容出海 / 出海爆款 / 出海日报 / 出海选题 / 出海流量风口 / 全平台爆款" | | 全平台内容出海Top榜 | |
小红书
| 用户这么说(运营白话) | 该调哪条 | 一句话用途 | 详情端点( |
|---|---|---|---|
| "我这个赛道在涨啥 / 爆款笔记发现 / 小红书热门笔记 / 找对标笔记" | | 小红书爆款笔记发现 | |
| "搜小红书笔记 / 小红书搜索 / 小红书笔记查询 / 小红书爬取" | | 搜索小红书笔记 | |
| "搜小红书作品 / 照着写小红书 / 对标后再写(先取数再动笔)" | | 搜索小红书作品 | |
| "批量爬小红书作品 / 小红书爬虫 / 小红书作品采集" | | 小红书作品采集 | |
| "小红书封面怎么做 / 首图套路 / 封面选题 / 起个小红书标题 / 笔记拆解 / 笔记对标 / 对标分析 / 选题拆解 / 爆款结构" | | 小红书爆款封面/标题/笔记分析数据 | |
| "小红书日榜 / 小红书 TOP / 今日爆款笔记" | | 小红书日榜 | |
| "小红书周榜 / 小红书周排行 / 一周爆款 / 周度趋势 / 中线选题" | | 小红书周榜 | |
| "低粉爆款 / 素人爆款 / 黑马笔记 / 低粉高赞 / 小号打法 / 冷启动对标" | | 小红书低粉爆款榜 | |
抖音
| 用户这么说(运营白话) | 该调哪条 | 一句话用途 | 详情端点( |
|---|---|---|---|
| "搜抖音作品 / 抖音搜索 / 抖音综合搜索 / 扒抖音作品 / 短视频选题" | | 搜索抖音作品 | |
| "抖音实时搜索 / 抖音最新发布 / 刚发出来的那批" | | 抖音实时搜索 | |
| "扒评论区 / 抖音评论 / 评论分析 / 评论风向 / 用户需求" | | 抖音作品评论 | |
公众号
| 用户这么说(运营白话) | 该调哪条 | 一句话用途 | 详情端点( |
|---|---|---|---|
| "搜公众号文章 / 公众号取数 / 热门文章 / 扒文章" | | 搜索公众号文章 | |
| "公众号爆文 / 爆款文章 / 爆款仿写 / 写公众号先拉样本" | | 公众号爆文搜索 | |
| "公众号热门文章 / 只要真火过的(阅读量有下限那种)"(与上一条是两条能力:这条按阅读量门槛筛,拿的是"确实火过"的样本) | | 公众号热门文章查询 | |
| "公众号封面怎么做 / 爆款封面 / 起个公众号标题 / 标题套路 / 高点击标题" | | 公众号爆款封面数据(返回同赛道爆款的封面图 + 标题 + 点击量,给你数据自己提炼) | |
| "帮我把封面设计出来 / 直接给我一版封面方案"(与上一条是两条能力:那条给素材数据,这条直接产出封面设计方案) | | 公众号封面图制作 | |
| "追更某个号 / 盯公众号 / 订阅公众号 / 账号发文列表 / 竞品发文复盘 / 某公众号发了什么" | | 公众号账号发文列表 | |
| "公众号 10 万+ / 原创爆文 / 原创热文 / 原创热门榜" | | 公众号10万+/原创榜 | |
| "头部账号 / 公众号排行 / 公众号榜单 / 热度指数 / 热门账号" | | 公众号热门账号榜 | |
| "公众号阅读增长 / 增长榜 / 增长率排行 / 持续走高"(要账号级的增量与名次) | | 公众号阅读增长榜 | |
| "黑马账号 / 公众号黑马 / 流量风向 / 增长榜里每个号给我一篇代表作"(与上一条同一条上游线,但是两条能力:这条按作者去重、每人只出最高阅读那篇,标题可直达原文) | | 公众号黑马账号推荐 | |
| "公众号 AI 这块在发什么 / 公众号 AI 日报" | | 公众号AI日报源 | |
| "公众号文旅 / 短剧这块在发什么 / 每日榜" | | 公众号文旅/短剧日报源 | |
| "按名字找公众号 / 这个号叫什么 ID"(三步编排的第一步,见下方 A 股例子) | | 公众号账号搜索 | |
| "某天各号发了什么 / 每日发文查询" | | 公众号每日发文查询 | |
| "短剧赛道的公众号热门文章日报"(产品化 Skill 侧,与上面的日报源是两条) | | 短剧-公众号信息源 | |
视频号
| 用户这么说(运营白话) | 该调哪条 | 一句话用途 | 详情端点( |
|---|---|---|---|
| "视频号最近什么在爆 / 视频号上 AI 这块在火什么 / 视频号日报 / 视频号选题" | | 视频号AI日报源 | |
| "搜视频号作品 / 视频号爆款" | | 搜索视频号作品 | |
| "找视频号账号" | | 搜索视频号账号 | |
| "AI 视频号信息源"(产品化 Skill 侧,与 api.sph.aiFeed 是两条) | | AI视频号信息源 | |
解析 / 合规 / 素材 / 查证
| 用户这么说(运营白话) | 该调哪条 | 一句话用途 | 详情端点( |
|---|---|---|---|
| "这条链接为什么火 / 解析链接 / 链接解析 / 作品详情 / 拆给我看" | | 解析作品/文章详情 | |
| "帮我把这段文案过一遍别违规 / 违禁词 / 合规检测 / 过审 / 极限词 / 广告法"(多平台口径) | | 多平台违禁词检测 | |
| "公众号这篇能不能发 / 公众号违禁词"(公众号口径,与上一条是两条) | | 公众号违禁词检测 | |
| "给我配张图 / AI 出图 / 文生图 / 图生图 / 改图 / 生成图片 / 主视觉" | | AI 生图 / 改图(慢操作,单请求内等结果) | |
| "这事儿是真的吗 / 联网搜索 / 联网查证 / 事实核查 / 查出处 / 引用来源 / 豆包搜索" | | 豆包联网搜索 | |
⏳ 生图这条要等:通常 1–2 分钟,最长 4 分钟(服务端上限 240 秒)。 用命令行调用就把客户端超时留到 ≥5 分钟——客户端超时必须晚于服务端上限: 服务端超时会退款,客户端提前放弃不会退,请求照样在服务端跑完、照样扣费, 而你只看到一句「超时」。慢是预期,别因为慢就重试(重试才是重复扣费)。
不是一条能力、得自己编排的(表里查不到是正常的,别硬凑一条):
- "A股公众号 / 股市大V / 股票公众号榜单" —— 三步:搜号 →
api.gzh.searchUser(或api.gzh.workList)拉发文 →api.gzh.dailyPublish找爆文。api.gzh.hotArticle - "把这条爆款改写成我的文案" —— 不调接口:Skill (公众号)/
wechat-rewrite(小红书)/xiaohongshu-rewrite(一稿多发),纯本地、不要 key。 没装就用搜来的素材由你合成。multi-rewrite "帮我记一下 / 查查我的笔记 / 我是个什么样的人"—— ⛔ 第二大脑()已下架, 无替代能力:如实告知,别拿公开搜索顶替(见上方「我自己的东西」例外)。mera- ⛔ (Seedream 5.0 lite)已于 2026-08-10 下架,调用一律 503, 所以它不在上表里。要出图走
seedream-lite,要公众号封面走skill.ai.imageGen。api.gzh.cozeData
首次上手三句话(用户第一次用时,可主动这么引导):
- 先确认有没有 key(没有就带他走 §1 拿 key,一次就好)。
- 问一句"你现在想做选题、追热点、还是查账号?"——把模糊需求收敛到上面某一类。
- 选一个能力先跑一次出结果,让用户看到真东西,再顺势引导下一步 / 订阅。
别一上来甩一长串能力清单给用户看——用户要的是"帮我做事",不是 API 目录。是你内部选路用的。operationKey
⚠️ 第四列是详情端点,不是调用地址。 平台有两个不相交的能力集合、两条互不回落的路由, 而且有三条走专用路由(方法未必是 POST),照详情端点拼调用地址必然出错。 调用地址只有一个来源:详情响应里的的execution(§2.1)。 表里没有你要的能力时,先跑一遍发现接口(§4)再下结论——本表是起手线索,不是全量清单。target
📖 想看全量、或者撞上选路的坑:装了的话,doubaoya-gateway是从发现接口生成的全量索引(本表只列最常用的那批);doubaoya-gateway/references/capability-index.md装的是只有踩过才知道的选路知识(哪条doubaoya-gateway/references/routing-pitfalls.md撞名、哪两条能力不该混用)。 没装网关也不影响本节使用——那两份是补充,不是前置。operationKey
❌ 选题铁律:不要拿用户的账号名 / IP 名当关键词去搜。 用户的公众号/账号名(如「菜籽油」)是他是谁(领域/人设/受众),不是搜索词——搜它只会搜到字面同名内容。 综合热点用无关键词的直取,IP 名字只用于匹配筛选。 做通用选题别用跨平台趋势雷达(api.trend.hotSpotKeyword)或全网热榜聚合(skill.trend.radar) ——它们是关键词搜索的搬运号 feed,热度常为空、多「未命名内容」; 通用综合热点一律走api.trend.hotTopics(无关键词直取)。api.trend.hotSpotKeyword
This Skill is the total entry / getting started guide: one key unlocks all capabilities of Doubaoya. Users usually don't know what capabilities are available, so your job as an agent is to understand what users want to do → select the right capability → call it → explain the results in plain language.
🔑 This cheat sheet only answers "which one to call", not "how to fill parameters". Each line provides three things: theof the capability, a one-sentence use case, and detail endpoint (operationKey, no authentication required, free). To send a request, firstGETthe detail endpoint, read the parameter specification andGETfrom the response (§2.1)—— Always fetch parameters on the fly, do not copy any field names from this document. Copied fields may become outdated, and there will be no error prompts when this happens.execution.target
Gongzhonghao Request Exception: As long as the request involves Gongzhonghao, first read
, then select the Skill according to its priority. Minimalist principle:
To deliver a complete article (writing + formatting + saving draft), use the writing delivery chain; local QR code scanning, checking latest/today's content by account, pulling full text or historical archives use
MP Ark; public data, interaction metrics and topic analysis use Doubaoya cloud capabilities.
references/wechat-routing.json"Help me write a Gongzhonghao article" Exception: This is not a task that can be completed by a single API, but a chain——
This Skill handles the first four steps ( pulls viral article samples + writes the full text; generates titles and cover strategies, use for finished cover solutions; generates compliance-ready content) →
(formatting + cover + save to user's own Gongzhonghao draft box).
🔴 First clarify the user's desired final state, then decide which step of the chain to stop at: If only a completed draft is needed, stop after writing the full text;
if a formatted Gongzhonghao HTML or saving the article to the user's draft box is required, proceed all the way to .
Delivering a Markdown segment by default is the most common incomplete delivery; conversely, it's also incorrect for users to go to their Gongzhonghao backend on their own when they only need a completed draft—— has real side effects. Ask if you're unsure.
The step-by-step navigation (which step to take next after completing this one) is handled by , which has a complete post-task navigation map; explain the handover clearly before passing the task, and if the user hasn't installed , continue the chain on your own as described above.
api.gzh.hotArticleapi.gzh.cozeDataskill.wechat.coverDesignskill.wechat.prohibitedWordwechat-article-pipelinewechat-article-pipelinewechat-article-pipelinedbydby"My Own Content" Exception —— ⛔ This capability has been discontinued: When the request refers to the user's own content (help me remember / my notes / what I said before / what kind of person I am), it previously used the Second Brain; this capability is now unavailable (criteria and invalidation conditions are in the field of ).
Tell users truthfully that this capability has been discontinued, do not replace it with public platform search——public search cannot see the user's own notes, it will only use strangers' content to fool them, which is worse than saying "this capability is not available".
meraretiredreferences/mera-routing.jsonTopic Selection / Hot Topics —— Start with this section for general topic selection
| User's Operational Language | Which to Call | One-Sentence Use Case | Detail Endpoint ( |
|---|---|---|---|
| "What's trending across the web recently? Give me some topics" —— 🔴 Fetch without keywords, the correct starting point for general topic selection | | Fetch aggregated cross-platform hot topics, first choice for general topic selection | |
| "Cross-platform hot searches / hot search keywords / hot ranking TOP10 / generate hot words as topic seeds" | | Cross-platform hot search keywords | |
| "How has a certain term been discussed across platforms in the last 30 days / last 30 days content / social media sentiment / sentiment monitoring" | | Aggregate content across platforms in the last 30 days | |
| "Cross-platform discussion volume trend of this term" (CN version for last 30 days, separate capability from the above) | | Last 30 Days—CN Version | |
| "Content export / export viral content / export daily feed / export topic selection / export traffic opportunity / cross-platform viral content" | | Cross-platform content export TOP ranking | |
Xiaohongshu
| User's Operational Language | Which to Call | One-Sentence Use Case | Detail Endpoint ( |
|---|---|---|---|
| "What's growing in my track / discover viral notes / Xiaohongshu popular notes / find benchmark notes" | | Discover Xiaohongshu viral notes | |
| "Search Xiaohongshu notes / Xiaohongshu search / Xiaohongshu note query / Xiaohongshu scraping" | | Search Xiaohongshu notes | |
| "Search Xiaohongshu content / write Xiaohongshu content by example / write after benchmarking (fetch data first then write)" | | Search Xiaohongshu content | |
| "Batch scrape Xiaohongshu content / Xiaohongshu crawler / Xiaohongshu content collection" | | Xiaohongshu content collection | |
| "How to design Xiaohongshu covers / first image strategy / cover topic selection / create a Xiaohongshu title / note analysis / note benchmarking / benchmark analysis / topic analysis / viral structure" | | Xiaohongshu viral cover/title/note analysis data | |
| "Xiaohongshu daily ranking / Xiaohongshu TOP / today's viral notes" | | Xiaohongshu daily ranking | |
| "Xiaohongshu weekly ranking / Xiaohongshu weekly top / weekly viral content / weekly trend / mid-line topic selection" | | Xiaohongshu weekly ranking | |
| "Low-follower viral content / amateur viral content / dark horse notes / low-follower high-like content / small account strategy / cold-start benchmarking" | | Xiaohongshu low-follower viral ranking | |
Douyin
| User's Operational Language | Which to Call | One-Sentence Use Case | Detail Endpoint ( |
|---|---|---|---|
| "Search Douyin content / Douyin search / Douyin comprehensive search / scrape Douyin content / short video topic selection" | | Search Douyin content | |
| "Douyin real-time search / Douyin latest releases / newly published content" | | Douyin real-time search | |
| "Scrape comment sections / Douyin comments / comment analysis / comment trend / user demand" | | Douyin content comments | |
Gongzhonghao
| User's Operational Language | Which to Call | One-Sentence Use Case | Detail Endpoint ( |
|---|---|---|---|
| "Search Gongzhonghao articles / Gongzhonghao data retrieval / popular articles / scrape articles" | | Search Gongzhonghao articles | |
| "Gongzhonghao viral articles / viral articles / viral content imitation / pull samples before writing Gongzhonghao articles" | | Search Gongzhonghao viral articles | |
| "Gongzhonghao popular articles / only those that have truly gone viral (with a minimum read count)" (separate capability from the above: this one filters by read count threshold, gets samples that "have truly gone viral") | | Query Gongzhonghao popular articles | |
| "How to design Gongzhonghao covers / viral covers / create a Gongzhonghao title / title strategy / high-click title" | | Gongzhonghao viral cover data (returns cover images + titles + click counts of viral content in the same track, you need to extract insights from the data) | |
| "Help me design a cover / give me a complete cover solution directly" (separate capability from the above: that one provides material data, this one directly produces cover design solutions) | | Gongzhonghao cover image creation | |
| "Follow updates of an account / monitor Gongzhonghao / subscribe to Gongzhonghao / account content list / competitor content review / what did a certain Gongzhonghao publish" | | Gongzhonghao account content list | |
| "Gongzhonghao 100k+ reads / original viral articles / original hot articles / original popular ranking" | | Gongzhonghao 100k+/original ranking | |
| "Top accounts / Gongzhonghao ranking / Gongzhonghao ranking list / popularity index / popular accounts" | | Gongzhonghao popular account ranking | |
| "Gongzhonghao read growth / growth ranking / growth rate ranking / continuous growth" (requires account-level growth and ranking) | | Gongzhonghao read growth ranking | |
| "Dark horse accounts / Gongzhonghao dark horse accounts / traffic trend / provide one representative article for each account in the growth ranking" (same upstream as the above, but separate capability: this one deduplicates by author, only returns the highest-read article per author, title links directly to the original) | | Gongzhonghao dark horse account recommendation | |
| "What's being published about AI on Gongzhonghao / Gongzhonghao AI daily feed" | | Gongzhonghao AI daily feed source | |
| "What's being published about cultural tourism / short dramas on Gongzhonghao / daily ranking" | | Gongzhonghao cultural tourism/short drama daily feed source | |
| "Find a Gongzhonghao by name / what's the ID of this account" (first step of a three-step process, see the A-share example below) | | Gongzhonghao account search | |
| "What did each account publish on a certain day / daily content query" | | Gongzhonghao daily content query | |
| "Daily feed of popular Gongzhonghao articles in the short drama track" (productized Skill side, separate from the above daily feed source) | | Short drama - Gongzhonghao information source | |
Shipinhao
| User's Operational Language | Which to Call | One-Sentence Use Case | Detail Endpoint ( |
|---|---|---|---|
| "What's trending on Shipinhao recently / what's trending about AI on Shipinhao / Shipinhao daily feed / Shipinhao topic selection" | | Shipinhao AI daily feed source | |
| "Search Shipinhao content / Shipinhao viral content" | | Search Shipinhao content | |
| "Find Shipinhao accounts" | | Search Shipinhao accounts | |
| "AI Shipinhao information source" (productized Skill side, separate from api.sph.aiFeed) | | AI Shipinhao information source | |
Analysis / Compliance / Materials / Verification
| User's Operational Language | Which to Call | One-Sentence Use Case | Detail Endpoint ( |
|---|---|---|---|
| "Why is this link trending / link analysis / link parsing / content details / break it down for me" | | Analyze content/article details | |
| "Help me check this copy for compliance / prohibited words / compliance detection / compliance check / extreme words / advertising law" (multi-platform standards) | | Multi-platform prohibited word detection | |
| "Can this Gongzhonghao article be published / Gongzhonghao prohibited words" (Gongzhonghao standards, separate from the above) | | Gongzhonghao prohibited word detection | |
| "Give me a matching image / AI image generation / text-to-image / image-to-image / image editing / image generation / main visual" | | AI image generation / editing (slow operation, wait for result within single request) | |
| "Is this true / web search / web verification / fact-checking / source verification / citation source / Doubao search" | | Doubao web search | |
⏳ Wait for image generation: Usually 1–2 minutes, maximum 4 minutes (server-side limit 240 seconds). If calling via command line, set client timeout to ≥5 minutes——client timeout must be later than server-side limit: Server-side timeout will refund credits, but if the client gives up early, credits will not be refunded, the request will still run on the server and be charged, and you will only see a "timeout" message. Slowness is expected, do not retry because of slowness (retrying will cause repeated charges).
Tasks that require manual orchestration (not a single capability, normal if not found in the table):
- "A-share Gongzhonghao / stock influencers / stock Gongzhonghao ranking" —— Three steps: to search accounts →
api.gzh.searchUser(orapi.gzh.workList) to pull content →api.gzh.dailyPublishto find viral articles.api.gzh.hotArticle - "Rewrite this viral content into my copy" —— No API call needed: Use Skill (Gongzhonghao)/
wechat-rewrite(Xiaohongshu)/xiaohongshu-rewrite(one draft for multiple platforms), purely local, no key required. If not installed, synthesize using searched materials.multi-rewrite "Help me remember / check my notes / what kind of person I am"—— ⛔ Second Brain () has been discontinued, no alternative capability: Tell users truthfully, do not replace with public search (see "My Own Content" exception above).mera- ⛔ (Seedream 5.0 lite) was discontinued on 2026-08-10, all calls return 503, so it is not included in the above table. For image generation, use
seedream-lite; for Gongzhonghao covers, useskill.ai.imageGen.api.gzh.cozeData
Three Sentences for First-Time Users (can actively guide users when they use it for the first time):
- First confirm if they have a key (if not, guide them to get a key in §1, only once).
- Ask "Do you want to do topic selection, track hot spots, or check accounts now?"——narrow down vague needs to one of the above categories.
- Run one capability first to produce results, let users see real content, then guide them to the next step / subscription.
Do not throw a long list of capabilities at users at first——users want "help me get things done", not an API directory.is for your internal routing use.operationKey
⚠️ The fourth column is the detail endpoint, not the call address. The platform has two disjoint capability sets and two non-fallback routes, and three capabilities use dedicated routes (method may not be POST). Assembling the call address based on the detail endpoint will definitely cause errors. The only source of the call address isin the detail response (§2.1). If the capability you need is not in the table, first run the discovery interface (§4) before concluding——this table is a starting clue, not a complete list.execution.target
📖 To see the complete list, or encounter routing issues: If you have installed,doubaoya-gatewayis the complete index generated from the discovery interface (this table only lists the most commonly used ones);doubaoya-gateway/references/capability-index.mdcontains routing knowledge only learned from experience (whichdoubaoya-gateway/references/routing-pitfalls.mdhas name collisions, which capabilities should not be used together). Not installing the gateway does not affect the use of this section——these two documents are supplements, not prerequisites.operationKey
❌ Topic Selection Rule: Do not use the user's account name / IP name as a search keyword. The user's Gongzhonghao/account name (e.g., "Caiziyou") is who they are (field/persona/audience), not a search term——searching it will only return content with the same literal name. For comprehensive hot topics, usewithout keywords directly; IP names are only used for matching and filtering. For general topic selection, do not use cross-platform trend radar (api.trend.hotSpotKeyword) or cross-platform hot ranking aggregation (skill.trend.radar) ——they are feed of keyword search results, often have empty popularity and many "unnamed content"; Always useapi.trend.hotTopics(fetch without keywords) for general comprehensive hot topics.api.trend.hotSpotKeyword
1. 拿钥匙(Auth)
1. Get the Key (Auth)
调用任何接口都要带一条密钥(API Key)。
怎么拿到 key:
- 打开 https://doubaoya.com → 登录
- 进 密钥中心 → 生成密钥
- 整条密钥只在生成那一下完整露脸,复制收好(形如 )。
dyh_…
agent 怎么用 key:
- 优先从环境变量读:。
DOUBAOYA_API_KEY - 环境里没有,就问用户一次,拿到后存进环境变量 / 本地配置,之后不再追问。
- 🔴 key 一个字符都不许回显 / 打印 / 写进日志或聊天——前缀也是密钥内容。
要报状态只许说「已设置 / 没设置」,别打印任何截断形式(这种写法就是在打印密钥)。
${KEY:0:6}
每个请求都带上:
Authorization: Bearer $DOUBAOYA_API_KEYA secret key (API Key) is required to call any interface.
How to get the key:
- Open https://doubaoya.com → Log in
- Go to Key Center → Generate Key
- The full key is only displayed once when generated, copy and save it (in the format ).
dyh_…
How agents use the key:
- Priority: Read from environment variable: .
DOUBAOYA_API_KEY - If not in the environment, ask the user once, then save it to the environment variable / local configuration, do not ask again.
- 🔴 Do not echo / print / write any part of the into logs or chats——the prefix is also part of the secret key. Only report status as "set / not set", do not print any truncated form (writing
DOUBAOYA_API_KEYis printing the secret key).${KEY:0:6}
Include this in every request:
Authorization: Bearer $DOUBAOYA_API_KEY2. 怎么调(统一约定)
2. How to Call (Unified Convention)
所有公开能力都挂在 下,JSON 进 JSON 出。绝大多数是 POST;
少数专用路由用 / ,方法以能力自己的 为准(见 §2.1)。
https://doubaoya.com/api/...PUTGETexecution.target.method⚙️ 本节讲的是够用的约定。只在协议这一层卡住时再往下翻一层:两条互不回落的路由到底怎么选、 统一信封怎么解、/SKILL_NOT_FOUND/ENDPOINT_NOT_FOUND/DEDICATED_ROUTE分别该怎么办、以及「入参规格调用前现拉、别照记忆或本地文档拼」这条纪律——都在NO_RESULT里。 它只回答怎么把一次调用打出去,不承接业务意图;要做的事本身该走哪个能力,看 §0.5 与doubaoya-gateway。dby
All public capabilities are under , JSON in and JSON out. Most are POST;
a few dedicated routes use / , follow the of the capability (see §2.1).
https://doubaoya.com/api/...PUTGETexecution.target.method⚙️ This section covers the necessary conventions. Only refer to the following when stuck at the protocol layer: How to choose between the two non-fallback routes, how to parse the unified envelope, how to handle/SKILL_NOT_FOUND/ENDPOINT_NOT_FOUND/DEDICATED_ROUTE, and the rule "fetch parameter specifications before calling, do not assemble based on memory or local documents"——all inNO_RESULT. It only answers how to send a call, not business intent; to determine which capability to use for a task, see §0.5 anddoubaoya-gateway.dby
2.1 调用一个操作:先发现,再照 execution.target
打
execution.target2.1 Call an Operation: First Discover, Then Call According to execution.target
execution.target平台有两个能力集合,各管一半,彼此不回落:
| 集合 | 发现接口 | 调用路由 | 量级 |
|---|---|---|---|
| 产品化 Skill | | | 十几条 |
| 平台数据能力 | | | 七八十条(数量上的大头) |
这一列只给量级、不给准数:能力会上新、也会下架(下架的条目会从发现接口里滤掉), 准数永远以你这一次实拉发现接口的为准。别把某个数字抄进你的判断里。total
🔴 这两条路由不是同一批能力的两个别名,是两个不相交的集合。
拿数据能力的 slug 去打 一律 404 (数量上的大头
——八成以上的能力——全在这一侧),反过来同样 404 。别靠记忆猜某个能力
属于哪一半。
/api/skills/<slug>/invokeSKILL_NOT_FOUNDENDPOINT_NOT_FOUND唯一正确姿势:从发现接口(§4)拿到能力对象,直接读它的 ,照着打。
每条能力(两个集合都一样)都带这么一块:
execution.targetjsonc
"execution": {
"mode": "generic", // generic=通用调用代理 / dedicated=专用路由 / unavailable=当前不可调
"sideEffect": "read", // read / generate / write_internal / write_external
"target": { "method": "POST", "path": "/api/apis/trend/trending-hub-keyword/call" }
}- → 按
mode: "generic"+target.method发请求,body 就是该能力的入参。target.path - → 同样照
mode: "dedicated"打,但它是专用路由,方法未必是 POST (如号章程是target)。误走通用PUT /api/ip-profile/:id/charter会 400/invoke, 错误信息里直接写着该走哪条。DEDICATED_ROUTE - (这时没有
mode: "unavailable"字段)→ 该能力正在维护或已下架,别调; 硬调返回 503target,CAPABILITY_UNAVAILABLE是可以转述给用户的原因。availability.note
target.pathhttps://doubaoya.com/api/skills/…POST https://doubaoya.com<execution.target.path>
Authorization: Bearer $DOUBAOYA_API_KEY
Content-Type: application/json
{ ...该操作的入参... }The platform has two capability sets, each managing half, no fallback between them:
| Set | Discovery Interface | Call Route | Scale |
|---|---|---|---|
| Productized Skill | | | A dozen |
| Platform Data Capability | | | Seventy to eighty (majority in quantity) |
This column only provides scale, not exact numbers: Capabilities will be added or discontinued (discontinued items will be filtered out from the discovery interface), the exact number is always based on thefrom your current discovery interface call. Do not copy any number into your judgment.total
🔴 These two routes are not aliases of the same set of capabilities, but two disjoint sets.
Using a data capability's slug to call will always return 404 (the majority of capabilities——over 80%——are on this side), and vice versa returns 404 . Do not guess which set a capability belongs to based on memory.
/api/skills/<slug>/invokeSKILL_NOT_FOUNDENDPOINT_NOT_FOUNDThe only correct way: Get the capability object from the discovery interface (§4), directly read its , and call accordingly.
Each capability (both sets) has this section:
execution.targetjsonc
"execution": {
"mode": "generic", // generic=general call proxy / dedicated=dedicated route / unavailable=currently unavailable
"sideEffect": "read", // read / generate / write_internal / write_external
"target": { "method": "POST", "path": "/api/apis/trend/trending-hub-keyword/call" }
}- → Send request using
mode: "generic"+target.method, the body is the input parameters of the capability.target.path - → Call according to
mode: "dedicated", but it is a dedicated route, method may not be POST (e.g., account charter usestarget). Calling via the generalPUT /api/ip-profile/:id/charterwill return 400/invoke, and the error message directly states the correct route.DEDICATED_ROUTE - (no
mode: "unavailable"field in this case) → The capability is under maintenance or discontinued, do not call; forced calls return 503target,CAPABILITY_UNAVAILABLEis the reason that can be relayed to users.availability.note
target.pathhttps://doubaoya.com/api/skills/…POST https://doubaoya.com<execution.target.path>
Authorization: Bearer $DOUBAOYA_API_KEY
Content-Type: application/json
{ ...input parameters of the operation... }2.2 统一返回信封(envelope)
2.2 Unified Response Envelope
无论成功失败,返回都是同一层信封:
jsonc
// 成功
{ "success": true, "requestId": "req_...", "data": { /* 真正的结果 */ }, "error": null }
// 失败
{ "success": false, "requestId": "req_...", "data": null, "error": { "code": "...", "message": "..." } }永远先看 : 取 , 读 / 。
successtruedatafalseerror.codeerror.message成功信封上还可能多出三个可选字段(缺席是常态,别当异常):
- :
noResult。查询合法、就是没查到数据, 这次已不计费。别把它当失败重试,也别当"接口坏了"——如实告诉用户没结果, 建议换关键词 / 时间范围 / 筛选条件。{ "code": "NO_RESULT", "message": "…" } - :关于本 Skill 有更新的提示,原样转达给用户,不影响本次结果,不用重试。
notice - :这次调用结果在 doubaoya.com 上的详情页链接,可以给用户点。
detailUrl
Whether successful or failed, the response uses the same envelope:
jsonc
// Success
{ "success": true, "requestId": "req_...", "data": { /* actual result */ }, "error": null }
// Failure
{ "success": false, "requestId": "req_...", "data": null, "error": { "code": "...", "message": "..." } }Always check first: If , get ; if , read / .
successtruedatafalseerror.codeerror.messageThe success envelope may also have three optional fields (absence is normal, do not treat as exception):
- :
noResult. Query is valid, but no data found, this call is not charged. Do not retry as failure, or treat as "interface broken"——tell users truthfully no results, suggest changing keywords / time range / filters.{ "code": "NO_RESULT", "message": "…" } - : Tips about updates to this Skill, relay to users as is, does not affect current result, no need to retry.
notice - : Link to the detail page of this call result on doubaoya.com, can be shared with users.
detailUrl
2.3 错误码怎么处理
2.3 How to Handle Error Codes
| HTTP | error.code | 含义 | 你该怎么办 |
|---|---|---|---|
| 401 | | 没带 key | 提示用户去 doubaoya.com 密钥中心生成,并设进 |
| 401 | | key 无效 / 已撤销 | 让用户在密钥中心撤销并重新生成,更新环境变量 |
| 400 | | 入参不合法 | 看 |
| 400 | | 这条能力有专用路由,你走了通用代理 | |
| 402 | | 额度不够 | 提示用户去 doubaoya.com 充值额度 |
| 404 | | 这个 slug 不在 skills 集合里 | 见下方「404 怎么破」 |
| 404 | | 这个 platform/slug 不在 apis 集合里 | 见下方「404 怎么破」 |
| 503 | | 能力维护中 / 已下架( | 别重试:换一条能力,或如实告诉用户这个能力暂时用不了 |
| 502 | | 上游临时失败(已自动退还额度) | 稍后重试;重试前不用补额度 |
小贴士:时额度会自动退回,放心重试即可,别重复扣费焦虑。PROVIDER_FAILED
404 怎么破(🔴 别原地换着花样重试同一条路由——两条路由查的是两个不相交的集合,
在错的那一半上试一百次也还是 404):
- 两个集合都查一遍:和
GET /api/skills(§4)。八成是能力在另一半, 路由挑错了。GET /api/apis - 用 或
GET /api/skills/search?query=…按意图找(只覆盖 skills 那一侧)。POST /api/skills/recommend - 找到之后照它的 打,不要自己拼路径。
execution.target.path - 两个集合都没有 → 这个能力不存在(或已下架)。如实告诉用户,别再猜别的 slug。
⚠️ 你脑子里 / 本文里记住的 slug 只是起手线索;能不能调、怎么调,以发现接口的返回为准。 尤其别把技能包目录名(装进来的那个文件夹名,如npx skills add、trending-hub、dby)当成调用 slug——它们不是,打过去必 404。wechat-article-pipeline
| HTTP | error.code | Meaning | What You Should Do |
|---|---|---|---|
| 401 | | No key provided | Prompt users to generate a key in the Key Center on doubaoya.com, and set it to |
| 401 | | Invalid / revoked key | Ask users to revoke and regenerate in the Key Center, update the environment variable |
| 400 | | Invalid input parameters | Check |
| 400 | | This capability has a dedicated route, you used the general proxy | The correct route is stated in |
| 402 | | Insufficient credits | Prompt users to recharge credits on doubaoya.com |
| 404 | | This slug is not in the skills set | See "How to Fix 404" below |
| 404 | | This platform/slug is not in the apis set | See "How to Fix 404" below |
| 503 | | Capability under maintenance / discontinued ( | Do not retry: Use another capability, or tell users truthfully this capability is temporarily unavailable |
| 502 | | Temporary upstream failure (credits automatically refunded) | Retry later; no need to recharge credits before retrying |
Tip: Credits are automatically refunded for, feel free to retry without worrying about repeated charges.PROVIDER_FAILED
How to Fix 404 (🔴 Do not keep retrying the same route——the two routes query disjoint sets, trying 100 times on the wrong set will still return 404):
- Check both sets: and
GET /api/skills(§4). Most likely the capability is in the other set, and you chose the wrong route.GET /api/apis - Use or
GET /api/skills/search?query=…to search by intent (only covers the skills side).POST /api/skills/recommend - After finding it, call according to its , do not assemble the path yourself.
execution.target.path - If not found in both sets → this capability does not exist (or has been discontinued). Tell users truthfully, do not guess other slugs.
⚠️ The slugs you remember / in this document are only starting clues; whether it can be called and how to call it depends on the discovery interface response. Especially do not confuse skill package directory names (folder names installed via, such asnpx skills add,trending-hub,dby) with call slugs——they are not, calling them will definitely return 404.wechat-article-pipeline
3. 选路知识(哪条不该用、哪条已下架)
3. Routing Knowledge (Which to Avoid, Which Are Discontinued)
该调哪一条在 §0.5,那张表按用户话术铺开,每行给 + 用途 + 详情端点。
本节不重复它,只装两样 §0.5 装不下的东西:已知的选路坑,和已下架的能力。
operationKey🔴 本文档里所有能力清单都是起手线索,不是全量。 平台会上新、也会下架, 准数永远以你这一次实拉发现接口的为准——别把任何一个数字抄进你的判断里(§4)。 小红书 / 抖音 / 公众号 / 视频号 / B站 / 快手 / TikTok 的搜索、账号、榜单、日报源加起来是 数量上的大头,全在total里。要找某个平台的某种数据,先去那儿翻, 别在 §0.5 那张短表里找不到就放弃。GET /api/apis
Which capability to call is in §0.5, which lists by user language, each line provides + use case + detail endpoint.
This section does not repeat it, only includes two things that cannot fit in §0.5: known routing pitfalls, and discontinued capabilities.
operationKey🔴 All capability lists in this document are starting clues, not complete. The platform will add new capabilities and discontinue old ones, the exact number is always based on thefrom your current discovery interface call——do not copy any number into your judgment (§4). Search, account, ranking, daily feed source for Xiaohongshu / Douyin / Gongzhonghao / Shipinhao / Bilibili / Kuaishou / TikTok are the majority in quantity, all intotal. To find certain data of a platform, first check there, do not give up if not found in the short table in §0.5.GET /api/apis
已知的选路坑
Known Routing Pitfalls
- ⚠️ 通用综合热点别用趋势雷达 / 热榜聚合:与
skill.trend.radar是关键词搜索的搬运号 feed(热度常为空、多「未命名内容」),只在明确要 「按某个词搜同名内容 feed」的窄场景才考虑。通用选题一律走api.trend.hotTopics的无关键词直取(§0.5 首行)。api.trend.hotSpotKeyword - ⚠️ 别带日期:上游只供最新一批,带日期区间必返 0 条。 ——这类「参数对了才有结果」的坑,正是入参规格必须调用前现拉的理由: 详情端点会告诉你哪些字段可选、取值什么形状,凭记忆拼必踩。
api.trend.hotKeywords - ⚠️ 上游对错入参一律静默返空或给误导性报错,别据此判「接口挂了」。
先回详情端点核一遍入参规格,再看是不是真的没数据(,§2.2)。
noResult - 🔴 有一条 全局撞名(多平台违禁词检测在两个集合里各有一条, §0.5 已分成两行、各带各的详情端点)。点名能力时连详情端点一起给, 只报
operationKey在这一条上不足以定位。装了网关的话,operationKey有这条的完整来龙去脉和其余踩过的坑。doubaoya-gateway/references/routing-pitfalls.md
- ⚠️ Do not use trend radar / hot ranking aggregation for general comprehensive hot topics: and
skill.trend.radarare feed of keyword search results (often have empty popularity and many "unnamed content"), only consider them in narrow scenarios where you explicitly need "feed of content with the same name as a certain term". Always useapi.trend.hotTopicswithout keywords directly for general topic selection (first line of §0.5).api.trend.hotSpotKeyword - ⚠️ Do not add date to : The upstream only provides the latest batch, adding a date range will definitely return 0 results. ——This kind of pitfall "requires correct parameters to get results" is exactly why parameter specifications must be fetched before calling: The detail endpoint will tell you which fields are optional and what shape the values should be; assembling based on memory will definitely lead to mistakes.
api.trend.hotKeywords - ⚠️ Upstream returns empty or misleading errors for wrong parameters silently, do not judge "interface is down" based on this.
First check the parameter specification in the detail endpoint, then see if there is really no data (, §2.2).
noResult - 🔴 One has global name collision (multi-platform prohibited word detection has one entry in each set, §0.5 has split it into two lines with respective detail endpoints). When referring to the capability, include the detail endpoint together, only reporting
operationKeyis not enough to locate it. If you have installed the gateway,operationKeyhas the complete background and other pitfalls encountered.doubaoya-gateway/references/routing-pitfalls.md
⛔ 第二大脑(mera
· 已下架,别调)
mera⛔ Second Brain (mera
· Discontinued, Do Not Call)
merameranote-writenote-statusnote-searchsource-readaskself为什么(历史事实,可自行复核):第二大脑的后端服务随 2026-08-10 的服务器迁移留在旧机并进入
退役流程,生产环境没有它;域名 的 DNS 记录已被移除( 返回 NXDOMAIN)。
mera.doubaoya.comdig调用会怎样:一律拿不到结果——要么在扣点前被可用性闸拦下返
(根本不计费),要么连不通返 (已扣的点自动退回)。两条路都不会白扣
用户的点,但重试、换密钥、换参数都没有意义。
503 CAPABILITY_UNAVAILABLE502 PROVIDER_FAILED⚠️ 别拿发现接口当判据,两个方向都别:这 6 条已被标为下架(hidden),发现接口会把下架条目 从里滤掉、GET /api/apis与「压根不存在」同为 404;而早于这次 标注的部署仍会照旧列出它们(带价格)。所以你按 §4 拉清单时可能看得见、也可能看不见, 两种情况的结论完全一样:「清单里有」不等于「调得通」,「清单里没了」也不等于「过会儿再试」。 判据以本节为准,不看清单。GET /api/apis/mera/<slug>⚠️ 没有替代能力,也不许降级:第二大脑装的是用户自己的私人笔记。本文档里所有「往外看」的 公开平台能力都看不见它——拿公开搜索去回答「我之前说过什么」,等于拿陌生人的内容冒充用户自己的 记忆。如实告知能力已下架,再问用户要不要改做别的事。♻️ 本结论何时作废:不再返回 NXDOMAIN,且dig mera.doubaoya.com的能力真的能返回数据 (而不是 503 / 502)时,本节即过期,应当重新写回调用契约。mera
Six capabilities under the platform ( / / / / / )
have been discontinued, this section only explains why and what you should do——call paths are intentionally omitted to avoid copying.
meranote-writenote-statusnote-searchsource-readaskselfWhy (historical fact, can be verified independently): The backend service of the Second Brain remained on the old server during the server migration on 2026-08-10 and entered the retirement process, it no longer exists in the production environment; the DNS record of the domain has been removed ( returns NXDOMAIN).
mera.doubaoya.comdigWhat happens when calling: No results will be returned——either blocked by the availability gate before charging and returns (not charged at all), or cannot connect and returns (charged credits are automatically refunded). Neither will waste users' credits, but retrying, changing keys, or changing parameters is meaningless.
503 CAPABILITY_UNAVAILABLE502 PROVIDER_FAILED⚠️ Do not use the discovery interface as a criterion, in either direction: These 6 capabilities have been marked as discontinued (hidden), the discovery interface will filter them out from,GET /api/apisreturns 404 just like "does not exist"; while deployments earlier than this marking will still list them (with prices). So when you pull the list according to §4, you may or may not see them, but the conclusion is the same in both cases: "in the list" does not mean "callable", "not in the list" does not mean "try later". Follow this section as the criterion, not the list.GET /api/apis/mera/<slug>⚠️ No alternative capability, and no downgrade allowed: The Second Brain stores the user's own private notes. All "external-facing" public platform capabilities in this document cannot see it——using public search to answer "what did I say before" is equivalent to using strangers' content to impersonate the user's own memory. Tell users truthfully the capability has been discontinued, then ask if they want to do something else.♻️ When this conclusion becomes invalid: Whenno longer returns NXDOMAIN, and thedig mera.doubaoya.comcapabilities can actually return data (instead of 503 / 502), this section will expire and should be rewritten with the call contract.mera
4. 运行时发现操作(别把清单写死)
4. Runtime Discovery of Operations (Do Not Hardcode Lists)
平台随时可能上新操作,优先在运行时拉清单,再决定调哪条。
🔴 发现面有两条,必须两条都拉。 只拉 你只看得见小的那一半,
另一侧(数量上的大头)在你的世界里根本不存在——不会报错,只会沉默地少掉一大半能力。
这正是本文档过去犯的错。
/api/skillsundefinedThe platform may add new operations at any time, prefer to pull the list at runtime, then decide which to call.
🔴 There are two discovery surfaces, must pull both. Only pulling will only show the smaller half, the other side (majority in quantity) will not exist in your world——no error will be reported, but half of the capabilities will be missing silently.
This is exactly the mistake made in the history of this document.
/api/skillsundefined① 产品化 Skill
① Productized Skill
GET https://doubaoya.com/api/skills → data: { items, total }
GET https://doubaoya.com/api/skills/<slug> → data: 单条详情(不存在 / 已下架同为 404)
GET https://doubaoya.com/api/skills/search → 按意图搜(查询串 / 分类 / 条数三个查询参数)
POST https://doubaoya.com/api/skills/recommend → 按意图推荐(body 带一句自然语言查询)
→ data: 首选一条 + 候选若干 + 判定依据
GET https://doubaoya.com/api/skills → data: { items, total }
GET https://doubaoya.com/api/skills/<slug> → data: single detail (404 for non-existent / discontinued)
GET https://doubaoya.com/api/skills/search → search by intent (three query parameters: query string / category / count)
POST https://doubaoya.com/api/skills/recommend → recommend by intent (body contains a natural language query)
→ data: one preferred + several candidates + judgment basis
② 平台数据能力(数量上的大头,别漏)
② Platform Data Capability (majority in quantity, do not miss)
GET https://doubaoya.com/api/apis → data: { items, total }
GET https://doubaoya.com/api/apis/<platform>/<slug> → data: 单条详情
`platform` 现有取值:`douyin` / `xiaohongshu` / `gongzhonghao` / `sph`(视频号)/ `bilibili` /
`kuaishou` / `tiktok` / `trend` / `tool` / `multi` / ~~`mera`~~(⛔ 已下架,调不通;清单里看不看得见都不是判据,见 §3)。
**每个条目里有什么:**
| 字段 | skills | apis | 说明 |
|------|--------|------|------|
| `slug` | ✓ | ✓ | apis 还多一个 `platform`,两个一起才定位一条 |
| `title` / `summary` / `tags` | ✓ | ✓ | 判断该不该用 |
| `unitPrice` | ✓ | ✓ | 本次调用要扣的点数。**以这个字段的实时值为准**,别照记忆或文档里的数字算钱——计价口径改过不止一次 |
| 入参示例 | `inputSchema` | `requestSchema` | ⚠️ **是一份示例值,不是 JSON Schema**——照着它的键名和值的形状传 |
| 出参示例 | `outputExample` | `responseExample` | 同上,用来对齐你要读哪些字段 |
| `execution` | ✓ | ✓ | 🔑 **`execution.target.path` 就是这条能力的完整调用路径**(见 §2.1) |
| `availability` | 可选 | 可选 | 出现即表示维护中(`status: "maintenance"` + `note`),配合 `execution.mode === "unavailable"` |
`category`(只有 skills 有)不用背,`GET /api/skills/search` 的返回里就带一份实时的 `categories` 数组。
**几条实测得来的注意事项:**
- 四条 `GET` 发现接口**不需要 key** 就能拉(但带上也无妨)。
- `POST /api/skills/recommend` **务必带上 `Authorization` 头**:它本身不校验身份,
但没有 Bearer 头的 POST 会被跨站防护挡成 403 `CSRF_FORBIDDEN`。`query` 为空会 400 `INVALID_PARAMS`。
- `recommend` / `search` **只在 skills 那一侧排序**,看不见 apis 那一侧。
当"拿不准先问一嘴"用可以,**别拿它当全量目录**——全量在 `GET /api/skills` + `GET /api/apis` 两条里。
- 已下架的能力不会出现在任何发现接口里(列表里没有 ≠ 你搜错了,是真没有)。
---GET https://doubaoya.com/api/apis → data: { items, total }
GET https://doubaoya.com/api/apis/<platform>/<slug> → data: single detail
Current values of `platform`: `douyin` / `xiaohongshu` / `gongzhonghao` / `sph` (Shipinhao) / `bilibili` /
`kuaishou` / `tiktok` / `trend` / `tool` / `multi` / ~~`mera`~~ (⛔ Discontinued, cannot be called; whether it is in the list is not a criterion, see §3).
**What each item contains**:
| Field | skills | apis | Description |
|------|--------|------|------|
| `slug` | ✓ | ✓ | apis also have `platform`, both are needed to locate a capability |
| `title` / `summary` / `tags` | ✓ | ✓ | Judge whether to use |
| `unitPrice` | ✓ | ✓ | Credits deducted for this call. **Follow the real-time value of this field**, do not calculate based on memory or numbers in the document——pricing standards have been changed more than once |
| Input Example | `inputSchema` | `requestSchema` | ⚠️ **This is a sample value, not JSON Schema**——follow the key names and value shapes to send |
| Output Example | `outputExample` | `responseExample` | Same as above, used to align which fields to read |
| `execution` | ✓ | ✓ | 🔑 **`execution.target.path` is the full call path of this capability** (see §2.1) |
| `availability` | Optional | Optional | If present, indicates under maintenance (`status: "maintenance"` + `note`), paired with `execution.mode === "unavailable"` |
`category` (only for skills) does not need to be memorized, the `GET /api/skills/search` response includes a real-time `categories` array.
**Notes from actual testing**:
- The four `GET` discovery interfaces **do not require a key** to pull (but it's okay to include it).
- `POST /api/skills/recommend` **must include the `Authorization` header**: It does not verify identity itself,
but POST requests without a Bearer header will be blocked by cross-site protection and return 403 `CSRF_FORBIDDEN`. Empty `query` returns 400 `INVALID_PARAMS`.
- `recommend` / `search` **only sort on the skills side**, cannot see the apis side.
It can be used as "ask if unsure", **do not use it as a complete directory**——the complete directory is in `GET /api/skills` + `GET /api/apis`.
- Discontinued capabilities will not appear in any discovery interface (not in the list ≠ you searched wrong, it really does not exist).
---5. 一次调用长什么样(两步:先拉规格,再发请求)
5. What a Call Looks Like (Two Steps: First Fetch Specification, Then Send Request)
示例里没有任何一条能力的字段名,这是有意的:入参规格以你这一刻从详情端点拉到的为准。
No field names of any capability are included in the example, this is intentional: Input parameter specifications are based on what you fetch from the detail endpoint at that moment.
curl
curl
bash
undefinedbash
undefined① 先拉详情:免鉴权、免费,返回里带入参规格和 execution 的 target
① First fetch detail: no authentication, free, returns input specification and execution target
curl --silent --show-error https://doubaoya.com/api/apis/trend/trending-hub-keyword
curl --silent --show-error https://doubaoya.com/api/apis/trend/trending-hub-keyword
② 再照 execution 的 target 发请求;body 就是①里那份入参规格
② Then send request according to execution target; body is the input specification from ①
curl --silent --show-error https://doubaoya.com<第①步读到的 target 的 path>
-H "Authorization: Bearer $DOUBAOYA_API_KEY"
-H "Content-Type: application/json"
-d '<照第①步的入参规格填>'
-H "Authorization: Bearer $DOUBAOYA_API_KEY"
-H "Content-Type: application/json"
-d '<照第①步的入参规格填>'
返回永远是同一层信封(§2.2),先看 `success`,`true` 就取 `data`:
```jsonc
{ "success": true, "requestId": "req_abc123", "data": { /* 这条能力自己的结果结构 */ }, "error": null }里面长什么样因能力而异,本文档不抄——第①步的出参示例(data/outputExample)就是用来对齐「我要读哪几个字段」的,读它,别猜。responseExample
curl --silent --show-error https://doubaoya.com<target path read from step ①>
-H "Authorization: Bearer $DOUBAOYA_API_KEY"
-H "Content-Type: application/json"
-d '<fill according to input specification from step ①>'
-H "Authorization: Bearer $DOUBAOYA_API_KEY"
-H "Content-Type: application/json"
-d '<fill according to input specification from step ①>'
The response always uses the same envelope (§2.2), first check `success`, if `true` get `data`:
```jsonc
{ "success": true, "requestId": "req_abc123", "data": { /* result structure of this capability */ }, "error": null }Whatlooks like varies by capability, this document does not copy it——the output example (data/outputExample) from step ① is used to align "which fields I need to read", refer to it, do not guess.responseExample
Node(zero-dep,key 从环境变量读)
Node (zero-dep, key read from environment variable)
js
const key = process.env.DOUBAOYA_API_KEY;
if (!key) throw new Error("先设好 DOUBAOYA_API_KEY:doubaoya.com → 登录 → 密钥中心 → 生成密钥");
// ① 详情端点:拿 execution 的 target 和入参规格(不需要 key)
const detail = await fetch("https://doubaoya.com/api/skills/xiaohongshu-viral-notes").then(r => r.json());
if (!detail.success) throw new Error(`${detail.error.code}: ${detail.error.message}`);
const { method, path } = detail.data.execution.target;
// ② 照 target 发请求。body 照 detail.data 里的入参示例填,别照记忆拼。
const res = await fetch(`https://doubaoya.com${path}`, {
method,
headers: { "Authorization": `Bearer ${key}`, "Content-Type": "application/json" },
body: JSON.stringify(/* 照 ① 的入参规格填 */ {})
});
const env = await res.json();
if (!env.success) throw new Error(`${env.error.code}: ${env.error.message}`);
console.log(env.data);🔴 第②步用的是,不是写死的method——有三条能力走专用路由,方法未必是 POST(§2.1)。 仓库里附了一个把这两步封好的零依赖脚本:"POST",见 §7。scripts/doubaoya.mjs
js
const key = process.env.DOUBAOYA_API_KEY;
if (!key) throw new Error("First set DOUBAOYA_API_KEY: doubaoya.com → Log in → Key Center → Generate Key");
// ① Detail endpoint: get execution target and input specification (no key needed)
const detail = await fetch("https://doubaoya.com/api/skills/xiaohongshu-viral-notes").then(r => r.json());
if (!detail.success) throw new Error(`${detail.error.code}: ${detail.error.message}`);
const { method, path } = detail.data.execution.target;
// ② Send request according to target. Body is filled according to input example in detail.data, do not assemble based on memory.
const res = await fetch(`https://doubaoya.com${path}`, {
method,
headers: { "Authorization": `Bearer ${key}`, "Content-Type": "application/json" },
body: JSON.stringify(/* fill according to input specification from ① */ {})
});
const env = await res.json();
if (!env.success) throw new Error(`${env.error.code}: ${env.error.message}`);
console.log(env.data);🔴 Step ② uses, not hardcodedmethod——three capabilities use dedicated routes, method may not be POST (§2.1). A zero-dependency script that wraps these two steps is included in the repository:"POST", see §7.scripts/doubaoya.mjs
6. 端到端示例工作流
6. End-to-End Example Workflow
工作流 A:「我这个号(如公众号叫 X)今天该做什么选题?」
Workflow A: "What topics should my account (e.g., Gongzhonghao X) do today?"
核心:综合热点无关键词直取 → 结合这个IP定位智能匹配 → 产选题。 ❌ 绝不把用户的账号名/IP名当关键词去搜(那只会搜到字面同名内容)。
- 直取综合热点(无关键词):(详情端点
api.trend.hotSpotKeyword)→ 拿当下全网最热的一批。 🔴 这一步的要害是「不带关键词」——具体哪个字段控制平台范围、怎么表示「不搜词」, 照详情端点这一刻返回的入参规格填(§5 的两步)。/api/apis/trend/trending-hub-keyword - 明确IP定位:用户的账号名/IP名是他是谁(领域/人设/角度/受众),不是搜索词。 从用户或其身份资料拿到这份定位;不清楚就问用户。
- 智能匹配:扫综合热榜,挑出这个IP能可信借势的 2–3 条热点(热度高 + 跨平台撞榜 + IP契合),
每条给出这个IP的独家切角;必要时用 或对应平台的日报源验证「真的在爆」。
skill.xhs.viralNotes - 写开场脚本:基于选中的热点 + IP独家切角,给每个选题写 3 秒开场钩子 + 一段开场脚本(别脱离数据空写)。
- 保命:脚本丢进违禁词检测(,详情端点
tool.contentSafety.checkWords)。它回三样东西:一份标注版正文(命中处被标出来)、 一份未标注原文、一个风险类别数组——命中词从标注版与原文的差异定位, 替换建议由你结合上下文给。 🔴 接口不回风险等级、不回评分、不回命中词清单,别编一个出来。 这三样都读不到时如实说「没拿到检测结果」,别当成合规放行。/api/skills/content-safety-check - 交付选题:3–5 个选题(每个:蹭哪条热点 + 我这IP的独家切角 + 为什么现在能爆)+ 各自开场脚本 + 已过违禁词检测。
- 选题落地成文章(用户要的是公众号文章而不是短视频脚本时,第 6 步之后还有路):
选定一个选题 → 用 拉同主题爆文样本写正文 → 用
api.gzh.hotArticle起标题 / 定封面套路 → 用api.gzh.cozeData出过审版正文 →skill.wechat.prohibitedWord排版 + 配封面 + 存进用户自己的公众号草稿箱(只存草稿、绝不群发)。wechat-article-pipeline🔴 走到哪一站由用户要的终态决定:只要选题和脚本,第 6 步就是终点;要成稿,写完正文就结束; 要排版好的公众号 HTML 或要文章进自己的草稿箱,才一路走到(它会写进用户自己的公众号后台,别在他没提过这个意图时替他跑)。逐跳导航交给wechat-article-pipeline。dby
Core: Fetch comprehensive hot topics without keywords → intelligently match with this IP positioning → generate topics. ❌ Never use the user's account name/IP name as a search keyword (it will only return content with the same literal name).
- Fetch comprehensive hot topics (without keywords): (detail endpoint
api.trend.hotSpotKeyword) → get the hottest topics across the web right now. 🔴 The key of this step is "without keywords"——which field controls platform scope, how to indicate "no search term", fill according to the input specification returned by the detail endpoint at that moment (two steps in §5)./api/apis/trend/trending-hub-keyword - Clarify IP positioning: The user's account name/IP name is who they are (field/persona/angle/audience), not a search term. Get this positioning from the user or their profile; ask the user if unsure.
- Intelligent matching: Scan the comprehensive hot ranking, select 2–3 hot topics that this IP can credibly leverage (high popularity + cross-platform ranking overlap + IP fit), and provide an exclusive angle for this IP for each; if necessary, use or the corresponding platform's daily feed source to verify "it is really trending".
skill.xhs.viralNotes - Write opening scripts: Based on the selected hot topics + IP exclusive angle, write 3-second opening hook + an opening script for each topic (do not write without data).
- Compliance Check: Run the script through prohibited word detection (, detail endpoint
tool.contentSafety.checkWords). It returns three things: an annotated content (hit words are marked), an unannotated original, an array of risk categories——locate hit words from the difference between annotated and original content, provide replacement suggestions based on context. 🔴 The interface does not return risk level, score, or hit word list, do not make one up. If you cannot get all three, tell users truthfully "no detection results obtained", do not treat as compliance approval./api/skills/content-safety-check - Deliver Topics: 3–5 topics (each: which hot topic to leverage + exclusive angle of my IP + why it can trend now) + respective opening scripts + compliance check passed.
- Turn Topics into Articles (when users want Gongzhonghao articles instead of short video scripts, there are more steps after step 6):
Select a topic → use to pull viral article samples on the same topic and write the full text → use
api.gzh.hotArticleto generate titles / determine cover strategies → useapi.gzh.cozeDatato generate compliance-ready content →skill.wechat.prohibitedWordfor formatting + cover + save to user's own Gongzhonghao draft box (only saves draft, never sends to subscribers).wechat-article-pipeline🔴 Which step to stop at depends on the user's desired final state: If only topics and scripts are needed, step 6 is the end; if a completed draft is needed, stop after writing the full text; if a formatted Gongzhonghao HTML or saving the article to the user's draft box is required, proceed all the way to(it will write to the user's own Gongzhonghao backend, do not run it without the user's explicit intent). Step-by-step navigation is handled bywechat-article-pipeline.dby
工作流 B:「这条抖音/小红书链接为什么火?给我可复用的选题角度」
Workflow B: "Why is this Douyin/Xiaohongshu link trending? Give me reusable topic angles"
- 解析作品:(详情端点
tool.content.parseDetail), 把用户给的公开分享链接丢进去 → 拿归一化的标题、作者、互动数据。/api/apis/tool/parse-content-detail - 找同题热度:用标题里的核心词调 或对应平台的日报源 (
skill.xhs.viralNotes里搜GET /api/apis),看这个角度是不是赛道级在涨(这一步是明确按某个词查证据, 与通用选题的无关键词热榜直取不同)。ai-feed - 产出:拆解「它为什么火」(选题角度 / 钩子 / 时机),再给 2-3 个可复用的同源选题。
- Analyze Content: (detail endpoint
tool.content.parseDetail), input the public share link provided by the user → get normalized title, author, and interaction data./api/apis/tool/parse-content-detail - Check Same-Topic Popularity: Use the core word in the title to call or the corresponding platform's daily feed source (search for
skill.xhs.viralNotesinai-feed), see if this angle is growing in the track (this step is explicitly searching for evidence by a certain term, different from fetching hot topics without keywords for general topic selection).GET /api/apis - Output: Analyze "why it trended" (topic angle / hook / timing), then provide 2-3 reusable homologous topics.
7. 可选:零依赖封装脚本
7. Optional: Zero-Dependency Wrapper Script
仓库附带 (Node 18+,无第三方依赖,key 从 读):
scripts/doubaoya.mjsDOUBAOYA_API_KEYbash
undefinedThe repository includes (Node 18+, no third-party dependencies, key read from ):
scripts/doubaoya.mjsDOUBAOYA_API_KEYbash
undefined运行时发现(两个集合都拉,不需要 key)
Runtime discovery (pull both sets, no key needed)
node scripts/doubaoya.mjs list # 两个集合一起拉,每行直接给出完整调用路径
node scripts/doubaoya.mjs list --apis # 只看平台数据能力
node scripts/doubaoya.mjs search 小红书 爆款 # 两个集合一起搜
node scripts/doubaoya.mjs list # pull both sets, each line directly provides full call path
node scripts/doubaoya.mjs list --apis # only view platform data capabilities
node scripts/doubaoya.mjs search Xiaohongshu viral # search both sets
🔴 先 describe 再 invoke:describe 打的就是详情端点,入参规格从它的返回里读
🔴 First describe then invoke: describe calls the detail endpoint, input specification is read from its response
node scripts/doubaoya.mjs describe trending-hub-keyword
node scripts/doubaoya.mjs describe trending-hub-keyword
调一条能力:<ref> = <slug> 或 <platform>/<slug>
Call a capability: <ref> = <slug> or <platform>/<slug>
node scripts/doubaoya.mjs invoke xiaohongshu-viral-notes '<照 describe 拉到的入参规格填>'
node scripts/doubaoya.mjs invoke trend/trending-hub-keyword '<照 describe 拉到的入参规格填>'
node scripts/doubaoya.mjs invoke xiaohongshu-viral-notes '<fill according to input specification from describe>'
node scripts/doubaoya.mjs invoke trend/trending-hub-keyword '<fill according to input specification from describe>'
离线自检(不联网、不需要 key)
Offline self-check (no internet, no key needed)
node scripts/doubaoya.mjs selfcheck
它做的事:**先解析 `<ref>`**(裸 slug 先查 skills 集合,查不到再在 apis 集合里找;跨平台同名会要求你写全
`<platform>/<slug>`),**拿到该能力的 `execution.target` 再照着发请求**——不自己拼路径,所以两个集合
都够得着,专用路由的 `PUT`/`GET` 也不会被硬拗成 POST。其余:拼 `Authorization` 头、拆信封、
把 `notice` / `noResult` 打到 stderr、`success=false` 时以 `code: message` 退出。**绝不打印整条 key。**
> ⚠️ 找不到某条能力时它会明说「两个集合都查过了」并提醒你可能拿的是**技能包目录名**——
> 别再换着花样重试同一条路由。
---node scripts/doubaoya.mjs selfcheck
What it does: **First parse `<ref>`** (bare slug first checks the skills set, if not found, searches the apis set; cross-platform same names require you to write full
`<platform>/<slug>`), **get the capability's `execution.target` then call accordingly**——does not assemble path itself, so both sets are accessible, and `PUT`/`GET` for dedicated routes will not be forced to POST. Other features: assemble `Authorization` header, parse envelope,
print `notice` / `noResult` to stderr, exit with `code: message` when `success=false`. **Never print the full key.**
> ⚠️ When a capability is not found, it will explicitly state "checked both sets" and remind you that you may be using a **skill package directory name**——
> do not keep retrying the same route.
---7.5 交付回执(每次交付都随手带一份)
7.5 Delivery Receipt (Include with Every Delivery)
用户事后问「你刚才用了哪些能力 / 哪些 skill」时才去回忆,答出来的必然不准——
回执在交付时写下,不是事后补。它让你的选路可被复核,也让用户看得见还有哪条路没走。
Recalling when users ask "which capabilities / skills did you use just now" will definitely be inaccurate——
Write the receipt when delivering, not after the fact. It makes your routing reviewable, and lets users see which paths were not taken.
先声明终态,再选能力
First State the Final State, Then Select Capabilities
动手前先说清这一次要交到哪一档,目标停在哪一档就在哪一档收手。
写作链的终态是一道阶梯(§0.5 同口径):
① Markdown 成稿 → ② 排版好的公众号 HTML → ③ 存进用户自己的公众号草稿箱
用户只要 ① 时不跑 是正确行为,不是漏跑——那一步会写进用户自己的
公众号后台,有真实副作用。反过来,用户要 ③ 却交一段 Markdown 就收尾才是断头。拿不准就问一句。
wechat-article-pipelineClarify which stage to deliver to before starting, stop when the target stage is reached.
The final states of the writing chain are a ladder (same as §0.5):
① Markdown draft → ② Formatted Gongzhonghao HTML → ③ Saved to user's own Gongzhonghao draft box
It is correct to not run when users only need ①, not a missed step——that step will write to the user's own Gongzhonghao backend with real side effects. Conversely, delivering a Markdown segment when users need ③ is incomplete. Ask if unsure.
wechat-article-pipeline格式
Format
交付末尾附上,四种状态分开写,几行就够:
查阅:<读了哪份路由 / 参考了哪张表>
执行:<真正调了哪些能力 / 跑了哪些 skill>
质检:<跑了哪些检查>
跳过:<发现了但没跑的能力 / skill> —— 原因:<为什么不该跑>Attach at the end of delivery, separate the four states:
Reference: <which routing document / table was referenced>
Execution: <which capabilities / skills were actually called>
Quality Check: <which checks were run>
Skipped: <capabilities / skills found but not called> —— Reason: <why they should not be called>硬性规则
Hard Rules
- 四行别合并。「执行」只写真的跑过的;没跑的一律不许出现在这一行。
- 「跳过」区分两件事:压根没发现 的不必列;发现了、但判断不该跑 的必须列并写明原因。
带副作用的尤其不能省(/
wechat-article-pipeline会写进用户自己的公众号后台); ⛔ 已下架的能力(如wechat-draft-publish,见 §3)如果用户的需求点到了它,也写进「跳过」并说明已下架。mera - 如实:跑了但失败的写在「执行」并注明失败,不许挪进「跳过」粉饰;没做质检就写「无」。
- 回执里只许写能证明的量。 括号里的结论必须回指这一次真实返回里确实有的东西 (违禁词检测就是个现成例子:它回的是一个风险类别数组,所以「命中 N 类」可证; 它不回风险等级 / 评分 / 命中词清单,所以「0 高危」「低风险」这类就是编的)。 拿不准接口到底回没回这个量,就回详情端点看一眼出参示例,别凭印象写。
- 简短:这是交付的一部分,不是另一份报告。四行以内,别展开成段落。
- Do not merge the four lines. "Execution" only includes actually called capabilities; those not called must not appear in this line.
- "Skipped" distinguishes two things: Those not found at all do not need to be listed; those found but judged not to be called must be listed with reasons.
Especially do not omit those with side effects (/
wechat-article-pipelinewill write to the user's own Gongzhonghao backend); ⛔ If the user's demand refers to a discontinued capability (such aswechat-draft-publish, see §3), also list it in "Skipped" and explain it has been discontinued.mera - Be truthful: Capabilities that were called but failed are written in "Execution" with failure noted, do not move to "Skipped" to cover up; write "None" if no quality check was done.
- Only include verifiable information in the receipt. Conclusions in parentheses must refer to something actually present in the real response of this call (prohibited word detection is a ready example: it returns an array of risk categories, so "hit N categories" is verifiable; it does not return risk level / score / hit word list, so "0 high risk" "low risk" are made up). If unsure whether the interface returned this information, check the output example in the detail endpoint, do not write based on memory.
- Be brief: This is part of the delivery, not another report. Within four lines, do not expand into paragraphs.
8. 硬规则(务必遵守)
8. Hard Rules (Must Follow)
- 绝不回显 / 打印 / 记录 的任何一部分——前缀也是密钥内容, 要报状态只许说「已设置 / 没设置」。
DOUBAOYA_API_KEY - 只通过 的公开
https://doubaoya.com接口取数;不要向用户描述、猜测或暴露任何上游数据来源 / 内部服务。对用户而言,能力来自「都爆鸭」。/api/... - 先 后取数;
success时按 §2.3 处理错误码,别把原始 500/502 直接糊给用户。false - 调用路径以发现接口返回的 为准,不要自己拼、不要硬编死清单(§2.1 / §4)。 发现面有两条(
execution.target+GET /api/skills),只拉一条你会沉默地少看见大半能力。 技能包目录名 ≠ 调用 slug。GET /api/apis - 写脚本以真实数据为素材,把热点 / 爆款笔记的真实角度落进脚本,别脱离数据空写。
- 第二大脑()已下架(§3):别调,也别拿公开搜索去顶替——公开能力看不见用户自己的 笔记,冒充他的记忆比直说「没这个能力」更糟。如实告知即可。 (下架前的红线仍然记在这里,供日后恢复时参考:私人内容只回答用户本人、不得外传到别的服务; 写入没拿到
mera之前绝不说「已保存」。)status=done - 交付时带回执(§7.5):四行。「执行」只许写真的跑过的; 发现了但按终态判断不该跑的,写进「跳过」并说明原因,别让用户事后靠追问才知道。
查阅 / 执行 / 质检 / 跳过
- Never echo / print / record any part of ——the prefix is also part of the secret key, only report status as "set / not set".
DOUBAOYA_API_KEY - Only retrieve data through public interfaces of
/api/...; do not describe, guess, or expose any upstream data sources / internal services to users. For users, capabilities come from "Doubaoya".https://doubaoya.com - Check before retrieving data; handle error codes according to §2.3 when
success, do not directly show raw 500/502 to users.false - Call paths are based on returned by the discovery interface, do not assemble paths yourself or hardcode lists (§2.1 / §4). There are two discovery surfaces (
execution.target+GET /api/skills), pulling only one will cause you to miss most capabilities silently. Skill package directory names ≠ call slugs.GET /api/apis - Write scripts based on real data, incorporate real angles of hot topics / viral notes into scripts, do not write without data.
- Second Brain () has been discontinued (§3): Do not call it, and do not replace it with public search——public capabilities cannot see the user's own notes, impersonating their memory is worse than saying "this capability is not available". Just tell users truthfully. (The red line before discontinuation is still recorded here for reference if restored later: Private content is only answered to the user themselves, must not be transmitted to other services; never say "saved" until
merais obtained after writing.)status=done - Include a receipt with delivery (§7.5): Four lines of . "Execution" only includes actually called capabilities; those found but judged not to be called based on final state must be listed in "Skipped" with reasons, do not let users find out through follow-up questions later.
Reference / Execution / Quality Check / Skipped