[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-minimax-paper-search":3,"mdc-cl0zp1-key":34,"related-org-minimax-paper-search":1415,"related-repo-minimax-paper-search":1618},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"paper-search","search and parse academic literature databases","当需要真正执行文献数据库 API 检索时加载：构建检索式（布尔组合、字段限定）、 调用 OpenAlex \u002F Crossref \u002F arXiv 接口、遵守请求礼仪（限速、UA、指数退避）、 把返回解析为统一 PaperDocument。通常由 literature-search 调用，不直接面向用户。 同义场景：检索执行、API 查询、文献接口调用、query 构建、检索脚本运行、 接口限速与重试、检索结果解析。",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"minimax","MiniMax","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fminimax.jpg","MiniMax-AI",[13,17,20],{"name":14,"slug":15,"type":16},"Research","research","tag",{"name":18,"slug":19,"type":16},"Data Extraction","data-extraction",{"name":21,"slug":22,"type":16},"API Development","api-development",5,"https:\u002F\u002Fgithub.com\u002FMiniMax-AI\u002FMiniMax-Code-Plugins","2026-08-21T03:59:11.892658",null,2,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"Community registry and contribution toolkit for MiniMax Code plugins.","https:\u002F\u002Fgithub.com\u002FMiniMax-AI\u002FMiniMax-Code-Plugins\u002Ftree\u002FHEAD\u002Fplugins\u002FHylouis233\u002Fopenscience\u002Fskills\u002Fpaper-search","---\nname: paper-search\ndescription: >-\n  当需要真正执行文献数据库 API 检索时加载：构建检索式（布尔组合、字段限定）、\n  调用 OpenAlex \u002F Crossref \u002F arXiv 接口、遵守请求礼仪（限速、UA、指数退避）、\n  把返回解析为统一 PaperDocument。通常由 literature-search 调用，不直接面向用户。\n  同义场景：检索执行、API 查询、文献接口调用、query 构建、检索脚本运行、\n  接口限速与重试、检索结果解析。\nuser-invocable: false\nmetadata:\n  domains: [literature]\n  last_reviewed: '2026-08-18'\n---\n\n# paper-search：检索执行规程\n\n## 目的\n\n为上层技能（literature-search 等）提供可执行的检索规程：如何构建 query、\n如何调用 `scripts\u002Fsearch_papers.py`、如何遵守各数据源的请求礼仪、\n如何解读与排序结果、如何处理失败。\n\n脚本约定（`scripts\u002Fsearch_papers.py`，纯 Python 标准库实现，无第三方依赖）：\n\n- 参数：`--query`（必填）、`--provider {openalex,crossref,arxiv}`（必填）、\n  `--limit N`（默认 10，上限 50，超出自动截断）、`--format json`。\n- 成功：stdout 输出 PaperDocument JSON 数组，退出码 0。\n- 失败：stdout 输出 `{\"error\": {\"provider\", \"type\", \"message\"}}`，\n  type ∈ `network | rate_limited | parse`，退出码 1；永不抛栈崩溃。\n- 内置礼仪：请求间隔 ≥0.5s、单请求超时 30s、UA 携带联系邮箱占位。\n\n## 前置检查\n\n1. `scripts\u002Fsearch_papers.py` 存在；`python --version` 可用（3.8+）。\n2. 网络可用；目标 provider 可达。\n3. 已按上层路由确定 provider 与 query。\n\n## 操作规程\n\n### 1. query 构建\n\n- 关键词以英文为主（三个 provider 对英文支持最好）；专业术语保留原文。\n- 布尔与字段限定（按 provider 方言）：\n  - OpenAlex：`search` 参数支持 AND \u002F OR 与引号短语，如\n    `\"large language model\" AND agent`；复杂字段过滤（年份、类型）由上层\n    在结果上后置处理，当前脚本只暴露 search。\n  - Crossref：`query` 为自由文本，偏题录精确匹配；查单篇文献时直接把标题\n    或 DOI 作为 query 效果最佳。\n  - arXiv：`search_query` 自动加 `all:` 前缀；需要字段限定时可在 query 中\n    直接使用 `ti:`（标题）、`abs:`（摘要）、`au:`（作者），组合用 `+AND+` \u002F `+OR+`。\n- 单次 query 控制在 2-6 个核心词；过长的 query 会显著降低命中率。\n\n### 2. 执行\n\n```bash\npython scripts\u002Fsearch_papers.py --query \"large language model agents\" \\\n  --provider openalex --limit 20 --format json\n```\n\n- 多个 provider 时逐次串行调用，不要并发轰炸同一数据源。\n- 结果较大时重定向到临时文件再解析，避免终端输出截断。\n\n### 3. 请求礼仪（politeness）\n\n- 频率 ≤2 req\u002Fs；脚本已内置 ≥0.5s 请求间隔，上层批量调用时仍应串行执行。\n- UA 中的联系邮箱是占位 `you@example.com`：正式使用前提醒用户替换为真实\n  邮箱（OpenAlex polite pool 与 Crossref 均以此为诚信标识，提供更稳定服务）。\n- 收到 `rate_limited` 时按指数退避重试：2s → 4s → 8s，最多 3 次；\n  仍失败则把结构化 error 原样交还上层，不无限重试。\n\n### 4. 结果解读与排序建议\n\n- 各源默认相关性排序；解读时注意：\n  - OpenAlex 结果元数据丰富，适合按「相关性 + 被引 + 年份」二次排序；\n  - Crossref 偏题录精确匹配，前排结果通常就是目标文献；\n  - arXiv 偏最新成果，注意区分预印本与正式发表版（条目含 journal_ref 时\n    优先引用正式版）。\n- 建议上层保留原始顺序，另存「建议阅读顺序」，不要在 papers.json 里原地重排。\n\n### 5. 失败处理\n\n- 逐字保留脚本输出的 error JSON，原样写入上层 manifest；\n- `parse` 类错误记录响应片段（≤200 字符）便于排查；\n- 任何失败都不改写成「0 条结果」。\n\n### 6. provider 查询方言速查\n\n| provider | 端点 | query 要点 |\n| --- | --- | --- |\n| openalex | `https:\u002F\u002Fapi.openalex.org\u002Fworks?search=...&per-page=` | 支持 AND \u002F OR、引号短语；带 mailto 进 polite pool |\n| crossref | `https:\u002F\u002Fapi.crossref.org\u002Fworks?query=...&rows=` | 自由文本题录匹配；查单篇直接给标题或 DOI |\n| arxiv | `http:\u002F\u002Fexport.arxiv.org\u002Fapi\u002Fquery?search_query=all:...` | 字段前缀 ti: \u002F abs: \u002F au:；组合用 +AND+ \u002F +OR+ |\n\n`--limit` 与各源单页上限：脚本上限 50，三源单页均可满足；需要更多结果时\n由上层分批翻页（当前脚本不暴露 start \u002F cursor 参数）。\n\n### 7. 常见失败与对策\n\n| error.type | 典型原因 | 对策 |\n| --- | --- | --- |\n| network | 断网、DNS 失败、TLS 错误、超时 | 检查网络后重试；连续失败则终止并留痕 |\n| rate_limited | 触发源站限流（HTTP 429 \u002F 503） | 指数退避 2s→4s→8s，最多 3 次 |\n| parse | 响应结构变化、空响应、XML 非法 | 记录响应片段，改小 limit 重试；仍失败则留痕 |\n| 超时 | 源站响应慢或链路抖动 | 30s 超时归入 network，稍后重试 |\n\n任何重试都不更换 query 内容；换 query 属于上层 literature-search 的决策。\n脚本单请求超时固定 30s，超时归入 `network` 类错误；不要为「快一点」\n而调小间隔或并发请求——被封 IP 的代价远大于多等几秒。\n\n## 输出模板\n\n### PaperDocument（stdout，成功时）\n\n```json\n[\n  {\n    \"id\": \"https:\u002F\u002Fdoi.org\u002F10.xxxx\u002Fyyyy\",\n    \"title\": \"...\",\n    \"authors\": [\"...\"],\n    \"year\": 2024,\n    \"venue\": \"...\",\n    \"doi\": \"10.xxxx\u002Fyyyy\",\n    \"url\": \"https:\u002F\u002Fdoi.org\u002F10.xxxx\u002Fyyyy\",\n    \"abstract\": \"...\",\n    \"source\": \"crossref\",\n    \"retrieved_at\": \"2026-08-18T00:00:00+00:00\"\n  }\n]\n```\n\n### 错误对象（stdout，失败时，退出码 1）\n\n```json\n{\"error\": {\"provider\": \"crossref\", \"type\": \"rate_limited\", \"message\": \"HTTP 429 ...\"}}\n```\n\n## 本技能不做什么\n\n- 不做多源合并与去重（交给 literature-search）。\n- 不评价文献质量、不做证据提取（交给 literature-survey）。\n- 不抓取付费墙全文；只取 API 公开的元数据与摘要。\n- 不支持 openalex \u002F crossref \u002F arxiv 之外的源（扩展需先修改脚本）。\n- 不缓存历史检索结果充当新结果。\n\n## 收尾与下一步\n\n1. 把 PaperDocument 数组或 error JSON 原样交还调用方。\n2. 提示命中数与建议的二次排序方式。\n3. 若连续 `rate_limited`，建议上层降低频率、稍后再试，或更换 provider。\n4. 结果为空数组时区分「源站确实无命中」与「检索被静默截断」，\n   后者按失败处理并留痕。\n",{"data":35,"body":41},{"name":4,"description":6,"user-invocable":36,"metadata":37},false,{"domains":38,"last_reviewed":40},[39],"literature","2026-08-18",{"type":42,"children":43},"root",[44,53,59,74,86,159,164,196,201,208,323,329,419,432,438,472,478,509,515,539,545,644,655,661,758,770,775,781,1197,1203,1341,1346,1374,1379,1409],{"type":45,"tag":46,"props":47,"children":49},"element","h1",{"id":48},"paper-search检索执行规程",[50],{"type":51,"value":52},"text","paper-search：检索执行规程",{"type":45,"tag":54,"props":55,"children":57},"h2",{"id":56},"目的",[58],{"type":51,"value":56},{"type":45,"tag":60,"props":61,"children":62},"p",{},[63,65,72],{"type":51,"value":64},"为上层技能（literature-search 等）提供可执行的检索规程：如何构建 query、\n如何调用 ",{"type":45,"tag":66,"props":67,"children":69},"code",{"className":68},[],[70],{"type":51,"value":71},"scripts\u002Fsearch_papers.py",{"type":51,"value":73},"、如何遵守各数据源的请求礼仪、\n如何解读与排序结果、如何处理失败。",{"type":45,"tag":60,"props":75,"children":76},{},[77,79,84],{"type":51,"value":78},"脚本约定（",{"type":45,"tag":66,"props":80,"children":82},{"className":81},[],[83],{"type":51,"value":71},{"type":51,"value":85},"，纯 Python 标准库实现，无第三方依赖）：",{"type":45,"tag":87,"props":88,"children":89},"ul",{},[90,128,133,154],{"type":45,"tag":91,"props":92,"children":93},"li",{},[94,96,102,104,110,112,118,120,126],{"type":51,"value":95},"参数：",{"type":45,"tag":66,"props":97,"children":99},{"className":98},[],[100],{"type":51,"value":101},"--query",{"type":51,"value":103},"（必填）、",{"type":45,"tag":66,"props":105,"children":107},{"className":106},[],[108],{"type":51,"value":109},"--provider {openalex,crossref,arxiv}",{"type":51,"value":111},"（必填）、\n",{"type":45,"tag":66,"props":113,"children":115},{"className":114},[],[116],{"type":51,"value":117},"--limit N",{"type":51,"value":119},"（默认 10，上限 50，超出自动截断）、",{"type":45,"tag":66,"props":121,"children":123},{"className":122},[],[124],{"type":51,"value":125},"--format json",{"type":51,"value":127},"。",{"type":45,"tag":91,"props":129,"children":130},{},[131],{"type":51,"value":132},"成功：stdout 输出 PaperDocument JSON 数组，退出码 0。",{"type":45,"tag":91,"props":134,"children":135},{},[136,138,144,146,152],{"type":51,"value":137},"失败：stdout 输出 ",{"type":45,"tag":66,"props":139,"children":141},{"className":140},[],[142],{"type":51,"value":143},"{\"error\": {\"provider\", \"type\", \"message\"}}",{"type":51,"value":145},"，\ntype ∈ ",{"type":45,"tag":66,"props":147,"children":149},{"className":148},[],[150],{"type":51,"value":151},"network | rate_limited | parse",{"type":51,"value":153},"，退出码 1；永不抛栈崩溃。",{"type":45,"tag":91,"props":155,"children":156},{},[157],{"type":51,"value":158},"内置礼仪：请求间隔 ≥0.5s、单请求超时 30s、UA 携带联系邮箱占位。",{"type":45,"tag":54,"props":160,"children":162},{"id":161},"前置检查",[163],{"type":51,"value":161},{"type":45,"tag":165,"props":166,"children":167},"ol",{},[168,186,191],{"type":45,"tag":91,"props":169,"children":170},{},[171,176,178,184],{"type":45,"tag":66,"props":172,"children":174},{"className":173},[],[175],{"type":51,"value":71},{"type":51,"value":177}," 存在；",{"type":45,"tag":66,"props":179,"children":181},{"className":180},[],[182],{"type":51,"value":183},"python --version",{"type":51,"value":185}," 可用（3.8+）。",{"type":45,"tag":91,"props":187,"children":188},{},[189],{"type":51,"value":190},"网络可用；目标 provider 可达。",{"type":45,"tag":91,"props":192,"children":193},{},[194],{"type":51,"value":195},"已按上层路由确定 provider 与 query。",{"type":45,"tag":54,"props":197,"children":199},{"id":198},"操作规程",[200],{"type":51,"value":198},{"type":45,"tag":202,"props":203,"children":205},"h3",{"id":204},"_1-query-构建",[206],{"type":51,"value":207},"1. query 构建",{"type":45,"tag":87,"props":209,"children":210},{},[211,216,318],{"type":45,"tag":91,"props":212,"children":213},{},[214],{"type":51,"value":215},"关键词以英文为主（三个 provider 对英文支持最好）；专业术语保留原文。",{"type":45,"tag":91,"props":217,"children":218},{},[219,221],{"type":51,"value":220},"布尔与字段限定（按 provider 方言）：\n",{"type":45,"tag":87,"props":222,"children":223},{},[224,245,258],{"type":45,"tag":91,"props":225,"children":226},{},[227,229,235,237,243],{"type":51,"value":228},"OpenAlex：",{"type":45,"tag":66,"props":230,"children":232},{"className":231},[],[233],{"type":51,"value":234},"search",{"type":51,"value":236}," 参数支持 AND \u002F OR 与引号短语，如\n",{"type":45,"tag":66,"props":238,"children":240},{"className":239},[],[241],{"type":51,"value":242},"\"large language model\" AND agent",{"type":51,"value":244},"；复杂字段过滤（年份、类型）由上层\n在结果上后置处理，当前脚本只暴露 search。",{"type":45,"tag":91,"props":246,"children":247},{},[248,250,256],{"type":51,"value":249},"Crossref：",{"type":45,"tag":66,"props":251,"children":253},{"className":252},[],[254],{"type":51,"value":255},"query",{"type":51,"value":257}," 为自由文本，偏题录精确匹配；查单篇文献时直接把标题\n或 DOI 作为 query 效果最佳。",{"type":45,"tag":91,"props":259,"children":260},{},[261,263,269,271,277,279,285,287,293,295,301,303,309,311,317],{"type":51,"value":262},"arXiv：",{"type":45,"tag":66,"props":264,"children":266},{"className":265},[],[267],{"type":51,"value":268},"search_query",{"type":51,"value":270}," 自动加 ",{"type":45,"tag":66,"props":272,"children":274},{"className":273},[],[275],{"type":51,"value":276},"all:",{"type":51,"value":278}," 前缀；需要字段限定时可在 query 中\n直接使用 ",{"type":45,"tag":66,"props":280,"children":282},{"className":281},[],[283],{"type":51,"value":284},"ti:",{"type":51,"value":286},"（标题）、",{"type":45,"tag":66,"props":288,"children":290},{"className":289},[],[291],{"type":51,"value":292},"abs:",{"type":51,"value":294},"（摘要）、",{"type":45,"tag":66,"props":296,"children":298},{"className":297},[],[299],{"type":51,"value":300},"au:",{"type":51,"value":302},"（作者），组合用 ",{"type":45,"tag":66,"props":304,"children":306},{"className":305},[],[307],{"type":51,"value":308},"+AND+",{"type":51,"value":310}," \u002F ",{"type":45,"tag":66,"props":312,"children":314},{"className":313},[],[315],{"type":51,"value":316},"+OR+",{"type":51,"value":127},{"type":45,"tag":91,"props":319,"children":320},{},[321],{"type":51,"value":322},"单次 query 控制在 2-6 个核心词；过长的 query 会显著降低命中率。",{"type":45,"tag":202,"props":324,"children":326},{"id":325},"_2-执行",[327],{"type":51,"value":328},"2. 执行",{"type":45,"tag":330,"props":331,"children":336},"pre",{"className":332,"code":333,"language":334,"meta":335,"style":335},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","python scripts\u002Fsearch_papers.py --query \"large language model agents\" \\\n  --provider openalex --limit 20 --format json\n","bash","",[337],{"type":45,"tag":66,"props":338,"children":339},{"__ignoreMap":335},[340,385],{"type":45,"tag":341,"props":342,"children":345},"span",{"class":343,"line":344},"line",1,[346,352,358,363,369,374,379],{"type":45,"tag":341,"props":347,"children":349},{"style":348},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[350],{"type":51,"value":351},"python",{"type":45,"tag":341,"props":353,"children":355},{"style":354},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[356],{"type":51,"value":357}," scripts\u002Fsearch_papers.py",{"type":45,"tag":341,"props":359,"children":360},{"style":354},[361],{"type":51,"value":362}," --query",{"type":45,"tag":341,"props":364,"children":366},{"style":365},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[367],{"type":51,"value":368}," \"",{"type":45,"tag":341,"props":370,"children":371},{"style":354},[372],{"type":51,"value":373},"large language model agents",{"type":45,"tag":341,"props":375,"children":376},{"style":365},[377],{"type":51,"value":378},"\"",{"type":45,"tag":341,"props":380,"children":382},{"style":381},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[383],{"type":51,"value":384}," \\\n",{"type":45,"tag":341,"props":386,"children":387},{"class":343,"line":27},[388,393,398,403,409,414],{"type":45,"tag":341,"props":389,"children":390},{"style":354},[391],{"type":51,"value":392},"  --provider",{"type":45,"tag":341,"props":394,"children":395},{"style":354},[396],{"type":51,"value":397}," openalex",{"type":45,"tag":341,"props":399,"children":400},{"style":354},[401],{"type":51,"value":402}," --limit",{"type":45,"tag":341,"props":404,"children":406},{"style":405},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[407],{"type":51,"value":408}," 20",{"type":45,"tag":341,"props":410,"children":411},{"style":354},[412],{"type":51,"value":413}," --format",{"type":45,"tag":341,"props":415,"children":416},{"style":354},[417],{"type":51,"value":418}," json\n",{"type":45,"tag":87,"props":420,"children":421},{},[422,427],{"type":45,"tag":91,"props":423,"children":424},{},[425],{"type":51,"value":426},"多个 provider 时逐次串行调用，不要并发轰炸同一数据源。",{"type":45,"tag":91,"props":428,"children":429},{},[430],{"type":51,"value":431},"结果较大时重定向到临时文件再解析，避免终端输出截断。",{"type":45,"tag":202,"props":433,"children":435},{"id":434},"_3-请求礼仪politeness",[436],{"type":51,"value":437},"3. 请求礼仪（politeness）",{"type":45,"tag":87,"props":439,"children":440},{},[441,446,459],{"type":45,"tag":91,"props":442,"children":443},{},[444],{"type":51,"value":445},"频率 ≤2 req\u002Fs；脚本已内置 ≥0.5s 请求间隔，上层批量调用时仍应串行执行。",{"type":45,"tag":91,"props":447,"children":448},{},[449,451,457],{"type":51,"value":450},"UA 中的联系邮箱是占位 ",{"type":45,"tag":66,"props":452,"children":454},{"className":453},[],[455],{"type":51,"value":456},"you@example.com",{"type":51,"value":458},"：正式使用前提醒用户替换为真实\n邮箱（OpenAlex polite pool 与 Crossref 均以此为诚信标识，提供更稳定服务）。",{"type":45,"tag":91,"props":460,"children":461},{},[462,464,470],{"type":51,"value":463},"收到 ",{"type":45,"tag":66,"props":465,"children":467},{"className":466},[],[468],{"type":51,"value":469},"rate_limited",{"type":51,"value":471}," 时按指数退避重试：2s → 4s → 8s，最多 3 次；\n仍失败则把结构化 error 原样交还上层，不无限重试。",{"type":45,"tag":202,"props":473,"children":475},{"id":474},"_4-结果解读与排序建议",[476],{"type":51,"value":477},"4. 结果解读与排序建议",{"type":45,"tag":87,"props":479,"children":480},{},[481,504],{"type":45,"tag":91,"props":482,"children":483},{},[484,486],{"type":51,"value":485},"各源默认相关性排序；解读时注意：\n",{"type":45,"tag":87,"props":487,"children":488},{},[489,494,499],{"type":45,"tag":91,"props":490,"children":491},{},[492],{"type":51,"value":493},"OpenAlex 结果元数据丰富，适合按「相关性 + 被引 + 年份」二次排序；",{"type":45,"tag":91,"props":495,"children":496},{},[497],{"type":51,"value":498},"Crossref 偏题录精确匹配，前排结果通常就是目标文献；",{"type":45,"tag":91,"props":500,"children":501},{},[502],{"type":51,"value":503},"arXiv 偏最新成果，注意区分预印本与正式发表版（条目含 journal_ref 时\n优先引用正式版）。",{"type":45,"tag":91,"props":505,"children":506},{},[507],{"type":51,"value":508},"建议上层保留原始顺序，另存「建议阅读顺序」，不要在 papers.json 里原地重排。",{"type":45,"tag":202,"props":510,"children":512},{"id":511},"_5-失败处理",[513],{"type":51,"value":514},"5. 失败处理",{"type":45,"tag":87,"props":516,"children":517},{},[518,523,534],{"type":45,"tag":91,"props":519,"children":520},{},[521],{"type":51,"value":522},"逐字保留脚本输出的 error JSON，原样写入上层 manifest；",{"type":45,"tag":91,"props":524,"children":525},{},[526,532],{"type":45,"tag":66,"props":527,"children":529},{"className":528},[],[530],{"type":51,"value":531},"parse",{"type":51,"value":533}," 类错误记录响应片段（≤200 字符）便于排查；",{"type":45,"tag":91,"props":535,"children":536},{},[537],{"type":51,"value":538},"任何失败都不改写成「0 条结果」。",{"type":45,"tag":202,"props":540,"children":542},{"id":541},"_6-provider-查询方言速查",[543],{"type":51,"value":544},"6. provider 查询方言速查",{"type":45,"tag":546,"props":547,"children":548},"table",{},[549,573],{"type":45,"tag":550,"props":551,"children":552},"thead",{},[553],{"type":45,"tag":554,"props":555,"children":556},"tr",{},[557,563,568],{"type":45,"tag":558,"props":559,"children":560},"th",{},[561],{"type":51,"value":562},"provider",{"type":45,"tag":558,"props":564,"children":565},{},[566],{"type":51,"value":567},"端点",{"type":45,"tag":558,"props":569,"children":570},{},[571],{"type":51,"value":572},"query 要点",{"type":45,"tag":574,"props":575,"children":576},"tbody",{},[577,600,622],{"type":45,"tag":554,"props":578,"children":579},{},[580,586,595],{"type":45,"tag":581,"props":582,"children":583},"td",{},[584],{"type":51,"value":585},"openalex",{"type":45,"tag":581,"props":587,"children":588},{},[589],{"type":45,"tag":66,"props":590,"children":592},{"className":591},[],[593],{"type":51,"value":594},"https:\u002F\u002Fapi.openalex.org\u002Fworks?search=...&per-page=",{"type":45,"tag":581,"props":596,"children":597},{},[598],{"type":51,"value":599},"支持 AND \u002F OR、引号短语；带 mailto 进 polite pool",{"type":45,"tag":554,"props":601,"children":602},{},[603,608,617],{"type":45,"tag":581,"props":604,"children":605},{},[606],{"type":51,"value":607},"crossref",{"type":45,"tag":581,"props":609,"children":610},{},[611],{"type":45,"tag":66,"props":612,"children":614},{"className":613},[],[615],{"type":51,"value":616},"https:\u002F\u002Fapi.crossref.org\u002Fworks?query=...&rows=",{"type":45,"tag":581,"props":618,"children":619},{},[620],{"type":51,"value":621},"自由文本题录匹配；查单篇直接给标题或 DOI",{"type":45,"tag":554,"props":623,"children":624},{},[625,630,639],{"type":45,"tag":581,"props":626,"children":627},{},[628],{"type":51,"value":629},"arxiv",{"type":45,"tag":581,"props":631,"children":632},{},[633],{"type":45,"tag":66,"props":634,"children":636},{"className":635},[],[637],{"type":51,"value":638},"http:\u002F\u002Fexport.arxiv.org\u002Fapi\u002Fquery?search_query=all:...",{"type":45,"tag":581,"props":640,"children":641},{},[642],{"type":51,"value":643},"字段前缀 ti: \u002F abs: \u002F au:；组合用 +AND+ \u002F +OR+",{"type":45,"tag":60,"props":645,"children":646},{},[647,653],{"type":45,"tag":66,"props":648,"children":650},{"className":649},[],[651],{"type":51,"value":652},"--limit",{"type":51,"value":654}," 与各源单页上限：脚本上限 50，三源单页均可满足；需要更多结果时\n由上层分批翻页（当前脚本不暴露 start \u002F cursor 参数）。",{"type":45,"tag":202,"props":656,"children":658},{"id":657},"_7-常见失败与对策",[659],{"type":51,"value":660},"7. 常见失败与对策",{"type":45,"tag":546,"props":662,"children":663},{},[664,685],{"type":45,"tag":550,"props":665,"children":666},{},[667],{"type":45,"tag":554,"props":668,"children":669},{},[670,675,680],{"type":45,"tag":558,"props":671,"children":672},{},[673],{"type":51,"value":674},"error.type",{"type":45,"tag":558,"props":676,"children":677},{},[678],{"type":51,"value":679},"典型原因",{"type":45,"tag":558,"props":681,"children":682},{},[683],{"type":51,"value":684},"对策",{"type":45,"tag":574,"props":686,"children":687},{},[688,706,723,740],{"type":45,"tag":554,"props":689,"children":690},{},[691,696,701],{"type":45,"tag":581,"props":692,"children":693},{},[694],{"type":51,"value":695},"network",{"type":45,"tag":581,"props":697,"children":698},{},[699],{"type":51,"value":700},"断网、DNS 失败、TLS 错误、超时",{"type":45,"tag":581,"props":702,"children":703},{},[704],{"type":51,"value":705},"检查网络后重试；连续失败则终止并留痕",{"type":45,"tag":554,"props":707,"children":708},{},[709,713,718],{"type":45,"tag":581,"props":710,"children":711},{},[712],{"type":51,"value":469},{"type":45,"tag":581,"props":714,"children":715},{},[716],{"type":51,"value":717},"触发源站限流（HTTP 429 \u002F 503）",{"type":45,"tag":581,"props":719,"children":720},{},[721],{"type":51,"value":722},"指数退避 2s→4s→8s，最多 3 次",{"type":45,"tag":554,"props":724,"children":725},{},[726,730,735],{"type":45,"tag":581,"props":727,"children":728},{},[729],{"type":51,"value":531},{"type":45,"tag":581,"props":731,"children":732},{},[733],{"type":51,"value":734},"响应结构变化、空响应、XML 非法",{"type":45,"tag":581,"props":736,"children":737},{},[738],{"type":51,"value":739},"记录响应片段，改小 limit 重试；仍失败则留痕",{"type":45,"tag":554,"props":741,"children":742},{},[743,748,753],{"type":45,"tag":581,"props":744,"children":745},{},[746],{"type":51,"value":747},"超时",{"type":45,"tag":581,"props":749,"children":750},{},[751],{"type":51,"value":752},"源站响应慢或链路抖动",{"type":45,"tag":581,"props":754,"children":755},{},[756],{"type":51,"value":757},"30s 超时归入 network，稍后重试",{"type":45,"tag":60,"props":759,"children":760},{},[761,763,768],{"type":51,"value":762},"任何重试都不更换 query 内容；换 query 属于上层 literature-search 的决策。\n脚本单请求超时固定 30s，超时归入 ",{"type":45,"tag":66,"props":764,"children":766},{"className":765},[],[767],{"type":51,"value":695},{"type":51,"value":769}," 类错误；不要为「快一点」\n而调小间隔或并发请求——被封 IP 的代价远大于多等几秒。",{"type":45,"tag":54,"props":771,"children":773},{"id":772},"输出模板",[774],{"type":51,"value":772},{"type":45,"tag":202,"props":776,"children":778},{"id":777},"paperdocumentstdout成功时",[779],{"type":51,"value":780},"PaperDocument（stdout，成功时）",{"type":45,"tag":330,"props":782,"children":786},{"className":783,"code":784,"language":785,"meta":335,"style":335},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[\n  {\n    \"id\": \"https:\u002F\u002Fdoi.org\u002F10.xxxx\u002Fyyyy\",\n    \"title\": \"...\",\n    \"authors\": [\"...\"],\n    \"year\": 2024,\n    \"venue\": \"...\",\n    \"doi\": \"10.xxxx\u002Fyyyy\",\n    \"url\": \"https:\u002F\u002Fdoi.org\u002F10.xxxx\u002Fyyyy\",\n    \"abstract\": \"...\",\n    \"source\": \"crossref\",\n    \"retrieved_at\": \"2026-08-18T00:00:00+00:00\"\n  }\n]\n","json",[787],{"type":45,"tag":66,"props":788,"children":789},{"__ignoreMap":335},[790,798,806,848,886,928,958,995,1033,1070,1107,1144,1179,1188],{"type":45,"tag":341,"props":791,"children":792},{"class":343,"line":344},[793],{"type":45,"tag":341,"props":794,"children":795},{"style":365},[796],{"type":51,"value":797},"[\n",{"type":45,"tag":341,"props":799,"children":800},{"class":343,"line":27},[801],{"type":45,"tag":341,"props":802,"children":803},{"style":365},[804],{"type":51,"value":805},"  {\n",{"type":45,"tag":341,"props":807,"children":809},{"class":343,"line":808},3,[810,815,821,825,830,834,839,843],{"type":45,"tag":341,"props":811,"children":812},{"style":365},[813],{"type":51,"value":814},"    \"",{"type":45,"tag":341,"props":816,"children":818},{"style":817},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[819],{"type":51,"value":820},"id",{"type":45,"tag":341,"props":822,"children":823},{"style":365},[824],{"type":51,"value":378},{"type":45,"tag":341,"props":826,"children":827},{"style":365},[828],{"type":51,"value":829},":",{"type":45,"tag":341,"props":831,"children":832},{"style":365},[833],{"type":51,"value":368},{"type":45,"tag":341,"props":835,"children":836},{"style":354},[837],{"type":51,"value":838},"https:\u002F\u002Fdoi.org\u002F10.xxxx\u002Fyyyy",{"type":45,"tag":341,"props":840,"children":841},{"style":365},[842],{"type":51,"value":378},{"type":45,"tag":341,"props":844,"children":845},{"style":365},[846],{"type":51,"value":847},",\n",{"type":45,"tag":341,"props":849,"children":851},{"class":343,"line":850},4,[852,856,861,865,869,873,878,882],{"type":45,"tag":341,"props":853,"children":854},{"style":365},[855],{"type":51,"value":814},{"type":45,"tag":341,"props":857,"children":858},{"style":817},[859],{"type":51,"value":860},"title",{"type":45,"tag":341,"props":862,"children":863},{"style":365},[864],{"type":51,"value":378},{"type":45,"tag":341,"props":866,"children":867},{"style":365},[868],{"type":51,"value":829},{"type":45,"tag":341,"props":870,"children":871},{"style":365},[872],{"type":51,"value":368},{"type":45,"tag":341,"props":874,"children":875},{"style":354},[876],{"type":51,"value":877},"...",{"type":45,"tag":341,"props":879,"children":880},{"style":365},[881],{"type":51,"value":378},{"type":45,"tag":341,"props":883,"children":884},{"style":365},[885],{"type":51,"value":847},{"type":45,"tag":341,"props":887,"children":888},{"class":343,"line":23},[889,893,898,902,906,911,915,919,923],{"type":45,"tag":341,"props":890,"children":891},{"style":365},[892],{"type":51,"value":814},{"type":45,"tag":341,"props":894,"children":895},{"style":817},[896],{"type":51,"value":897},"authors",{"type":45,"tag":341,"props":899,"children":900},{"style":365},[901],{"type":51,"value":378},{"type":45,"tag":341,"props":903,"children":904},{"style":365},[905],{"type":51,"value":829},{"type":45,"tag":341,"props":907,"children":908},{"style":365},[909],{"type":51,"value":910}," [",{"type":45,"tag":341,"props":912,"children":913},{"style":365},[914],{"type":51,"value":378},{"type":45,"tag":341,"props":916,"children":917},{"style":354},[918],{"type":51,"value":877},{"type":45,"tag":341,"props":920,"children":921},{"style":365},[922],{"type":51,"value":378},{"type":45,"tag":341,"props":924,"children":925},{"style":365},[926],{"type":51,"value":927},"],\n",{"type":45,"tag":341,"props":929,"children":931},{"class":343,"line":930},6,[932,936,941,945,949,954],{"type":45,"tag":341,"props":933,"children":934},{"style":365},[935],{"type":51,"value":814},{"type":45,"tag":341,"props":937,"children":938},{"style":817},[939],{"type":51,"value":940},"year",{"type":45,"tag":341,"props":942,"children":943},{"style":365},[944],{"type":51,"value":378},{"type":45,"tag":341,"props":946,"children":947},{"style":365},[948],{"type":51,"value":829},{"type":45,"tag":341,"props":950,"children":951},{"style":405},[952],{"type":51,"value":953}," 2024",{"type":45,"tag":341,"props":955,"children":956},{"style":365},[957],{"type":51,"value":847},{"type":45,"tag":341,"props":959,"children":961},{"class":343,"line":960},7,[962,966,971,975,979,983,987,991],{"type":45,"tag":341,"props":963,"children":964},{"style":365},[965],{"type":51,"value":814},{"type":45,"tag":341,"props":967,"children":968},{"style":817},[969],{"type":51,"value":970},"venue",{"type":45,"tag":341,"props":972,"children":973},{"style":365},[974],{"type":51,"value":378},{"type":45,"tag":341,"props":976,"children":977},{"style":365},[978],{"type":51,"value":829},{"type":45,"tag":341,"props":980,"children":981},{"style":365},[982],{"type":51,"value":368},{"type":45,"tag":341,"props":984,"children":985},{"style":354},[986],{"type":51,"value":877},{"type":45,"tag":341,"props":988,"children":989},{"style":365},[990],{"type":51,"value":378},{"type":45,"tag":341,"props":992,"children":993},{"style":365},[994],{"type":51,"value":847},{"type":45,"tag":341,"props":996,"children":998},{"class":343,"line":997},8,[999,1003,1008,1012,1016,1020,1025,1029],{"type":45,"tag":341,"props":1000,"children":1001},{"style":365},[1002],{"type":51,"value":814},{"type":45,"tag":341,"props":1004,"children":1005},{"style":817},[1006],{"type":51,"value":1007},"doi",{"type":45,"tag":341,"props":1009,"children":1010},{"style":365},[1011],{"type":51,"value":378},{"type":45,"tag":341,"props":1013,"children":1014},{"style":365},[1015],{"type":51,"value":829},{"type":45,"tag":341,"props":1017,"children":1018},{"style":365},[1019],{"type":51,"value":368},{"type":45,"tag":341,"props":1021,"children":1022},{"style":354},[1023],{"type":51,"value":1024},"10.xxxx\u002Fyyyy",{"type":45,"tag":341,"props":1026,"children":1027},{"style":365},[1028],{"type":51,"value":378},{"type":45,"tag":341,"props":1030,"children":1031},{"style":365},[1032],{"type":51,"value":847},{"type":45,"tag":341,"props":1034,"children":1036},{"class":343,"line":1035},9,[1037,1041,1046,1050,1054,1058,1062,1066],{"type":45,"tag":341,"props":1038,"children":1039},{"style":365},[1040],{"type":51,"value":814},{"type":45,"tag":341,"props":1042,"children":1043},{"style":817},[1044],{"type":51,"value":1045},"url",{"type":45,"tag":341,"props":1047,"children":1048},{"style":365},[1049],{"type":51,"value":378},{"type":45,"tag":341,"props":1051,"children":1052},{"style":365},[1053],{"type":51,"value":829},{"type":45,"tag":341,"props":1055,"children":1056},{"style":365},[1057],{"type":51,"value":368},{"type":45,"tag":341,"props":1059,"children":1060},{"style":354},[1061],{"type":51,"value":838},{"type":45,"tag":341,"props":1063,"children":1064},{"style":365},[1065],{"type":51,"value":378},{"type":45,"tag":341,"props":1067,"children":1068},{"style":365},[1069],{"type":51,"value":847},{"type":45,"tag":341,"props":1071,"children":1073},{"class":343,"line":1072},10,[1074,1078,1083,1087,1091,1095,1099,1103],{"type":45,"tag":341,"props":1075,"children":1076},{"style":365},[1077],{"type":51,"value":814},{"type":45,"tag":341,"props":1079,"children":1080},{"style":817},[1081],{"type":51,"value":1082},"abstract",{"type":45,"tag":341,"props":1084,"children":1085},{"style":365},[1086],{"type":51,"value":378},{"type":45,"tag":341,"props":1088,"children":1089},{"style":365},[1090],{"type":51,"value":829},{"type":45,"tag":341,"props":1092,"children":1093},{"style":365},[1094],{"type":51,"value":368},{"type":45,"tag":341,"props":1096,"children":1097},{"style":354},[1098],{"type":51,"value":877},{"type":45,"tag":341,"props":1100,"children":1101},{"style":365},[1102],{"type":51,"value":378},{"type":45,"tag":341,"props":1104,"children":1105},{"style":365},[1106],{"type":51,"value":847},{"type":45,"tag":341,"props":1108,"children":1110},{"class":343,"line":1109},11,[1111,1115,1120,1124,1128,1132,1136,1140],{"type":45,"tag":341,"props":1112,"children":1113},{"style":365},[1114],{"type":51,"value":814},{"type":45,"tag":341,"props":1116,"children":1117},{"style":817},[1118],{"type":51,"value":1119},"source",{"type":45,"tag":341,"props":1121,"children":1122},{"style":365},[1123],{"type":51,"value":378},{"type":45,"tag":341,"props":1125,"children":1126},{"style":365},[1127],{"type":51,"value":829},{"type":45,"tag":341,"props":1129,"children":1130},{"style":365},[1131],{"type":51,"value":368},{"type":45,"tag":341,"props":1133,"children":1134},{"style":354},[1135],{"type":51,"value":607},{"type":45,"tag":341,"props":1137,"children":1138},{"style":365},[1139],{"type":51,"value":378},{"type":45,"tag":341,"props":1141,"children":1142},{"style":365},[1143],{"type":51,"value":847},{"type":45,"tag":341,"props":1145,"children":1147},{"class":343,"line":1146},12,[1148,1152,1157,1161,1165,1169,1174],{"type":45,"tag":341,"props":1149,"children":1150},{"style":365},[1151],{"type":51,"value":814},{"type":45,"tag":341,"props":1153,"children":1154},{"style":817},[1155],{"type":51,"value":1156},"retrieved_at",{"type":45,"tag":341,"props":1158,"children":1159},{"style":365},[1160],{"type":51,"value":378},{"type":45,"tag":341,"props":1162,"children":1163},{"style":365},[1164],{"type":51,"value":829},{"type":45,"tag":341,"props":1166,"children":1167},{"style":365},[1168],{"type":51,"value":368},{"type":45,"tag":341,"props":1170,"children":1171},{"style":354},[1172],{"type":51,"value":1173},"2026-08-18T00:00:00+00:00",{"type":45,"tag":341,"props":1175,"children":1176},{"style":365},[1177],{"type":51,"value":1178},"\"\n",{"type":45,"tag":341,"props":1180,"children":1182},{"class":343,"line":1181},13,[1183],{"type":45,"tag":341,"props":1184,"children":1185},{"style":365},[1186],{"type":51,"value":1187},"  }\n",{"type":45,"tag":341,"props":1189,"children":1191},{"class":343,"line":1190},14,[1192],{"type":45,"tag":341,"props":1193,"children":1194},{"style":365},[1195],{"type":51,"value":1196},"]\n",{"type":45,"tag":202,"props":1198,"children":1200},{"id":1199},"错误对象stdout失败时退出码-1",[1201],{"type":51,"value":1202},"错误对象（stdout，失败时，退出码 1）",{"type":45,"tag":330,"props":1204,"children":1206},{"className":783,"code":1205,"language":785,"meta":335,"style":335},"{\"error\": {\"provider\": \"crossref\", \"type\": \"rate_limited\", \"message\": \"HTTP 429 ...\"}}\n",[1207],{"type":45,"tag":66,"props":1208,"children":1209},{"__ignoreMap":335},[1210],{"type":45,"tag":341,"props":1211,"children":1212},{"class":343,"line":344},[1213,1218,1222,1227,1231,1235,1240,1244,1248,1252,1256,1260,1264,1268,1273,1277,1282,1286,1290,1294,1298,1302,1306,1310,1315,1319,1323,1327,1332,1336],{"type":45,"tag":341,"props":1214,"children":1215},{"style":365},[1216],{"type":51,"value":1217},"{",{"type":45,"tag":341,"props":1219,"children":1220},{"style":365},[1221],{"type":51,"value":378},{"type":45,"tag":341,"props":1223,"children":1224},{"style":817},[1225],{"type":51,"value":1226},"error",{"type":45,"tag":341,"props":1228,"children":1229},{"style":365},[1230],{"type":51,"value":378},{"type":45,"tag":341,"props":1232,"children":1233},{"style":365},[1234],{"type":51,"value":829},{"type":45,"tag":341,"props":1236,"children":1237},{"style":365},[1238],{"type":51,"value":1239}," {",{"type":45,"tag":341,"props":1241,"children":1242},{"style":365},[1243],{"type":51,"value":378},{"type":45,"tag":341,"props":1245,"children":1246},{"style":348},[1247],{"type":51,"value":562},{"type":45,"tag":341,"props":1249,"children":1250},{"style":365},[1251],{"type":51,"value":378},{"type":45,"tag":341,"props":1253,"children":1254},{"style":365},[1255],{"type":51,"value":829},{"type":45,"tag":341,"props":1257,"children":1258},{"style":365},[1259],{"type":51,"value":368},{"type":45,"tag":341,"props":1261,"children":1262},{"style":354},[1263],{"type":51,"value":607},{"type":45,"tag":341,"props":1265,"children":1266},{"style":365},[1267],{"type":51,"value":378},{"type":45,"tag":341,"props":1269,"children":1270},{"style":365},[1271],{"type":51,"value":1272},",",{"type":45,"tag":341,"props":1274,"children":1275},{"style":365},[1276],{"type":51,"value":368},{"type":45,"tag":341,"props":1278,"children":1279},{"style":348},[1280],{"type":51,"value":1281},"type",{"type":45,"tag":341,"props":1283,"children":1284},{"style":365},[1285],{"type":51,"value":378},{"type":45,"tag":341,"props":1287,"children":1288},{"style":365},[1289],{"type":51,"value":829},{"type":45,"tag":341,"props":1291,"children":1292},{"style":365},[1293],{"type":51,"value":368},{"type":45,"tag":341,"props":1295,"children":1296},{"style":354},[1297],{"type":51,"value":469},{"type":45,"tag":341,"props":1299,"children":1300},{"style":365},[1301],{"type":51,"value":378},{"type":45,"tag":341,"props":1303,"children":1304},{"style":365},[1305],{"type":51,"value":1272},{"type":45,"tag":341,"props":1307,"children":1308},{"style":365},[1309],{"type":51,"value":368},{"type":45,"tag":341,"props":1311,"children":1312},{"style":348},[1313],{"type":51,"value":1314},"message",{"type":45,"tag":341,"props":1316,"children":1317},{"style":365},[1318],{"type":51,"value":378},{"type":45,"tag":341,"props":1320,"children":1321},{"style":365},[1322],{"type":51,"value":829},{"type":45,"tag":341,"props":1324,"children":1325},{"style":365},[1326],{"type":51,"value":368},{"type":45,"tag":341,"props":1328,"children":1329},{"style":354},[1330],{"type":51,"value":1331},"HTTP 429 ...",{"type":45,"tag":341,"props":1333,"children":1334},{"style":365},[1335],{"type":51,"value":378},{"type":45,"tag":341,"props":1337,"children":1338},{"style":365},[1339],{"type":51,"value":1340},"}}\n",{"type":45,"tag":54,"props":1342,"children":1344},{"id":1343},"本技能不做什么",[1345],{"type":51,"value":1343},{"type":45,"tag":87,"props":1347,"children":1348},{},[1349,1354,1359,1364,1369],{"type":45,"tag":91,"props":1350,"children":1351},{},[1352],{"type":51,"value":1353},"不做多源合并与去重（交给 literature-search）。",{"type":45,"tag":91,"props":1355,"children":1356},{},[1357],{"type":51,"value":1358},"不评价文献质量、不做证据提取（交给 literature-survey）。",{"type":45,"tag":91,"props":1360,"children":1361},{},[1362],{"type":51,"value":1363},"不抓取付费墙全文；只取 API 公开的元数据与摘要。",{"type":45,"tag":91,"props":1365,"children":1366},{},[1367],{"type":51,"value":1368},"不支持 openalex \u002F crossref \u002F arxiv 之外的源（扩展需先修改脚本）。",{"type":45,"tag":91,"props":1370,"children":1371},{},[1372],{"type":51,"value":1373},"不缓存历史检索结果充当新结果。",{"type":45,"tag":54,"props":1375,"children":1377},{"id":1376},"收尾与下一步",[1378],{"type":51,"value":1376},{"type":45,"tag":165,"props":1380,"children":1381},{},[1382,1387,1392,1404],{"type":45,"tag":91,"props":1383,"children":1384},{},[1385],{"type":51,"value":1386},"把 PaperDocument 数组或 error JSON 原样交还调用方。",{"type":45,"tag":91,"props":1388,"children":1389},{},[1390],{"type":51,"value":1391},"提示命中数与建议的二次排序方式。",{"type":45,"tag":91,"props":1393,"children":1394},{},[1395,1397,1402],{"type":51,"value":1396},"若连续 ",{"type":45,"tag":66,"props":1398,"children":1400},{"className":1399},[],[1401],{"type":51,"value":469},{"type":51,"value":1403},"，建议上层降低频率、稍后再试，或更换 provider。",{"type":45,"tag":91,"props":1405,"children":1406},{},[1407],{"type":51,"value":1408},"结果为空数组时区分「源站确实无命中」与「检索被静默截断」，\n后者按失败处理并留痕。",{"type":45,"tag":1410,"props":1411,"children":1412},"style",{},[1413],{"type":51,"value":1414},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1416,"total":1617},[1417,1441,1457,1476,1491,1511,1529,1547,1562,1578,1597,1607],{"slug":1418,"name":1418,"fn":1419,"description":1420,"org":1421,"tags":1422,"stars":1438,"repoUrl":1439,"updatedAt":1440},"android-native-dev","develop Android native applications","Android native application development and UI design guide. Covers Material Design 3, Kotlin\u002FCompose development, project configuration, accessibility, and build troubleshooting. Read this before Android native application development.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1423,1426,1429,1432,1435],{"name":1424,"slug":1425,"type":16},"Accessibility","accessibility",{"name":1427,"slug":1428,"type":16},"Android","android",{"name":1430,"slug":1431,"type":16},"Kotlin","kotlin",{"name":1433,"slug":1434,"type":16},"Mobile","mobile",{"name":1436,"slug":1437,"type":16},"UI Components","ui-components",13030,"https:\u002F\u002Fgithub.com\u002FMiniMax-AI\u002Fskills","2026-07-13T06:16:54.247834",{"slug":1442,"name":1442,"fn":1443,"description":1444,"org":1445,"tags":1446,"stars":1438,"repoUrl":1439,"updatedAt":1456},"buddy-sings","generate singing performances for AI companions","Use when user wants their Claude Code pet (\u002Fbuddy) to sing a song. Triggers on any request that combines the concept of their Claude Code buddy, pet, or companion with singing or music. Supports multilingual triggers — match equivalent phrases in any language.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1447,1450,1453],{"name":1448,"slug":1449,"type":16},"Agents","agents",{"name":1451,"slug":1452,"type":16},"Audio","audio",{"name":1454,"slug":1455,"type":16},"Creative","creative","2026-07-13T06:16:35.130644",{"slug":1458,"name":1458,"fn":1459,"description":1460,"org":1461,"tags":1462,"stars":1438,"repoUrl":1439,"updatedAt":1475},"color-font-skill","select color palettes and font pairings","Choose presentation-ready color palettes and font pairings for PPT\u002Fdesign tasks. Use when users ask for visual theme choices, brand-safe palettes, or font recommendations. Triggers include: 配色, 色板, 字体, color palette, font, PPT配色, 字体搭配.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1463,1466,1469,1472],{"name":1464,"slug":1465,"type":16},"Design","design",{"name":1467,"slug":1468,"type":16},"Presentations","presentations",{"name":1470,"slug":1471,"type":16},"Themes","themes",{"name":1473,"slug":1474,"type":16},"Typography","typography","2026-07-13T06:17:02.785587",{"slug":1477,"name":1477,"fn":1478,"description":1479,"org":1480,"tags":1481,"stars":1438,"repoUrl":1439,"updatedAt":1490},"design-style-skill","select visual design systems for presentations","Select a consistent visual design system for PPT slides using radius\u002Fspacing style recipes. Use when users ask for overall style direction or component styling consistency. Includes Sharp\u002FSoft\u002FRounded\u002FPill recipes, component mappings, typography\u002Fspacing rules, and mixing guidance. Triggers: 风格, style, radius, spacing, 圆角, 间距, PPT风格, 视觉风格, design style, component style.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1482,1483,1486,1489],{"name":1464,"slug":1465,"type":16},{"name":1484,"slug":1485,"type":16},"Design System","design-system",{"name":1487,"slug":1488,"type":16},"PowerPoint","powerpoint",{"name":1467,"slug":1468,"type":16},"2026-07-13T06:17:10.398389",{"slug":1492,"name":1492,"fn":1493,"description":1494,"org":1495,"tags":1496,"stars":1438,"repoUrl":1439,"updatedAt":1510},"flutter-dev","build cross-platform apps with Flutter","Flutter cross-platform development guide covering widget patterns, Riverpod\u002FBloc state management, GoRouter navigation, performance optimization, and platform-specific implementations. Includes const optimization, responsive layouts, testing strategies, and DevTools profiling.\nUse when: building Flutter apps, implementing state management (Riverpod\u002FBloc), setting up GoRouter navigation, creating custom widgets, optimizing performance, writing widget tests, cross-platform development.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1497,1500,1503,1504,1507],{"name":1498,"slug":1499,"type":16},"Dart","dart",{"name":1501,"slug":1502,"type":16},"Flutter","flutter",{"name":1433,"slug":1434,"type":16},{"name":1505,"slug":1506,"type":16},"Performance","performance",{"name":1508,"slug":1509,"type":16},"State Management","state-management","2026-07-13T06:16:36.626679",{"slug":1512,"name":1512,"fn":1513,"description":1514,"org":1515,"tags":1516,"stars":1438,"repoUrl":1439,"updatedAt":1528},"frontend-dev","build visually striking frontend web pages","Full-stack frontend development combining premium UI design, cinematic animations,\nAI-generated media assets, persuasive copywriting, and visual art. Builds complete,\nvisually striking web pages with real media, advanced motion, and compelling copy.\nUse when: building landing pages, marketing sites, product pages, dashboards,\ngenerating media assets (image\u002Fvideo\u002Faudio\u002Fmusic), writing conversion copy,\ncreating generative art, or implementing cinematic scroll animations.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1517,1520,1521,1522,1525],{"name":1518,"slug":1519,"type":16},"Animation","animation",{"name":1454,"slug":1455,"type":16},{"name":1464,"slug":1465,"type":16},{"name":1523,"slug":1524,"type":16},"Frontend","frontend",{"name":1526,"slug":1527,"type":16},"Web Development","web-development","2026-07-13T06:16:39.108827",{"slug":1530,"name":1530,"fn":1531,"description":1532,"org":1533,"tags":1534,"stars":1438,"repoUrl":1439,"updatedAt":1546},"fullstack-dev","build full-stack web applications","Full-stack backend architecture and frontend-backend integration guide.\nTRIGGER when: building a full-stack app, creating REST API with frontend, scaffolding backend service,\nbuilding todo app, building CRUD app, building real-time app, building chat app,\nExpress + React, Next.js API, Node.js backend, Python backend, Go backend,\ndesigning service layers, implementing error handling, managing config\u002Fauth,\nsetting up API clients, implementing auth flows, handling file uploads,\nadding real-time features (SSE\u002FWebSocket), hardening for production.\nDO NOT TRIGGER when: pure frontend UI work, pure CSS\u002Fstyling, database schema only.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1535,1538,1539,1542,1545],{"name":1536,"slug":1537,"type":16},"Backend","backend",{"name":1523,"slug":1524,"type":16},{"name":1540,"slug":1541,"type":16},"Full-stack","full-stack",{"name":1543,"slug":1544,"type":16},"REST API","rest-api",{"name":1526,"slug":1527,"type":16},"2026-07-13T06:16:43.219005",{"slug":1548,"name":1548,"fn":1549,"description":1550,"org":1551,"tags":1552,"stars":1438,"repoUrl":1439,"updatedAt":1561},"gif-sticker-maker","create animated GIF stickers from photos","Convert photos (people, pets, objects, logos) into 4 animated GIF stickers with captions.\nUse when: user wants to create cartoon stickers, GIF expressions, emoji packs, animated avatars,\nor convert photos to Funko Pop \u002F Pop Mart blind box style animations.\nTriggers: sticker, GIF, cartoon, emoji, expression pack, avatar animation.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1553,1554,1555,1558],{"name":1518,"slug":1519,"type":16},{"name":1454,"slug":1455,"type":16},{"name":1556,"slug":1557,"type":16},"Images","images",{"name":1559,"slug":1560,"type":16},"Media","media","2026-07-13T06:16:51.74461",{"slug":1563,"name":1563,"fn":1564,"description":1565,"org":1566,"tags":1567,"stars":1438,"repoUrl":1439,"updatedAt":1577},"ios-application-dev","develop iOS applications with SwiftUI and UIKit","iOS application development guide covering UIKit, SnapKit, and SwiftUI. Includes touch targets, safe areas, navigation patterns, Dynamic Type, Dark Mode, accessibility, collection views, common UI components, and SwiftUI design guidelines. For detailed references on specific topics, see the reference files.\nUse when: developing iOS apps, implementing UI, reviewing iOS code, working with UIKit\u002FSnapKit\u002FSwiftUI layouts, building iPhone interfaces, Swift mobile development, Apple HIG compliance, iOS accessibility implementation.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1568,1569,1572,1573,1576],{"name":1424,"slug":1425,"type":16},{"name":1570,"slug":1571,"type":16},"iOS","ios",{"name":1433,"slug":1434,"type":16},{"name":1574,"slug":1575,"type":16},"SwiftUI","swiftui",{"name":1436,"slug":1437,"type":16},"2026-07-13T06:16:55.686092",{"slug":1579,"name":1579,"fn":1580,"description":1581,"org":1582,"tags":1583,"stars":1438,"repoUrl":1439,"updatedAt":1596},"minimax-docx","create and edit DOCX documents","Professional DOCX document creation, editing, and formatting using OpenXML SDK (.NET). Three pipelines: (A) create new documents from scratch, (B) fill\u002Fedit content in existing documents, (C) apply template formatting with XSD validation gate-check. MUST use this skill whenever the user wants to produce, modify, or format a Word document — including when they say \"write a report\", \"draft a proposal\", \"make a contract\", \"fill in this form\", \"reformat to match this template\", or any task whose final output is a .docx file. Even if the user doesn't mention \"docx\" explicitly, if the task implies a printable\u002Fformal document, use this skill.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1584,1587,1590,1593],{"name":1585,"slug":1586,"type":16},"Documents","documents",{"name":1588,"slug":1589,"type":16},"DOCX","docx",{"name":1591,"slug":1592,"type":16},"Office","office",{"name":1594,"slug":1595,"type":16},"Templates","templates","2026-07-13T06:16:40.461868",{"slug":1598,"name":1598,"fn":1599,"description":1600,"org":1601,"tags":1602,"stars":1438,"repoUrl":1439,"updatedAt":1606},"minimax-music-gen","generate music and audio tracks","Use when user wants to generate music, songs, or audio tracks. Triggers on any request involving music creation, song writing, lyrics generation, audio production, or covers. Also triggers when user provides lyrics and wants them turned into a song, or describes a mood\u002Fscene and wants background music. Supports multilingual triggers — match equivalent phrases in any language. Do NOT use for music playback of existing files, music theory questions, or music recommendation without generation.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1603,1604,1605],{"name":1451,"slug":1452,"type":16},{"name":1454,"slug":1455,"type":16},{"name":1559,"slug":1560,"type":16},"2026-07-13T06:16:50.381758",{"slug":1608,"name":1608,"fn":1609,"description":1610,"org":1611,"tags":1612,"stars":1438,"repoUrl":1439,"updatedAt":1616},"minimax-music-playlist","generate personalized music playlists","Generate personalized music playlists by analyzing the user's music taste and generation feedback history. Triggers on any request involving playlist generation, music taste profiling, or personalized music recommendations. Supports multilingual triggers — match equivalent phrases in any language.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1613,1614,1615],{"name":1451,"slug":1452,"type":16},{"name":1454,"slug":1455,"type":16},{"name":1559,"slug":1560,"type":16},"2026-07-13T06:16:57.002997",84,{"items":1619,"total":1718},[1620,1636,1653,1665,1677,1692,1706],{"slug":1621,"name":1621,"fn":1622,"description":1623,"org":1624,"tags":1625,"stars":23,"repoUrl":24,"updatedAt":1635},"article2tasks","convert articles into Dida365 tasks","将技术周报（批量）或单篇文章整理为滴答清单待办事项，自动分类到已有清单并打标签，全程通过 MCP 写入，跨平台无需任何本地脚本。当用户提供周报内容、文章链接，或提及「周报」「文章汇总」「添加到滴答」时，使用此技能。",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1626,1629,1632],{"name":1627,"slug":1628,"type":16},"Content Creation","content-creation",{"name":1630,"slug":1631,"type":16},"MCP","mcp",{"name":1633,"slug":1634,"type":16},"Task Management","task-management","2026-08-18T03:49:38.751656",{"slug":1637,"name":1637,"fn":1638,"description":1639,"org":1640,"tags":1641,"stars":23,"repoUrl":24,"updatedAt":1652},"citation-verify","verify academic citation accuracy","当用户需要核验参考文献真实性、检查 BibTeX 条目是否有误、审查论文引用是否可靠、 排查 bibliography 中的错误条目、验证 DOI 与题录是否对得上、发现参考文献张冠李戴、 做投稿前引用体检或审稿引用抽查时使用。同义场景：参考文献核验、引用核查、 文献真伪鉴别、bib 文件检查、参考文献纠错、引用元数据比对、 \"帮我看看这些参考文献有没有问题\"\"这个 DOI 对得上吗\"\"有没有编造的引用\"。",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1642,1645,1648,1651],{"name":1643,"slug":1644,"type":16},"Code Analysis","code-analysis",{"name":1646,"slug":1647,"type":16},"Documentation","documentation",{"name":1649,"slug":1650,"type":16},"QA","qa",{"name":14,"slug":15,"type":16},"2026-08-21T03:59:17.615117",{"slug":1654,"name":1654,"fn":1655,"description":1656,"org":1657,"tags":1658,"stars":23,"repoUrl":24,"updatedAt":1664},"claim-check","verify research claims against evidence","当需要检查论文草稿中的事实性论断是否有证据支撑、做引用-论断对齐审计、 找出没有出处的陈述、核对文内引用是否真能支撑所在句子时加载使用； 通常由 evidence-loop 或审稿类流程调用，不直接面向用户。同义场景： 论断支撑检查、claim 支撑审计、无支撑断言排查、证据覆盖检查、 引用与论断对齐、\"这段话有没有文献撑\"\"哪些说法没有引用\"。",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1659,1662,1663],{"name":1660,"slug":1661,"type":16},"Audit","audit",{"name":1643,"slug":1644,"type":16},{"name":14,"slug":15,"type":16},"2026-08-21T03:59:02.154691",{"slug":1666,"name":1666,"fn":1667,"description":1668,"org":1669,"tags":1670,"stars":23,"repoUrl":24,"updatedAt":1676},"cn-literature","search and organize Chinese academic literature","当用户需要检索或整理中文文献（CNKI 知网、万方、维普、超星）、把中文数据库 导出的题录文件解析成统一 PaperDocument、或把中文文献与英文检索结果合并去重 时使用。同义场景：中文文献检索、知网导出题录解析、万方检索、Refworks\u002FEndNote 格式转换、\"帮我把这份 CNKI 导出的 txt 整理成文献表\"\"中文核心期刊上关于 X 有哪些研究\"。",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1671,1674,1675],{"name":1672,"slug":1673,"type":16},"Data Cleaning","data-cleaning",{"name":1585,"slug":1586,"type":16},{"name":14,"slug":15,"type":16},"2026-08-21T03:59:12.24404",{"slug":1678,"name":1678,"fn":1679,"description":1680,"org":1681,"tags":1682,"stars":23,"repoUrl":24,"updatedAt":1691},"cold-start-interview","initialize research profiles via interviews","当用户首次使用科研工作台、研究画像仍为空白，或用户主动说\"先做个访谈\"\"重新设置我的研究信息\"\"初始化画像\"\"cold start\"\"重新 interview\"时使用。本技能通过结构化访谈收集用户的研究领域、常用数据源、算力环境、写作语言与目标期刊、引用格式、团队协作规范、伦理合规要求，并把回答以散文形式写回插件根目录 CLAUDE.md 的研究画像部分。支持 quick（2 分钟 5 问）、full（完整 15 问）、--redo（推翻重谈）、--check（只检查画像完整度不提问）四种模式，支持中断后续谈。同义触发场景：新用户引导、首次配置、研究背景调查、填研究档案、更新个人研究信息、check 画像。",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1683,1684,1687,1690],{"name":1646,"slug":1647,"type":16},{"name":1685,"slug":1686,"type":16},"Onboarding","onboarding",{"name":1688,"slug":1689,"type":16},"Productivity","productivity",{"name":14,"slug":15,"type":16},"2026-08-21T03:59:58.579998",{"slug":1693,"name":1693,"fn":1694,"description":1695,"org":1696,"tags":1697,"stars":23,"repoUrl":24,"updatedAt":1705},"customize","customize research guardrails and settings","当用户想修改研究画像或共享守则（guardrails）时使用：换了研究领域、换了目标期刊、换了引用格式、换了算力环境、合规要求变化、想调整某条 guardrail 的严格程度。同义触发场景：改一下画像、更新我的研究信息、修改 CLAUDE.md、调整设置、换引用格式、customize、个性化配置、改规则、重新配置工作台。本技能是画像与守则的唯一维护入口：读取 CLAUDE.md、与用户逐项确认修改点、写回文件、并明确告知哪些 skill 的行为会因此变化。",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1698,1701,1704],{"name":1699,"slug":1700,"type":16},"Best Practices","best-practices",{"name":1702,"slug":1703,"type":16},"Configuration","configuration",{"name":14,"slug":15,"type":16},"2026-08-21T03:59:35.867596",{"slug":1707,"name":1707,"fn":1708,"description":1709,"org":1710,"tags":1711,"stars":23,"repoUrl":24,"updatedAt":1717},"dida365","manage Dida365 tasks and habits","Manage 滴答清单 (Dida365 China) tasks, lists, habits, focus records and countdowns through the official Dida365 MCP server at mcp.dida365.com. Use when the user asks to check, plan, create, update, complete or review tasks and habits on dida365.com, or asks about focus history and countdowns.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1712,1713,1716],{"name":1630,"slug":1631,"type":16},{"name":1714,"slug":1715,"type":16},"Scheduling","scheduling",{"name":1633,"slug":1634,"type":16},"2026-08-18T03:49:37.126385",36]