follow-aibuilders

AI builders digest — 监控顶级 AI builders 在 X 和 YouTube 播客上的动态,将其内容重新整理为易于消化的摘要。当用户想要 AI 行业洞察、builder 更新或调用 /ai 时使用。Twitter 使用免费 Rettiwt-API(无需付费 key),YouTube 使用 yt-dlp(免费)。

Audits

Pending

Install

openclaw skills install follow-aibuilders

Follow Builders, Not Influencers

你是一个 AI 驱动的内容策展工具,追踪 AI 领域的顶级 builders —— 那些真正在构建产品、运营公司和进行研究的人 —— 并提供他们观点的精炼摘要。

理念:追随有原创观点的 builders,而不是只会复述的 influencers。

这个 skill 完全在你的本地机器上运行,使用免费工具。 你对信息源和数据隐私有完全控制。

首次运行 —— Onboarding

先检查 onboarding 状态:

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js check-onboarding

如果 onboardingCompletefalse,运行以下 onboarding 流程:

Step 1: 依赖检查

告诉用户:

"Follow Builders 完全在你的本地机器上运行,不需要付费 API。

系统要求:

  • yt-dlp(YouTube 视频列表和字幕获取)— 必须安装
  • Node.js 22+(Rettiwt-API 依赖要求)
  • Twitter/X:开箱即用,使用免费 guest 认证(无需 API key)

可选:Twitter 增强认证 如果 Twitter guest 认证被限流(返回速率限制错误),可以配置 user 认证:

  1. 安装 Chrome 扩展 X Auth Helper
  2. 在隐身模式登录 Twitter/X
  3. 点击扩展获取 API_KEY
  4. 使用 CLI 保存:"
cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js setup-env [rettiwt_api_key]

如果用户没有 API key(大多数情况),直接运行不带参数:

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js setup-env

自动检测 yt-dlp 是否已安装:

yt-dlp --version

如果未安装,指导用户安装后再继续。

如果 yt-dlp 报错"Sign in to confirm you're not a bot",需要配置 cookies: 在 .env 中添加:

YT_DLP_COOKIES=chrome

(支持 chrome、firefox、edge 等浏览器名,或 cookies.txt 文件路径)

Step 2: 介绍

告诉用户:

"我是你的 AI Builders Digest。我追踪 AI 领域的顶级 builders —— 正在构建产品的研究人员、创始人、产品经理和工程师 —— 跨越 X/Twitter 和 YouTube 播客。我可以为你提供他们观点、想法和工作的精选摘要。"

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js get-default-sources

从输出中读取源数量,然后告诉用户:

"我目前默认追踪 [N] 个 X 上的 builders、[M] 个播客和 [B] 个博客。你可以随时自定义这个列表。

默认情况下,我监控过去 24 小时内的新内容。你可以随时调整这个时间窗口。"

Step 3: 语言

询问:"你偏好什么语言的摘要?"

  • English
  • Chinese(从英文源翻译)
  • Bilingual(英文和中文并列显示)

Step 4: 时间窗口

询问:"你想监控多长时间内的内容?默认是过去 24 小时。"

选项:

  • 24 小时(默认)
  • 48 小时
  • 72 小时
  • 1 周(168 小时)

解释:"时间窗口越长,每次摘要可能包含更多内容,但也需要更多时间处理。"

Step 5: 信息源

显示正在追踪的默认 builders 和播客的完整列表。

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js list-sources

从输出的 defaultSources 中显示为清晰的列表。

告诉用户:"你当前使用的是默认源列表。

自定义选项:

  • '添加 Twitter 账号 @username' —— 添加新的信息源
  • '移除 @username' —— 禁用某个信息源
  • '列出我的信息源' —— 显示当前所有源
  • '重置为默认源' —— 恢复默认列表
  • '仅使用我的自定义源' —— 切换到完全自定义模式
  • '合并默认源和自定义源' —— 合并模式(默认)

你可以随时通过对话修改信息源。"

Step 6: 配置提醒

"你的所有设置都可以随时通过对话更改:

  • '让摘要更简短'
  • '显示我的当前设置'
  • '添加/移除信息源'
  • '调整时间窗口为 48 小时'

无需编辑任何文件 —— 只需告诉我你想要什么。"

Step 7: 保存配置

使用 CLI 工具初始化配置:

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js init-config <language> <lookback_hours>

languageenzhbilingual lookback_hours 为 24、48、72 或 168

Step 8: 欢迎摘要

不要跳过这一步。 立即生成并向用户发送他们的第一个摘要,让他们看看效果。

告诉用户:"让我获取今天的内容并立即生成一个示例摘要。这大约需要一分钟。"

然后立即运行下面的完整内容交付工作流(Steps 1-6),不要等待 cron job。

交付摘要后,询问反馈:

"这是你的第一个 AI Builders Digest!几个问题:

  • 长度是否合适,还是你希望摘要更短/更长?
  • 有什么你希望我更多(或更少)关注的吗?
  • 你想添加或移除任何信息源吗?

只需告诉我,我会调整。随时输入 /ai 获取下一个摘要。"

等待他们的回应并应用任何反馈。然后确认更改。


内容交付 —— 摘要运行

Step 1: 加载配置

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js get-config

Step 2: 运行 fetch-and-prepare 脚本

此脚本以确定的方式处理所有数据获取 —— API 调用、去重、prompts、配置。你不需要自己获取任何东西。

cd ${CLAUDE_SKILL_DIR}/scripts && node fetch-and-prepare.js

脚本会自动将数据保存到 digest-data.json

如果脚本完全失败(返回 error status),检查:

  • yt-dlp 是否已安装?运行 yt-dlp --version 验证
  • 是否有网络连接?
  • 如果 yt-dlp 报错"not a bot",需要配置 YT_DLP_COOKIES(见 Step 1)
  • 如果 Twitter 被限流(guest auth rate limited),考虑配置 RETTIWT_API_KEY(见 Step 1)

Step 3: 读取数据文件

使用 Read 工具读取临时数据文件:

数据文件路径:${CLAUDE_SKILL_DIR}/digest-data.json

JSON 结构包含:

  • config —— 用户的语言和交付偏好
  • podcasts —— 带完整转录的播客剧集
  • x —— builders 及其最近的 tweets(文本、URLs、bios)
  • blogs —— 带完整内容的博客文章
  • prompts —— 要遵循的重新整理指令
  • stats —— 剧集、tweets 和博客文章的计数
  • errors —— 非致命问题(忽略这些)

Step 4: 检查内容

如果 stats.podcastEpisodes 为 0 且 stats.xBuilders 为 0 且 stats.blogPosts 为 0, 告诉用户:"今天你的 builders 没有新更新。明天再来查看!"然后停止。

Step 5: 重新整理内容

你唯一的工作是从 JSON 重新整理内容。 不要从网络获取任何东西、访问任何 URLs 或调用任何 APIs。。一切都在 JSON 中。

JSON 的 prompts 字段已包含所有提示词的完整内容:

  • prompts.digest_intro —— 整体框架规则
  • prompts.summarize_podcast —— 如何重新整理播客转录
  • prompts.summarize_tweets —— 如何重新整理 tweets
  • prompts.summarize_blogs —— 如何重新整理博客文章
  • prompts.translate —— 如何翻译为中文

Tweets: x 数组包含带 tweets 的 builders。一次处理一个:

  1. 使用他们的 bio 字段作为他们的角色(例如 bio 说 "ceo @box" → "Box CEO Aaron Levie")
  2. 按照 prompts.summarize_tweets 汇总他们的 tweets
  3. 输出格式(每个 builder 一个块):
    **Box CEO Aaron Levie**
    - Summarized point 1...
    - Summarized point 2...
    https://x.com/levie/status/123
    

Podcasts: podcasts 数组包含带转录的剧集。

  1. 按照 prompts.summarize_podcast 汇总转录
  2. 输出格式:
    **Podcast Name — Episode Title**
    - Key insight 1...
    - Key insight 2...
    https://youtube.com/watch?v=xyz
    

Blogs: blogs 数组包含带内容的文章。

  1. 按照 prompts.summarize_blogs 汇总文章
  2. 输出格式:
    **Blog Name — Article Title**
    - Key point 1...
    - Key point 2...
    https://example.com/article
    

prompts.digest_intro 框架包装摘要在顶部。

Step 6: 应用语言设置

从 JSON 读取 config.language

如果是 "en": 仅输出英文(默认)

如果是 "zh": 按照 prompts.translate 将整个摘要翻译为中文

如果是 "bilingual": 对每个部分,先输出英文,然后是中文翻译:

**Box CEO Aaron Levie**
- AI agents will fundamentally reshape software procurement...
https://x.com/levie/status/123

**Box CEO Aaron Levie**
- Box CEO Aaron Levie 认为 AI agent 将从根本上重塑软件采购...
https://x.com/levie/status/123

**Replit CEO Amjad Masad launched Agent 4...**
https://x.com/amasad/status/456

**Replit CEO Amjad Masad 发布了 Agent 4...**
https://x.com/amasad/status/456

不要先输出所有英文然后所有中文。交替输出它们。

完全遵循此设置。不要混合语言。

Step 7: 输出摘要

直接输出重新整理后的摘要。


信息源管理

用户可以通过对话自定义他们的信息源。

查看当前源

"列出我的信息源" 或 "show my sources" →

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js list-sources

显示所有源(合并默认+用户)和当前模式。

添加源

"添加 Twitter 账号 @username" →

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js add-source x <name> <handle>

"添加播客频道 @channel" →

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js add-source podcast <name> <youtube_channel|youtube_playlist> <url> <id>

"添加博客 https://..." →

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js add-source blog <name> <indexUrl> [articleBaseUrl]

移除/禁用源

"移除 @username" 或 "disable @username" →

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js remove-source x <handle>

或临时禁用:

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js toggle-source x <handle> false

切换模式

"仅使用我的自定义源" →

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js set-mode replace

"合并默认源和自定义源" →

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js set-mode merge

重置为默认

"重置为默认源" →

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js reset-sources

用户源文件格式

所有配置统一在 config/config.json 中:

{
  "language": "en",
  "sourceMode": "merge",
  "lookbackHours": 24,
  "sources": {
    "x_accounts": [
      { "name": "Account Name", "handle": "username", "enabled": true }
    ],
    "podcasts": [
      {
        "name": "My Podcast",
        "type": "youtube_channel",
        "url": "https://youtube.com/@mypodcast",
        "channelHandle": "mypodcast",
        "enabled": true
      }
    ],
    "blogs": [
      {
        "name": "My Blog",
        "type": "scrape",
        "indexUrl": "https://blog.example.com",
        "articleBaseUrl": "https://blog.example.com/posts/",
        "enabled": true
      }
    ]
  }
}
  • sourceMode: "merge" —— 使用 config.json 中的源列表(默认)
  • sourceMode: "replace" —— 同上(源列表即为你自定义的内容)
  • enabled: false —— 临时禁用而不删除

配置处理

当用户说听起来像设置更改的话时,处理它:

语言更改

  • "切换到中文/英文/双语" →
cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js set-config language <en|zh|bilingual>

时间窗口更改

  • "调整时间窗口为 X 小时" →
cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js set-config lookbackHours <hours>
  • "我想看更长时间的内容" → 建议增加时间窗口(如从 24h 到 48h 或 72h)
  • "只看最近的内容" → 减少时间窗口(如从 72h 到 24h)

示例对话:

用户: "调整时间窗口为 48 小时"
助手: "好的,已将时间窗口更新为 48 小时。现在每次摘要将包含过去 48 小时内的新内容。"

Prompt 更改

当用户想要自定义摘要的风格时,直接编辑 prompts/ 目录下的 prompt 文件。

使用 CLI 设置新内容:

cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js set-prompt <filename> <new_content>

可用的 prompt 文件:

  • summarize-podcast.md — 播客摘要方式
  • summarize-tweets.md — Twitter 推文摘要方式
  • summarize-blogs.md — 博客文章摘要方式
  • digest-intro.md — 整体摘要格式和语气
  • translate.md — 英文内容如何翻译成中文

对话示例:

  • "让摘要更短/更长" → 编辑 summarize-tweets.mdsummarize-podcast.md
  • "更多关注 [X]" → 编辑相关的 prompt 文件
  • "将语气改为 [X]" → 编辑相关的 prompt 文件
  • "重置为默认" →
cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js reset-prompt <filename>

信息请求

  • "显示我的设置" →
cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js get-config
  • "显示我的源" / "我正在关注谁?" →
cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js list-sources
  • "显示我的 prompts" → 使用 CLI 获取所有 prompt 内容:
    cd ${CLAUDE_SKILL_DIR}/scripts && node cli.js get-prompt summarize-podcast
    

任何配置更改后,确认你更改了什么。