xgo-digest-tweets

通过 XGo (xgo.ing) 开放接口生成每日推文简报。适用场景:(1) 查看今日推文精华摘要,(2) 按列表分类浏览推文,(3) 获取关注者和推荐的每日精选,(4) 快速了解今天 Twitter 上发生了什么,(5) 生成推文日报/周报。触发短语:'每日简报', '推文简报', 'daily digest', 'tweet digest', '今日摘要', '今天推文总结', 'twitter summary', '推文精选', '每日精选', 'daily briefing', '推特日报', '今天的推特', '推文汇总', 'tweet roundup', '推特摘要', 'twitter daily', '今天有什么值得看的推文', 或任何与每日推文简报、推文摘要、推文精选相关的表述。

安装

热度:5

下载并解压到你的 skills 目录

复制命令,发送给 OpenClaw 自动安装:

下载并安装这个技能 https://openskills.cc/api/download?slug=ginobefun-skills-xgo-digest-tweets&locale=zh&source=copy
name:xgo-digest-tweetsdescription:"通过 XGo (xgo.ing) 开放接口生成每日推文简报。适用场景:(1) 查看今日推文精华摘要,(2) 按列表分类浏览推文,(3) 获取关注者和推荐的每日精选,(4) 快速了解今天 Twitter 上发生了什么,(5) 生成推文日报/周报。触发短语:'每日简报', '推文简报', 'daily digest', 'tweet digest', '今日摘要', '今天推文总结', 'twitter summary', '推文精选', '每日精选', 'daily briefing', '推特日报', '今天的推特', '推文汇总', 'tweet roundup', '推特摘要', 'twitter daily', '今天有什么值得看的推文', 或任何与每日推文简报、推文摘要、推文精选相关的表述。"

每日推文简报 (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/recommendation),同推文优先标记为 following。


    第四步:智能筛选与排序

    这一步从去重后的全部推文中,按重要性和读者迫切性选出 Top 20,不均衡分配到分类,纯按内容价值排序。

    筛选维度与加权

    对每条推文计算综合优先级分数,考虑以下维度:

    1. 来源权重(最重要)

    头部厂商官方账号 — 最高优先级,这些账号发布的新模型、新产品、新功能几乎必选:

  • OpenAI 系:OpenAI, OpenAIDevs, ChatGPTapp

  • Anthropic 系:AnthropicAI, claudeai, alexalbert__

  • Google 系:GoogleDeepMind, sundarpichai

  • 国内头部:DeepSeek, 阿里通义 Qwen, 月之暗面 Kimi, 智谱 GLM, MiniMax

  • Meta: AIatMeta, ylecun
  • 行业领袖与研究者 — 高优先级,他们的观点和判断有前瞻价值:

  • karpathy, sama, AndrewYNg, ylecun
  • 高优媒体/创作者 — 中高优先级,内容质量稳定:

  • 英文:ycombinator, a16z, LennysPodcast, GergelyOrosz, lexfridman, TheRundownAI

  • 中文:宝玉 (vista8/dotey), HiTw93, xicilion, 张小珺,Latent Space, Founder Park
  • Builder/独立开发者 — 中优先级,实践经验有参考价值:

  • levelsio, garrytan, pmarca, gregisenberg
  • 注意:上面列出的用户名是已知的参考示例。匹配时应同时检查 author.userNameauthor.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 * 来源权重系数 * 主题加权系数

    参考权重系数:

  • 头部厂商官方:5x

  • 行业领袖:3x

  • 高优媒体:2x

  • Builder/独立开发者: 1.5x

  • 其他:1x
  • 主题加权:

  • AI Coding 相关:2x

  • 新发布/新产品:1.8x

  • 方法论/实践:1.3x

  • 其他:1x
  • 同话题去重

    多条推文讨论同一话题(如多人转发评论同一事件)时,保留综合分最高的一条,在描述中可提及其他来源的视角。

    常见同话题场景

  • 同一产品发布,多个账号转发评论 → 保留官方账号或最权威来源

  • 同一新闻事件,多个媒体报导 → 保留影响力最高或最详细的一条

  • 同一 meme/梗图被广泛传播 → 保留原始发布者或互动最高的一条
  • AI 判断提示:在生成简报时,AI 应识别并合并同一话题的多条推文,避免重复占用头条位置。

    内容质量人工判断

    算法排序基于互动量和来源权重,但内容质量需要人工判断

    高互动但低价值的内容(可能排在前列但不应作为头条):

  • 调侃/段子性质的对比推文(如 "Chipotle 机器人免费 vs Claude Code")

  • 情绪煽动性内容(如 "SHOCKING: AI 变 evil")

  • 纯娱乐性质的 viral 内容
  • 头条选择建议

  • 优先选择产品发布、技术突破、重要观点等实质性内容

  • 对于调侃类高互动推文,可放入"值得关注"或"快速浏览"部分

  • 在生成简报时,AI 应识别内容类型并调整排序
  • 输出

    排序后取:

  • Top 20: 用于可读简报和杂志风 HTML

  • Top 10: 用于信息图(从 Top 20 中取前 10)

  • 全部: 用于完整版(按原分类组织)

  • 第五步:生成输出

    确保输出目录存在:

    mkdir -p contents/twitter-digest/YYYY-MM-DD

    5.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 摘要生成要点:

  • 分析该分类下所有推文的共同主题

  • 提取 1-2 个最关键的趋势或事件

  • 用简洁的语言概括,不罗列具体推文

  • 示例:"该分类主要讨论 Claude 的最新功能发布,包括 100万token 上下文窗口开放和多个实际应用案例分享。"
  • 字段映射和完整性规则同原版:

  • text 完整输出不截断

  • 互动指标为 0 或 null 时省略

  • 大数字用 K/M 格式化

  • 分类按推文总数降序排列

  • 空分类不输出
  • 5.3 杂志风 HTML(digest.html)

    生成一个自包含的 HTML 文件,可直接在浏览器中打开查看或截图分享。展示 Top 20 推文(Top 1-3 头条大卡片 + Top 4-20 紧凑列表)。

    详细模板和设计规范见 references/html_template.md

    核心设计要素(详见 references/html_template.md 中的完整色彩和排版定义):

  • 风格: 现代主义杂志美学(Monocle / Kinfolk),克制精准、大量留白、纸质噪点质感

  • 品牌: 页头和页脚体现 XGo (xgo.ing) 品牌,作为数据来源标识

  • 布局: 头条区域(Top 1-3 大卡片)+ 列表区域(Top 4-20 紧凑卡片)+ 关键词标签

  • 内容: 每条推文显示作者、一句话概括、影响力分数、关键互动指标、原文链接

  • 语言: 标题、section label、页脚等界面文字使用中文,符合用户阅读习惯
  • 5.4 信息图(digest.png)

    使用 image-gen 技能生成一张信息图,展示 Top 10 推文的核心信息。

    详细提示词指南见 references/infographic_guide.md

    内容要素(详见 references/infographic_guide.md 中的提示词模板和设计规范):

  • 日期标题

  • Top 10 推文:每条显示作者名 + 一句话核心观点 + 影响力分数

  • 各分类的关键词标签
  • 生成方式:

  • 先生成信息图提示词文件 infographic-prompt.txt(供用户或后续步骤使用)

  • GOOGLE_API_KEY 已设置,调用 image-gen 技能生成:
  • # 使用 skill 的脚本生成(如 image-gen 提供)
    # 或手动调用 image-gen skill
    /image-gen "{生成的提示词内容}" --ar 9:16 --provider google

  • 若 API Key 未设置,跳过生成并提示用户手动调用
  • 信息图使用 9:16 竖版比例(适合手机浏览和社交媒体分享)。


    参数调整

    根据用户输入调整:

  • "今日简报" -> 默认参数(LAST_24H)

  • "本周简报" -> timeRange: "WEEK"

  • "Top 10" / "Top 30" -> 调整可读简报的选取数量

  • "只看 AI 分类" -> 仅输出 AI 分类的推文

  • "包括转推" -> tweetType: "ALL"

  • "只要简报" / "不要图片" -> 跳过 HTML 和信息图生成

  • "详细模式" -> 仅输出完整版
  • 错误处理

    重要: 始终先检查 response.success 再处理 response.data。部分错误返回 HTTP 200 但 success: false — 不要仅依赖 HTTP 状态码。

  • 401: 检查 XGO_API_KEY 是否已设置且有效

  • 403: 开放接口需要 Plus 或 Pro 会员

  • 429: 频率限制 — 等待 10 秒后重试一次。若仍为 429,告知用户:"频率限制,请稍后重试。"(PLUS 200 次/分,PRO 600 次/分)

  • success: falsecode 非零:读取响应体中的 codemessage,对照 api_reference 中的错误码处理

  • data 为空或 totalSize: 0: 该时间范围内无推文,建议扩大 timeRange

  • list/all 返回空列表:所有推文归入 "其他" / "其他 (推荐)"

  • image-gen 失败:重试一次,仍失败则跳过信息图并告知用户

  • GOOGLE_API_KEY 未设置:跳过信息图生成,提示用户配置

  • 职责边界

    本 skill 与 daily-content-curator 功能相近但定位不同:

  • xgo-digest-tweets: 专注 Twitter 推文,生成详细摘要(含翻译、分类、关键词),适合了解 Twitter 动态全貌

  • daily-content-curator: 跨源(BestBlogs + XGo)个人阅读清单,基于兴趣打分筛选,适合决定"今天读什么"
  • 如需跨源个性化阅读推荐,使用 daily-content-curator


    实现参考

    本 skill 的工作流可通过以下方式实现:

    方式一:命令行 + 脚本(推荐)

  • 创建数据处理脚本(Node.js/Python):

  • - 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 返回的列表名组织推文

  • 未匹配到列表的推文归入 "其他"(following 来源)或 "其他 (推荐)"

  • 完整版按分类输出,简报不按分类组织