xgo-digest-tweets
通过 XGo (xgo.ing) 开放接口生成每日推文简报。适用场景:(1) 查看今日推文精华摘要,(2) 按列表分类浏览推文,(3) 获取关注者和推荐的每日精选,(4) 快速了解今天 Twitter 上发生了什么,(5) 生成推文日报/周报。触发短语:'每日简报', '推文简报', 'daily digest', 'tweet digest', '今日摘要', '今天推文总结', 'twitter summary', '推文精选', '每日精选', 'daily briefing', '推特日报', '今天的推特', '推文汇总', 'tweet roundup', '推特摘要', 'twitter daily', '今天有什么值得看的推文', 或任何与每日推文简报、推文摘要、推文精选相关的表述。
Author
Category
Content CreationInstall
Download and extract to your skills directory
Copy command and send to OpenClaw for auto-install:
每日推文简报 (Daily Tweet Digest)
通过 XGo (xgo.ing) 开放接口生成每日推文简报 — 智能筛选高价值内容,输出可读简报 + 杂志风 HTML + 信息图 + 完整版数据,一览今日精华。
完整 API 参数详情见 references/api_reference.md。
认证
所有请求需要 X-API-KEY 请求头。从环境变量 XGO_API_KEY 读取密钥。
注意: 在某些 shell 环境中 $XGO_API_KEY 可能无法正确展开,建议先检查变量值或直接使用硬编码:
# 方法 1: 直接使用变量值
curl -s "https://api.xgo.ing/openapi/v1/list/all" \
-H "X-API-KEY: xgo_xxxxxx..."
# 方法 2: 先验证变量存在
echo "${XGO_API_KEY:0:20}..."
curl -s "https://api.xgo.ing/openapi/v1/list/all" \
-H "X-API-KEY: ${XGO_API_KEY}"若 XGO_API_KEY 未设置,提示用户配置。
接口地址:https://api.xgo.ing
工作流概览
第一步: 并行拉取数据(5 请求)
第二步: 构建 author->list 映射
第三步: 去重与分类
第四步: 智能筛选与排序(Top 20)
第五步: 生成 4 种输出
5.1 可读简报 Markdown(Top 20)
5.2 完整版 Markdown(全部数据)
5.3 杂志风 HTML(Top 20)
5.4 信息图 PNG(Top 10)输出目录: contents/twitter-digest/YYYY-MM-DD/(项目根目录的相对路径,按日期子目录组织)
输出文件:
| 文件 | 内容 | 选取 |
|---|---|---|
digest.md | 可读简报,叙事式快速概览 | Top 20 |
digest-full.md | 完整版,所有分类全部推文详细数据 | 全部 |
digest.html | 杂志风 HTML,可浏览器打开/截图 | Top 20 |
digest.png | 信息图,关键词 + 核心推文 | Top 10 |
速率说明: 5 请求/次,远低于 PLUS 200 次/分限制。
第一步:并行拉取数据(5 个请求)
# 1. 获取所有列表(含成员信息,用于构建映射)
curl -s "https://api.xgo.ing/openapi/v1/list/all" \
-H "X-API-KEY: $XGO_API_KEY"
# 2. 关注者推文 - 第1页(按影响力排序,排除纯转推,近24小时)
curl -s -X POST https://api.xgo.ing/openapi/v1/tweet/list \
-H "Content-Type: application/json" \
-H "X-API-KEY: $XGO_API_KEY" \
-d '{"queryType":"following","timeRange":"LAST_24H","sortType":"influence","tweetType":"NO_RETWEET","currentPage":1,"pageSize":50}'
# 3. 关注者推文 - 第2页
curl -s -X POST https://api.xgo.ing/openapi/v1/tweet/list \
-H "Content-Type: application/json" \
-H "X-API-KEY: $XGO_API_KEY" \
-d '{"queryType":"following","timeRange":"LAST_24H","sortType":"influence","tweetType":"NO_RETWEET","currentPage":2,"pageSize":50}'
# 4. 推荐推文 - 第1页
curl -s -X POST https://api.xgo.ing/openapi/v1/tweet/list \
-H "Content-Type: application/json" \
-H "X-API-KEY: $XGO_API_KEY" \
-d '{"queryType":"recommendation","timeRange":"LAST_24H","sortType":"influence","tweetType":"NO_RETWEET","currentPage":1,"pageSize":50}'
# 5. 推荐推文 - 第2页
curl -s -X POST https://api.xgo.ing/openapi/v1/tweet/list \
-H "Content-Type: application/json" \
-H "X-API-KEY: $XGO_API_KEY" \
-d '{"queryType":"recommendation","timeRange":"LAST_24H","sortType":"influence","tweetType":"NO_RETWEET","currentPage":2,"pageSize":50}'并行执行所有 5 个请求。 必须显式传递 sortType: "influence" — 服务端默认值为 recent。
第二步:构建 author->list 映射
从 list/all 响应中构建映射表:
对每个 UserListDTO:
对每个 member (UserBrief):
mapping[member.userName] = listName一个用户可能属于多个列表,取第一个匹配的列表名(按列表 order 排序)。
第三步:去重与分类
去重
合并所有推文(请求 2-5),按推文 id 去重。同一推文在多个查询中仅保留一条。
分类规则
对每条推文,根据 author.userName 查映射表:
合并时记录来源(following/recommendation),同推文优先标记为 following。
第四步:智能筛选与排序
这一步从去重后的全部推文中,按重要性和读者迫切性选出 Top 20,不均衡分配到分类,纯按内容价值排序。
筛选维度与加权
对每条推文计算综合优先级分数,考虑以下维度:
1. 来源权重(最重要)
头部厂商官方账号 — 最高优先级,这些账号发布的新模型、新产品、新功能几乎必选:
OpenAI, OpenAIDevs, ChatGPTappAnthropicAI, claudeai, alexalbert__GoogleDeepMind, sundarpichaiAIatMeta, ylecun行业领袖与研究者 — 高优先级,他们的观点和判断有前瞻价值:
karpathy, sama, AndrewYNg, ylecun高优媒体/创作者 — 中高优先级,内容质量稳定:
ycombinator, a16z, LennysPodcast, GergelyOrosz, lexfridman, TheRundownAIvista8/dotey), HiTw93, xicilion, 张小珺,Latent Space, Founder ParkBuilder/独立开发者 — 中优先级,实践经验有参考价值:
levelsio, garrytan, pmarca, gregisenberg注意:上面列出的用户名是已知的参考示例。匹配时应同时检查 author.userName 和 author.name(显示名称可能包含公司/产品名)。国内厂商账号的 handle 可能不固定,优先通过 author.name 中包含的关键词(如 "DeepSeek", "Qwen", "Kimi", "智谱", "MiniMax")匹配。不在列表中的账号按默认权重处理。
2. 内容主题加权
以下关键词出现在推文文本中时提升优先级:
AI Coding(高加权): Claude Code, Codex, Cursor, Windsurf, Copilot, vibe coding, AI coding, agentic coding
新模型/新产品发布(高加权): launching, introducing, announcing, releasing, now available, 发布,上线,开源
方法论/深度实践(中加权): best practice, lesson learned, how I, architecture, framework, 实践,经验,方法论
3. 基础影响力
influenceScore 作为基础分,但不是唯一决定因素。一条来自 Anthropic 的 influenceScore=200 的产品发布,应排在一条无关账号的 influenceScore=2000 的热门段子前面。
排序逻辑
综合分 = influenceScore * 来源权重系数 * 主题加权系数参考权重系数:
主题加权:
同话题去重
多条推文讨论同一话题(如多人转发评论同一事件)时,保留综合分最高的一条,在描述中可提及其他来源的视角。
常见同话题场景:
AI 判断提示:在生成简报时,AI 应识别并合并同一话题的多条推文,避免重复占用头条位置。
内容质量人工判断
算法排序基于互动量和来源权重,但内容质量需要人工判断:
高互动但低价值的内容(可能排在前列但不应作为头条):
头条选择建议:
输出
排序后取:
第五步:生成输出
确保输出目录存在:
mkdir -p contents/twitter-digest/YYYY-MM-DD5.1 可读简报(digest.md)
这是给读者的主要阅读产物,像一篇短日报,用户应能在 2-3 分钟内读完并掌握当天最重要的推文动态。
使用用户输入的语言编写(用户用中文提问则中文输出,英文则英文)。
格式:
# Twitter 日报 YYYY-MM-DD
> 一句话总结今日推特圈最值得关注的事(基于 Top 3 头条内容提炼)。
---
## 头条
对 Top 1-3 最重要的推文,每条用 2-3 句话概括核心内容和为什么重要,嵌入 [原文链接]。如果是产品发布或重大新闻,可以多写几句提供背景。
## 值得关注
对 Top 4-10 的推文,每条用 1-2 句话概括,嵌入链接。按话题自然分组(不必按原始列表分类),相关推文可以串联在一段中。
## 快速浏览
对 Top 11-20 的推文,用简洁的列表格式:
- **@username**: 一句话概括 [链接](url)
---
*数据来源:XGo | 关注者 X 条 + 推荐 Y 条 | [完整版](digest-full.md)*写作要点:
5.2 完整版(digest-full.md)
保留详细输出格式,按分类组织全部推文数据。为每个分类生成 1-2 句话的 AI 摘要,概括该分类中的热点话题和关键信息(摘要应捕捉核心内容,不罗列每条推文):
## 每日推文简报 - 完整版 (YYYY-MM-DD, 共 N 条)
来源:关注者推文 X 条 + 推荐推文 Y 条,去重后 Z 条,分为 M 个分类。
---
### 分类名 (N 条)
> **摘要**: [AI生成的1-2句话摘要,概括该分类的核心热点]
#### 1. @username - DisplayName
- **影响力**: 85 | **互动**: 👍 446 🔁 134 💬 36 🔄 12 📑 8 👁 45K
- **内容**:
推文完整文本...
- **链接**: [查看原文](url)
...AI 摘要生成要点:
字段映射和完整性规则同原版:
text 完整输出不截断5.3 杂志风 HTML(digest.html)
生成一个自包含的 HTML 文件,可直接在浏览器中打开查看或截图分享。展示 Top 20 推文(Top 1-3 头条大卡片 + Top 4-20 紧凑列表)。
详细模板和设计规范见 references/html_template.md。
核心设计要素(详见 references/html_template.md 中的完整色彩和排版定义):
5.4 信息图(digest.png)
使用 image-gen 技能生成一张信息图,展示 Top 10 推文的核心信息。
详细提示词指南见 references/infographic_guide.md。
内容要素(详见 references/infographic_guide.md 中的提示词模板和设计规范):
生成方式:
infographic-prompt.txt(供用户或后续步骤使用)GOOGLE_API_KEY 已设置,调用 image-gen 技能生成:# 使用 skill 的脚本生成(如 image-gen 提供)
# 或手动调用 image-gen skill
/image-gen "{生成的提示词内容}" --ar 9:16 --provider google信息图使用 9:16 竖版比例(适合手机浏览和社交媒体分享)。
参数调整
根据用户输入调整:
timeRange: "WEEK"tweetType: "ALL"错误处理
重要: 始终先检查 response.success 再处理 response.data。部分错误返回 HTTP 200 但 success: false — 不要仅依赖 HTTP 状态码。
401: 检查 XGO_API_KEY 是否已设置且有效403: 开放接口需要 Plus 或 Pro 会员429: 频率限制 — 等待 10 秒后重试一次。若仍为 429,告知用户:"频率限制,请稍后重试。"(PLUS 200 次/分,PRO 600 次/分)success: false 且 code 非零:读取响应体中的 code 和 message,对照 api_reference 中的错误码处理data 为空或 totalSize: 0: 该时间范围内无推文,建议扩大 timeRangelist/all 返回空列表:所有推文归入 "其他" / "其他 (推荐)"image-gen 失败:重试一次,仍失败则跳过信息图并告知用户GOOGLE_API_KEY 未设置:跳过信息图生成,提示用户配置职责边界
本 skill 与 daily-content-curator 功能相近但定位不同:
如需跨源个性化阅读推荐,使用 daily-content-curator。
实现参考
本 skill 的工作流可通过以下方式实现:
方式一:命令行 + 脚本(推荐)
-
scripts/process-tweets.js - 处理原始数据,构建映射、去重、分类、计算综合分数-
scripts/generate-digest.js - 生成四种输出文件- 并行执行 5 个 curl 请求获取数据
- 构建 author->list 映射表
- 按 id 去重,保留 following 来源优先
- 计算综合分数:
influenceScore * 来源权重 * 主题加权- 排序取 Top 20/Top 10
- 生成 Markdown/HTML 输出
contents/twitter-digest/YYYY-MM-DD/
├── digest.md # 可读简报
├── digest-full.md # 完整版
├── digest.html # 杂志风 HTML
└── infographic-prompt.txt # 信息图提示词方式二:直接使用 API
如需更灵活的控制,可直接调用 XGo API 并在代码中实现筛选逻辑。参考 references/api_reference.md 获取完整的端点文档和 DTO 定义。
关键实现细节
去重逻辑:
id 作为唯一键source: "following"综合分数计算:
const sourceWeights = {
headline_vendor: 5, // 头部厂商
industry_leader: 3, // 行业领袖
premium_media: 2, // 高优媒体
builder: 1.5, // 独立开发者
default: 1
};
const topicWeights = {
ai_coding: 2, // AI Coding
new_release: 1.8, // 新发布
methodology: 1.3, // 方法论
default: 1
};
const score = influenceScore * sourceWeight * topicWeight;分类组织:
list/all 返回的列表名组织推文