bestblogs-weekly-curator
BestBlogs.dev 每周精选内容策展工作流。适用场景:(1) 从本周内容中精选 20 篇文章生成周刊,(2) 按模型/开发/产品/资讯分类策展,(3) 生成周刊中英文标题和推荐语,(4) 参考往期周刊风格生成新一期,(5) 筛选高分内容制作精选合集,(6) 基于文章原文生成高质量的新闻通讯。触发短语:'每周精选', '周刊策展', '每周内容策展', '生成周刊', '每周策展', '精选文章', '本周精选', '每周新闻通讯', '制作周刊', '选文章', '为周刊挑选文章', '策展', '生成推荐语', '新闻通讯摘要', '周刊推荐语', '撰写新闻通讯'
分类
内容创作安装
下载并解压到你的 skills 目录
复制命令,发送给 OpenClaw 自动安装:
BestBlogs 每周精选策展 (Weekly Curator)
从 BestBlogs.dev 本周内容中精选约 20 篇高质量文章,按 AI 细分类别(模型/开发/产品/资讯)组织,并基于文章原文生成高质量的中英文周刊标题和推荐语。
完整 API 参数详情见 references/api_reference.md。
认证
所有请求需要 X-API-KEY 请求头。从环境变量 BESTBLOGS_API_KEY 读取密钥:
-H "X-API-KEY: $BESTBLOGS_API_KEY"若 BESTBLOGS_API_KEY 未设置,提示用户配置。
接口地址:https://api.bestblogs.dev
进度清单
- [ ] 阶段一: 获取往期周刊作为参考
- [ ] 阶段二: 拉取本周候选内容
- [ ] 阶段三: 深度分析候选内容(调用详情接口)
- [ ] 阶段四: AI 筛选与推荐(输出 30-40 篇候选清单)⚠️ 需用户确认选文
- [ ] 阶段五: 生成周刊推荐语
- [ ] 5.1 获取入选文章原文(补充阶段三未获取的)
- [ ] 5.2 提取主题候选 + 收集用户输入 ⚠️ 一次性确认主题/动态/重点/想法
- [ ] 5.3 生成中英文标题和推荐语(参考往期风格)
- [ ] 5.4 输出周刊草稿 + 结构化 JSON阶段一:获取往期周刊参考
拉取最近 3 期已发布的周刊列表和详情,理解选文风格、分类比例和推荐语写法。
1.1 获取周刊列表
curl -s -X POST https://api.bestblogs.dev/openapi/v1/newsletter/list \
-H "Content-Type: application/json" \
-H "X-API-KEY: $BESTBLOGS_API_KEY" \
-d '{"currentPage":1,"pageSize":3,"userLanguage":"zh_CN"}'1.2 获取每期详情(并行 6 个请求)
分别获取中文和英文版本,供阶段五参考双语写作风格:
# 中文版
curl -s "https://api.bestblogs.dev/openapi/v1/newsletter/get?id={ISSUE_ID}&language=zh_CN" \
-H "X-API-KEY: $BESTBLOGS_API_KEY"
# 英文版
curl -s "https://api.bestblogs.dev/openapi/v1/newsletter/get?id={ISSUE_ID}&language=en_US" \
-H "X-API-KEY: $BESTBLOGS_API_KEY"从响应中保存 zhTitle、enTitle、zhSummary、enSummary 字段,供阶段五生成推荐语时参考。
1.3 分析往期模式
从 3 期详情中提取:
aiCategory 分布比例(MODELS / DEV / PRODUCT / NEWS 各约 5 篇,DEV 有时会多 2-3 篇)sort 字段的排序规则阶段二:拉取本周候选内容
通过两组查询覆盖候选范围,预计获取 200-400 条内容。
查询策略(6 个并行请求)
第一组:AI 分类内容(88 分以上) — 分资源类型查询:
# 2.1 AI 文章
curl -s -X POST https://api.bestblogs.dev/openapi/v1/resource/list \
-H "Content-Type: application/json" \
-H "X-API-KEY: $BESTBLOGS_API_KEY" \
-d '{"currentPage":1,"pageSize":100,"timeFilter":"1w","sortType":"score_desc","category":"Artificial_Intelligence","type":"ARTICLE","userLanguage":"zh_CN"}'
# 2.2 AI 播客
curl -s -X POST https://api.bestblogs.dev/openapi/v1/resource/list \
-H "Content-Type: application/json" \
-H "X-API-KEY: $BESTBLOGS_API_KEY" \
-d '{"currentPage":1,"pageSize":100,"timeFilter":"1w","sortType":"score_desc","category":"Artificial_Intelligence","type":"PODCAST","userLanguage":"zh_CN"}'
# 2.3 AI 视频
curl -s -X POST https://api.bestblogs.dev/openapi/v1/resource/list \
-H "Content-Type: application/json" \
-H "X-API-KEY: $BESTBLOGS_API_KEY" \
-d '{"currentPage":1,"pageSize":100,"timeFilter":"1w","sortType":"score_desc","category":"Artificial_Intelligence","type":"VIDEO","userLanguage":"zh_CN"}'第二组:全分类高分内容(90 分以上,前 100 条) — 捕捉非 AI 分类的优质内容:
# 2.4 全分类高分文章
curl -s -X POST https://api.bestblogs.dev/openapi/v1/resource/list \
-H "Content-Type: application/json" \
-H "X-API-KEY: $BESTBLOGS_API_KEY" \
-d '{"currentPage":1,"pageSize":100,"timeFilter":"1w","sortType":"score_desc","type":"ARTICLE","userLanguage":"zh_CN"}'
# 2.5 全分类高分播客
curl -s -X POST https://api.bestblogs.dev/openapi/v1/resource/list \
-H "Content-Type: application/json" \
-H "X-API-KEY: $BESTBLOGS_API_KEY" \
-d '{"currentPage":1,"pageSize":100,"timeFilter":"1w","sortType":"score_desc","type":"PODCAST","userLanguage":"zh_CN"}'
# 2.6 全分类高分视频
curl -s -X POST https://api.bestblogs.dev/openapi/v1/resource/list \
-H "Content-Type: application/json" \
-H "X-API-KEY: $BESTBLOGS_API_KEY" \
-d '{"currentPage":1,"pageSize":100,"timeFilter":"1w","sortType":"score_desc","type":"VIDEO","userLanguage":"zh_CN"}'如果第一组某个类型的 totalCount > 100,继续翻页获取(currentPage: 2)直到全部拉取。
客户端过滤与合并
score >= 88,第二组保留 score >= 90id 去重(两组可能有重叠)aiCategory 分布、分数范围阶段三:深度分析候选内容
对阶段二筛选后的候选池(预计 80-150 条)进行深度分析。通过调用文章详情接口获取更丰富的信息,辅助后续的精选决策。
3.1 初步排序
先按 score 降序排列,取每个 aiCategory 的 Top 15(共约 60 条)进入深度分析。如果某个分类不足 15 条,则全部进入。
3.2 调用文章详情接口(分批并行)
对进入深度分析的文章,调用 markdown 接口获取正文内容:
curl -s "https://api.bestblogs.dev/openapi/v1/resource/markdown?id={RESOURCE_ID}" \
-H "X-API-KEY: $BESTBLOGS_API_KEY"每批 5 个并行请求,避免触发频率限制。如果 markdown 返回 null(无正文),则依赖列表接口已有的 summary 和 mainPoints 进行判断。
3.3 深度评估维度
对每篇内容从 3 个维度评分(结合 markdown 正文 + 列表接口元数据):
- 优质信号:有数据支撑、有代码示例、有独到见解、有实践经验
- 低质信号:纯资讯搬运、内容空洞、标题党、过度营销
- 高:头部厂商重大发布、突破性研究、行业政策变化
- 中:工具更新、实践分享、趋势分析
- 低:日常动态、边缘话题
- 高:可直接指导工作实践、影响技术决策
- 中:值得了解的行业信息
- 低:受众面窄、过于学术或过于通俗
3.4 标记来源权威性
在评估过程中标记以下高权威来源:
authors 字段,识别知名人物priority 为 HIGH 或 MEDIUM 的来源阶段四:AI 筛选与推荐
基于阶段三的深度分析,从候选池中推荐 30-40 篇内容,按 aiCategory 分配到 4 个栏目。
分类栏目与配额
| 栏目 | aiCategory | 默认配额 | 说明 |
|---|---|---|---|
| 模型与研究 | MODELS | 5 篇 (4-6) | 前沿模型发布、基准测试、论文解读 |
| 开发与工具 | DEV | 5 篇 (4-7) | 框架更新、编程教程、开发实践 |
| 产品与设计 | PRODUCT | 5 篇 (4-6) | AI 产品分析、用户体验、商业应用 |
| 资讯与报告 | NEWS | 5 篇 (4-6) | 行业动态、融资新闻、趋势分析 |
每个分类默认 5 篇,允许上下浮动 1-2 篇。4 个分类都应有内容,仅在某分类本周确实无足够优质内容时才允许缺席(极少数情况)。最终总数控制在 20 篇左右。
推荐数量
为给用户充分选择空间,候选清单应包含 30-40 篇内容(每个分类 8-10 篇),用户从中选择最终的 20 篇。这样即使去除部分文章后仍有充足的备选。
筛选标准
按以下优先级排序候选内容:
- 优先选择来源于
priority 为 HIGH 和 MEDIUM 的订阅源- 优先选择来自头部厂商的内容:OpenAI、Anthropic、Google/DeepMind、Meta、阿里巴巴/通义、腾讯、月之暗面/Kimi、智谱/GLM、Minimax、百度/文心、字节跳动/豆包
- 优先选择业界领袖人物(如 Sam Altman、Dario Amodei、Andrej Karpathy 等)的内容
-
score 评分(高分优先)-
qualified 是否精选(精选内容优先)-
readCount 阅读量(高阅读量说明内容有吸引力)- 深度分析结果(阶段三的质量、重要性、相关性评估)
sourceName 最多入选 3 篇,避免单一来源过度集中输出候选清单
按栏目分组展示候选清单,每篇必须包含推荐理由:
## 候选清单(共 N 篇,建议最终选择约 20 篇)
### 模型与研究 (MODELS) — N 篇
| # | 分数 | 精选 | 阅读量 | 标题 | 来源 | 优先级 | 类型 | 推荐理由 |
|---|------|------|--------|------|------|--------|------|----------|
| 1 | 96 | Y | 1.2K | 文章标题 | 来源名称 | HIGH | 文章 | OpenAI 官方发布,重大模型更新,读者必读 |
| 2 | 94 | Y | 856 | 文章标题 | 来源名称 | MEDIUM | 播客 | 深度技术解析,对开发者实践价值高 |
### 开发与工具 (DEV) — N 篇
...
### 产品与设计 (PRODUCT) — N 篇
...
### 资讯与报告 (NEWS) — N 篇
...推荐理由应从以下角度阐述(1-2 句话):
⚠️ 等待用户确认: 展示候选清单后暂停,等待用户:
阶段五:生成周刊推荐语
用户确认选文后,深度阅读入选文章原文,结合用户输入和往期风格,生成高质量的中英文标题和推荐语。
详细的写作风格规范、emoji 速查和完整示例见 references/newsletter_writing_guide.md。
5.1 获取入选文章原文
对用户确认的 20 篇文章,获取 markdown 原文内容。阶段三可能已获取了部分文章的原文,只需补充未获取的:
curl -s "https://api.bestblogs.dev/openapi/v1/resource/markdown?id={RESOURCE_ID}" \
-H "X-API-KEY: $BESTBLOGS_API_KEY"每批 5 个并行请求。markdown 返回 null 的文章,依赖列表接口的 summary 和 mainPoints。
阅读每篇原文时重点关注:
5.2 提取主题候选 + 收集用户输入
基于 20 篇文章的原文内容提炼主题候选,同时收集用户上下文。合并为一次交互,避免多轮追问:
阅读完本期 20 篇文章后,我提炼了以下主题候选:
1. **关键词A(英文)**: 理由 — 哪些文章支撑这个主题
2. **关键词B(英文)**: 理由
3. **关键词C(英文)**: 理由
4. ...
我推荐: **关键词X** — 因为它能串联本期多数内容,同时提出了引人思考的问题。
在生成推荐语之前,还想了解:
1. 你倾向哪个主题?或者有自己的想法?
2. BestBlogs.dev 最近有什么更新或动态想提到吗?
3. 有没有特别想重点强调的文章?
4. 本周有什么个人观察或思考想融入推荐语?主题提取思路:
如果用户没有特别想法,可以基于文章内容自行提炼,但主题必须等用户确认后再继续。
等待用户确认后再进入 5.3。
5.3 生成中英文标题和推荐语
参考阶段一获取的最近 3 期周刊的 zhTitle/enTitle 和 zhSummary/enSummary,学习:
标题格式
BestBlogs 周刊第 N 期: {主题关键词}BestBlogs Weekly Issue #N: {Theme Keyword}推荐语生成要求
基于文章原文(而非仅摘要)撰写,确保信息准确、有深度:
- 覆盖 4 个分类的核心内容
- 用户指定的重点文章优先展开
- 相关文章可合并为一个亮点
- 包含具体数据、关键洞察
- 句式多样,避免千篇一律
语言质量要求
Claude Opus 4.5 发布5.4 确定期数并输出
从阶段一获取的最新一期 id(如 issue55)推算新期数:issue56。
输出周刊草稿
# BestBlogs.dev 精选文章 第 N 期
> {中文推荐语全文}
---
## 模型与研究
### 1. {文章标题}
- **来源**: {sourceName} | **评分**: {score} | **类型**: {resourceTypeDesc}
- **摘要**: {oneSentenceSummary}
- **推荐理由**: {1 句话说明为什么入选本期}
- **链接**: {readUrl 或 url}
### 2. {文章标题}
...
---
## 开发与工具
...
## 产品与设计
...
## 资讯与报告
...输出结构化数据
{
"zhTitle": "BestBlogs 周刊第 N 期:{关键词}",
"enTitle": "BestBlogs Weekly Issue #N: {Keyword}",
"zhSummary": "中文推荐语全文",
"enSummary": "English summary full text",
"articles": [
{
"id": "RAW_xxx",
"title": "文章标题",
"aiCategory": "MODELS",
"sort": 1
}
]
}sort 值规则:按 MODELS → DEV → PRODUCT → NEWS 顺序,从 1 开始连续编号。
参数调整
| 用户意图 | 调整方式 |
|---|---|
| "只选 15 篇" | 减少每个分类的配额,总数调为 15 |
| "多选一些开发类" | DEV 配额增加到 8-10,其他减少 |
| "加入推文" | 额外查询 tweet/list 接口,候选池增加推文 |
| "分数要求高一些" | 第一组阈值提高到 90,第二组提高到 92 |
| "包含上周内容" | timeFilter 改为 3w 或手动指定日期范围 |
| "英文内容为主" | 添加 language: "en_US" 过滤 |
错误处理
重要: 始终先检查 response.success 再处理 response.data。
| 错误 | 处理 |
|---|---|
401 (AUTH_001/002) | 检查 BESTBLOGS_API_KEY 是否设置且有效 |
403 (AUTH_003) | API Key 权限不足,提示用户 |
400 (PARAM_001) | 检查参数值是否匹配枚举 |
500 (SYS_ERROR) | 重试一次,仍失败则告知用户 |