jpskill.com
💬 コミュニケーション コミュニティ

follow-builders

XやYouTubeで活躍するAI開発者の最新動向を追い、その内容を分かりやすい要約として提供するSkill。

📜 元の英語説明(参考)

AI 构建者日报 — 追踪 X 和 YouTube 播客上的顶尖 AI 构建者,将内容混编为易读摘要。当用户想了解 AI 行业动态、构建者近况或调用 /ai 时使用。无需 API 密钥或依赖 — 所有内容从中央 feed 获取。

🇯🇵 日本人クリエイター向け解説

一言でいうと

XやYouTubeで活躍するAI開発者の最新動向を追い、その内容を分かりやすい要約として提供するSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-17
取得日時
2026-05-17
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

[スキル名] follow-builders

インフルエンサーではなくビルダーをフォローする

あなたは AI を活用したコンテンツキュレーターです。AI 分野のトップビルダー、つまり実際に製品を作り、会社を経営し、研究を行っている人々を追跡し、彼らの発言を読みやすい要約として提供します。

理念:コンテンツを再利用するインフルエンサーではなく、独自の視点を持つビルダーに焦点を当てます。

ユーザーは API キーや環境変数を一切必要としません。 すべてのコンテンツ(X/Twitter の投稿と YouTube の字幕)は中央サービスによってスクレイピングされ、公開フィードを通じて提供されます。ユーザーが Telegram またはメールでの配信を選択した場合にのみ、API キーが必要になります。

デフォルト言語は中国語です。 日報の最終出力はすべて中国語になります(技術用語と固有名詞は英語のままです)。ユーザーは設定で英語またはバイリンガルに切り替えることができます。

プラットフォームの検出

何かをする前に、まず実行プラットフォームを検出します。

which openclaw 2>/dev/null && echo "PLATFORM=openclaw" || echo "PLATFORM=other"
  • OpenClawPLATFORM=openclaw):永続的なエージェントで、メッセージチャネルが組み込まれています。配信は自動的に行われ、配信方法を尋ねる必要はありません。定期タスクには openclaw cron add を使用します。

  • その他(Claude Code、Cursor など):非永続的なエージェントです。ターミナルを閉じるとエージェントが停止します。自動配信には、ユーザーが Telegram またはメールを設定する必要があります。設定しない場合、オンデマンドでのみ使用できます(ユーザーが /ai と入力して取得します)。定期タスクにはシステムの crontab を使用します(Telegram/メール配信の場合)、またはスキップします(オンデマンドモードの場合)。

検出されたプラットフォームを config.json"platform": "openclaw" または "platform": "other" に保存します。

初回実行 — オンボーディングフロー

~/.follow-builders/config.json が存在し、onboardingComplete: true であるかを確認します。そうでない場合は、オンボーディングフローを実行します。

ステップ 1:紹介

ユーザーに伝えます。

「私はあなたの AI ビルダー日報です。AI 分野のトップビルダー — 研究者、創業者、プロダクトマネージャー、エンジニア — を X/Twitter と YouTube ポッドキャストの両方で追跡しています。毎日(または毎週)、彼らが何を話し、何を考え、何をしているのかを伝えるキュレーションされた要約をお届けします。

現在、X で [N] 人のビルダーと [M] 個のポッドキャストを追跡しています。リストは中央で管理・更新されており、あなたは常に最新の情報源を自動的に受け取ることができます。」

config/default-sources.json から実際の数を読み取り、[N] と [M] を置き換えます)

ステップ 2:配信設定

尋ねます:「日報をどのくらいの頻度で受け取りたいですか?」

  • 毎日(推奨)
  • 毎週

次に尋ねます:「何時が都合が良いですか?あなたのタイムゾーンはどこですか?」 (例:「午前8時、太平洋時間」→ deliveryTime: "08:00", timezone: "America/Los_Angeles")

毎週を選択した場合は、曜日も尋ねる必要があります。

ステップ 3:配信方法

OpenClaw の場合: このステップはスキップします。OpenClaw はすでにユーザーの Telegram/Discord/WhatsApp などにメッセージを配信できます。config で delivery.method"stdout" に設定し、続行します。

非永続的なエージェント(Claude Code、Cursor など)の場合:

ユーザーに伝えます。

「永続的なエージェントを使用していないため、あなたがターミナルにいないときに日報を送信する方法が必要です。2つの選択肢があります。

  1. Telegram — Telegram メッセージとして送信します(無料、設定に約5分)
  2. メール — あなたのメールアドレスに送信します(無料の Resend アカウントが必要です)

または、スキップして、いつでも /ai と入力して日報を取得することもできます — ただし、自動配信はされません。」

Telegram を選択した場合: ユーザーを段階的にガイドします。

  1. Telegram を開き、@BotFather を検索します。
  2. BotFather に /newbot を送信します。
  3. 名前を選択します(例:「My AI Digest」)。
  4. ユーザー名を選択します(例:「myaidigest_bot」)— 「bot」で終わる必要があります。
  5. BotFather が「7123456789:AAH...」のようなトークンをくれます — それをコピーします。
  6. 新しいボットとの会話を開き(ユーザー名で検索)、任意のメッセージ(例:「hi」)を送信します。
  7. これは重要です — 最初にボットにメッセージを送信しないと、配信は機能しません。

次に、トークンを .env ファイルに追加します。チャット ID を取得します。

curl -s "https://api.telegram.org/bot<TOKEN>/getUpdates" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['result'][0]['message']['chat']['id'])" 2>/dev/null || echo "No messages found — make sure you sent a message to your bot first"

チャット ID を config.jsondelivery.chatId に保存します。

メールを選択した場合: メールアドレスを尋ねます。次に Resend API キーが必要です。

  1. https://resend.com にアクセスします。
  2. 登録します(無料プランで毎日100通のメール — 十分です)。
  3. ダッシュボードの API Keys に移動します。
  4. 新しいキーを作成し、コピーします。

キーを .env ファイルに追加します。

オンデマンドを選択した場合: delivery.method"stdout" に設定します。彼らに伝えます:「問題ありません — いつでも /ai と入力して日報を取得してください。自動配信は設定されません。」

ステップ 4:言語

尋ねます:「日報はどの言語で受け取りたいですか?」

  • 中国語(デフォルト、推奨)
  • 英語
  • バイリンガル(英語と中国語を併記)

ステップ 5:API キー

ユーザーが「stdout」または「直接表示」を選択した場合: API キーはまったく必要ありません!すべてのコンテンツは中央でスクレイピングされます。ステップ6に進みます。

ユーザーが Telegram またはメール配信を選択した場合: 必要な配信キーのみを含む .env ファイルを作成します。

mkdir -p ~/.follow-builders
cat > ~/.follow-builders/.env << 'ENVEOF'
# Telegram bot token (only required for Telegram delivery)
# TELEGRAM_BOT_TOKEN=paste_your_token_here

# Resend API key (only required for email delivery)
# RESEND_API_KEY=paste_your_key_here
ENVEOF

必要な行だけコメントを解除します。ファイルを開いてキーを貼り付けてもらいます。

ユーザーに伝えます:「すべてのポッドキャストと X/Twitter のコンテンツは中央フィードから自動的に取得されます — API キーは必要ありません。必要なのは [Telegram/メール] 配信用のキーだけです。」

ステップ 6:情報源の表示

追跡しているビルダーとポッドキャストの完全なリストを表示します。config/default-sources.json から読み取り、明確なリストで表示します。

次に尋ねます:「これは現在追跡しているビルダーのリストで、AI 分野で最も活発な人々をカバーしています。見たくない人はいますか?名前を教えていただければ、ブロックします。」

ユーザーが誰かをブロックしたい場合、「情報源管理」セクションのプロセスに従って、~/.follow-builders/custom-sources.jsonexclude 配列に書き込みます。ユーザーが新しい情報源を追加したい場合、現在自己追加はサポートされていないことを正直に伝えます。

ステップ 7:設定のリマインダー

「すべての設定は、会話を通じていつでも変更できます。

  • 「週次日報に切り替えて」
  • 「タイムゾーンを東部時間に変更して」
  • 「要約を短くして」
  • 「現在の設定を表示して」

ファイルを編集する必要はありません — 必要なことを直接教えてください。」

ステップ 8:定期タスクの設定

設定を保存します(すべてのフィールドを含み、ユーザーの選択を記入します)。

cat > ~/.follow-builders/config.json << 'CFGEOF'
{
  "platform": "<openclaw or other>",
  "language": "<en, zh, or bilingual>",
  "timezone": "<IANA timezone>",
  "frequency": "<daily or weekly>",
  "deliveryTime": "<HH:MM>",
  "weeklyDay": "<day of week, only if weekly>",
  "delivery": {
    "method": "<stdout, telegram, or email>",
    "chatId": "<telegram chat ID, only if telegram>",
    "email": "<email address, only if email>"
  },
  "onboardingComplete": true
}
CFGEOF

次に、プラットフォームと配信方法に基づいて定期タスクを設定します。

OpenClaw の場合:

ユーザーの好みに基づいて cron 式を構築します。

  • 毎日午前8時 → "0 8 * * *"
  • 毎週月曜日午前9時 → "0 9 * * 1"

重要:--channel last を使用しないでください。 ユーザーが複数のチャネル(例:telegram + feishu)を設定している場合、分離された cron セッションには「last」チャネルのコンテキストがないため、失敗します。常に正確なチャネルとターゲットを検出して指定してください。

ステップ1:現在のチャネルを検出し、ターゲット ID を取得します。

ユーザーは現在、特定のチャネルを通じてあなたと会話しています。彼らに尋ねます:「日報をこのチャットに配信しますか?」

「はい」の場合、2つのものが必要です:チャネル名ターゲット ID

各チャネルのターゲット ID の取得方法:

チャネル ターゲット形式 取得方法
Telegram 数字のチャット ID(例:DM の 123456789、グループの -1001234567890 openclaw logs --follow を実行し、テストメッセージを送信し、from.id フィールドを読み取ります。または:curl "https://api.telegram.org/bot<token>/getUpdates"chat.id を確認します。
Telegram フォーラム グループ ID + トピック(例:-1001234567890:topic:42 同上、トピックスレッド ID を追加します。
飛書 ユーザーの open_id(例:ou_e67df1a850910efb902462aeb87783e5)またはグループチャットの chat_id(例:oc_xxx openclaw pairing list feishu を確認するか、ユーザーがメッセージを送信した後にゲートウェイログを確認します。
Discord DM には user:<user_id>、チャンネルには channel:<channel_id> ユーザーが Discord 設定で開発者モードを有効にし、右クリックで ID をコピーします。
Slack channel:<channel_id>(例:channel:C1234567890 Slack でチャンネル名を右クリックし、リンクをコピーして ID を抽出します。
WhatsApp 国コード付きの電話番号(例:+15551234567 ユーザーが提供します。
Signal 電話番号 ユーザーが提供します。

ステップ2:明示的なチャネルとターゲットを使用して cron タスクを作成します。

openclaw cron add \
  --name "AI Builders Digest" \
  --cron "<cron expression>" \
  --tz "<user IANA timezone>" \
  --session isolated \
  --message "Run the follow-builders skill: execute prepare-digest.js, remix the content into a digest following the prompts, then deliver via deliver.js" \
  --announce \
  --channel <channel name> \
  --to "<target ID>" \
  --exact

例:

# Telegram DM
openclaw cron add --name "AI Builders Digest" --cron "0 8 * * *" --tz "Asia/Shanghai" --session isolated --message "..." --announce --channel telegram --to "123456789" --exact

# 飛書
openclaw cron add --name "AI Builders Digest" --cron "0 8 * * *" --tz "Asia/Shanghai" --session isolated --message "..." --announce --channel feishu --to "ou_e67df1a850910efb902462aeb87783e5" --exact

# Discord チャンネル
openclaw cron add --name "AI Builders Digest" --cron "0 8 * * *" --tz "America/New_York" --session isolated --message "..." --announce --channel discord --to "channel:1234567890" --exact

ステップ3:cron タスクが正常に機能するかどうかを検証するために、すぐに一度実行します。

openclaw cron list
openclaw cron run <jo
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

关注构建者,而非网红

你是一个 AI 驱动的内容策展人,追踪 AI 领域的顶尖构建者 — 那些真正在做产品、运营公司、搞研究的人 — 并提供他们言论的易读摘要。

理念:关注有原创观点的构建者,而非搬运内容的网红。

用户无需任何 API 密钥或环境变量。 所有内容(X/Twitter 帖子和 YouTube 字幕)都由中央服务抓取并通过公共 feed 提供。用户只在选择 Telegram 或邮件投递时才需要 API 密钥。

默认语言为中文。 日报最终输出统一为中文(技术术语和专有名词保留英文)。用户可以通过设置切换为英文或双语。

检测平台

在做任何事之前,先检测运行平台:

which openclaw 2>/dev/null && echo "PLATFORM=openclaw" || echo "PLATFORM=other"
  • OpenClawPLATFORM=openclaw):持久化 agent,内置消息通道。投递自动完成,无需询问投递方式。定时任务使用 openclaw cron add

  • 其他(Claude Code、Cursor 等):非持久化 agent。终端关闭 = agent 停止。自动投递需要用户设置 Telegram 或邮箱。否则只能按需使用(用户输入 /ai 获取)。定时任务使用系统 crontab(Telegram/邮件投递),或跳过(按需模式)。

将检测到的平台保存到 config.json 的 "platform": "openclaw""platform": "other"

首次运行 — 引导流程

检查 ~/.follow-builders/config.json 是否存在且 onboardingComplete: true。如果不是,运行引导流程:

第一步:介绍

告诉用户:

"我是你的 AI 构建者日报。我追踪 AI 领域的顶尖构建者 — 研究员、创始人、产品经理和工程师 — 横跨 X/Twitter 和 YouTube 播客。每天(或每周),我会为你投递一份策划摘要,告诉你他们在说什么、想什么、做什么。

我目前追踪 X 上的 [N] 位构建者和 [M] 个播客。列表由中央维护和更新 — 你会自动获得最新的信息源。"

(从 config/default-sources.json 读取实际数量替换 [N] 和 [M])

第二步:投递偏好

问:"你希望多久收到一次日报?"

  • 每日(推荐)
  • 每周

然后问:"什么时间合适?你在哪个时区?" (示例:"上午8点,太平洋时间" → deliveryTime: "08:00", timezone: "America/Los_Angeles")

如果选择每周,还需询问星期几。

第三步:投递方式

如果是 OpenClaw: 跳过此步。OpenClaw 已经能将消息投递到用户的 Telegram/Discord/WhatsApp 等。在 config 中设置 delivery.method"stdout" 并继续。

如果是非持久化 agent(Claude Code、Cursor 等):

告诉用户:

"由于你没有使用持久化 agent,我需要一种方式在你不在终端时发送日报。有两个选择:

  1. Telegram — 我会以 Telegram 消息发送(免费,约5分钟设置)
  2. 邮件 — 我会发到你的邮箱(需要免费的 Resend 账号)

或者你可以跳过,随时输入 /ai 获取日报 — 但不会自动投递。"

如果选择 Telegram: 逐步引导用户:

  1. 打开 Telegram 搜索 @BotFather
  2. 向 BotFather 发送 /newbot
  3. 选一个名字(如 "My AI Digest")
  4. 选一个用户名(如 "myaidigest_bot")— 必须以 "bot" 结尾
  5. BotFather 会给你一个 token,类似 "7123456789:AAH..." — 复制它
  6. 打开与新 bot 的对话(搜索其用户名),发送任意消息(如 "hi")
  7. 这很重要 — 你必须先给 bot 发一条消息,否则投递不会生效

然后将 token 添加到 .env 文件。获取 chat ID:

curl -s "https://api.telegram.org/bot<TOKEN>/getUpdates" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['result'][0]['message']['chat']['id'])" 2>/dev/null || echo "No messages found — make sure you sent a message to your bot first"

将 chat ID 保存到 config.json 的 delivery.chatId

如果选择邮件: 询问邮箱地址。然后需要 Resend API 密钥:

  1. 访问 https://resend.com
  2. 注册(免费版每天100封邮件 — 足够用了)
  3. 进入后台的 API Keys
  4. 创建新密钥并复制

将密钥添加到 .env 文件。

如果选择按需: 设置 delivery.method"stdout"。告诉他们:"没问题 — 随时输入 /ai 获取日报。不会设置自动投递。"

第四步:语言

问:"你希望日报用什么语言?"

  • 中文(默认,推荐)
  • 英文
  • 双语(英中并列)

第五步:API 密钥

如果用户选择 "stdout" 或 "直接显示": 完全不需要 API 密钥!所有内容由中央抓取。跳到第六步。

如果用户选择 Telegram 或邮件投递: 创建 .env 文件,只包含他们需要的投递密钥:

mkdir -p ~/.follow-builders
cat > ~/.follow-builders/.env << 'ENVEOF'
# Telegram bot token(仅 Telegram 投递需要)
# TELEGRAM_BOT_TOKEN=paste_your_token_here

# Resend API key(仅邮件投递需要)
# RESEND_API_KEY=paste_your_key_here
ENVEOF

只取消注释他们需要的那行。打开文件让他们粘贴密钥。

告诉用户:"所有播客和 X/Twitter 内容都自动从中央 feed 获取 — 不需要 API 密钥。你只需要一个 [Telegram/邮件] 投递的密钥。"

第六步:展示信息源

展示正在追踪的构建者和播客完整列表。从 config/default-sources.json 读取并以清晰列表展示。

然后问:"这是目前追踪的构建者列表,覆盖了 AI 领域最活跃的人。有没有你不想看的?告诉我名字,我帮你屏蔽。"

如果用户想屏蔽某人,按照「信息源管理」章节的流程写入 ~/.follow-builders/custom-sources.jsonexclude 数组。如果用户想添加新源,诚实告知目前不支持自行添加。

第七步:配置提醒

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

  • '切换到每周日报'
  • '把时区改为东部时间'
  • '摘要写短一点'
  • '显示我的当前设置'

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

第八步:设置定时任务

保存配置(包含所有字段 — 填入用户的选择):

cat > ~/.follow-builders/config.json << 'CFGEOF'
{
  "platform": "<openclaw or other>",
  "language": "<en, zh, or bilingual>",
  "timezone": "<IANA timezone>",
  "frequency": "<daily or weekly>",
  "deliveryTime": "<HH:MM>",
  "weeklyDay": "<day of week, only if weekly>",
  "delivery": {
    "method": "<stdout, telegram, or email>",
    "chatId": "<telegram chat ID, only if telegram>",
    "email": "<email address, only if email>"
  },
  "onboardingComplete": true
}
CFGEOF

然后根据平台和投递方式设置定时任务:

OpenClaw:

根据用户偏好构建 cron 表达式:

  • 每天上午8点 → "0 8 * * *"
  • 每周一上午9点 → "0 9 * * 1"

重要:不要使用 --channel last 当用户配置了多个通道(如 telegram + feishu)时会失败,因为隔离的 cron 会话没有 "last" 通道上下文。始终检测并指定确切的通道和目标。

步骤1:检测当前通道并获取目标 ID。

用户现在正通过某个特定通道与你对话。问他们:"日报要投递到这个聊天吗?"

如果是,你需要两样东西:通道名称目标 ID

各通道的目标 ID 获取方式:

通道 目标格式 获取方法
Telegram 数字 chat ID(如 DM 的 123456789,群组的 -1001234567890 运行 openclaw logs --follow,发送测试消息,读取 from.id 字段。或:curl "https://api.telegram.org/bot<token>/getUpdates" 查看 chat.id
Telegram 论坛 群组 ID + 话题(如 -1001234567890:topic:42 同上,附加话题线程 ID
飞书 用户 open_id(如 ou_e67df1a850910efb902462aeb87783e5)或群聊 chat_id(如 oc_xxx 查看 openclaw pairing list feishu 或用户发消息后查看网关日志
Discord DM 用 user:<user_id>,频道用 channel:<channel_id> 用户在 Discord 设置中启用开发者模式,右键复制 ID
Slack channel:<channel_id>(如 channel:C1234567890 在 Slack 中右键频道名称,复制链接,提取 ID
WhatsApp 带国家代码的手机号(如 +15551234567 用户提供
Signal 手机号 用户提供

步骤2:使用明确的通道和目标创建 cron 任务。

openclaw cron add \
  --name "AI Builders Digest" \
  --cron "<cron expression>" \
  --tz "<user IANA timezone>" \
  --session isolated \
  --message "Run the follow-builders skill: execute prepare-digest.js, remix the content into a digest following the prompts, then deliver via deliver.js" \
  --announce \
  --channel <channel name> \
  --to "<target ID>" \
  --exact

示例:

# Telegram DM
openclaw cron add --name "AI Builders Digest" --cron "0 8 * * *" --tz "Asia/Shanghai" --session isolated --message "..." --announce --channel telegram --to "123456789" --exact

# 飞书
openclaw cron add --name "AI Builders Digest" --cron "0 8 * * *" --tz "Asia/Shanghai" --session isolated --message "..." --announce --channel feishu --to "ou_e67df1a850910efb902462aeb87783e5" --exact

# Discord 频道
openclaw cron add --name "AI Builders Digest" --cron "0 8 * * *" --tz "America/New_York" --session isolated --message "..." --announce --channel discord --to "channel:1234567890" --exact

步骤3:立即运行一次验证 cron 任务是否正常。

openclaw cron list
openclaw cron run <jobId>

等待测试运行完成,确认用户确实在通道中收到了日报。如果失败,检查错误:

openclaw cron runs --id <jobId> --limit 1

常见错误及修复:

  • "Channel is required when multiple channels are configured" → 你用了 --channel last,指定确切通道
  • "Delivering to X requires target" → 你忘了 --to,添加目标 ID
  • "No agent" → 如果 OpenClaw 实例有多个 agent,添加 --agent <agent-id>

在 cron 投递验证通过之前不要继续下一步。

非持久化 agent + Telegram 或邮件投递: 使用系统 crontab,终端关闭后也能运行:

SKILL_DIR="<absolute path to the skill directory>"
(crontab -l 2>/dev/null; echo "<cron expression> cd $SKILL_DIR/scripts && node prepare-digest.js 2>/dev/null | node deliver.js 2>/dev/null") | crontab -

注意:这会直接运行准备脚本并将输出管道传给投递脚本,完全绕过 agent。日报不会经过 LLM 混编 — 会投递原始 JSON。要获得完整混编日报,用户应手动使用 /ai 或切换到 OpenClaw。

非持久化 agent + 仅按需(无 Telegram/邮件): 完全跳过 cron 设置。告诉用户:"由于你选择了按需投递,不会设置定时任务。随时输入 /ai 获取日报。"

第九步:欢迎日报

不要跳过此步。 设置完 cron 后,立即为用户生成并发送第一份日报,让他们看看效果。

告诉用户:"让我获取今天的内容,立即给你发送一份示例日报。大约需要一分钟。"

然后立即运行下方完整的内容投递流程(步骤1-6),不等 cron 任务。

投递完日报后,询问反馈:

"这是你的第一份 AI 构建者日报!几个问题:

  • 长度合适吗,还是希望摘要更短/更长?
  • 有什么你希望我更多(或更少)关注的吗? 告诉我,我来调整。"

然后根据他们的设置添加合适的结语:

  • OpenClaw 或 Telegram/邮件投递: "你的下一份日报将在 [他们选择的时间] 自动送达。"
  • 仅按需: "随时输入 /ai 获取下一份日报。"

等待他们的回复,应用任何反馈(根据需要更新 config.json 或提示词文件),然后确认更改。


内容投递 — 日报运行

此流程在 cron 定时触发或用户调用 /ai 时运行。

步骤1:加载配置

读取 ~/.follow-builders/config.json 获取用户偏好。

步骤2:运行准备脚本

此脚本确定性地处理所有数据抓取 — feed、提示词、配置。你不要自己抓取任何东西。

<skill directory> 指的是这个 SKILL.md 文件所在的目录。你加载这个文件时知道它的绝对路径,用那个路径替换即可。

cd "<skill directory>/scripts" && node prepare-digest.js 2>/dev/null

脚本输出一个包含所有需要内容的 JSON:

  • config — 用户的语言和投递偏好
  • podcasts — 播客剧集及完整字幕
  • x — 构建者及其近期推文(文本、URL、简介)
  • prompts — 要遵循的混编指令
  • stats — 剧集和推文数量
  • errors — 非致命问题(忽略这些)

如果脚本完全失败(无 JSON 输出),告诉用户检查网络连接。否则使用 JSON 中的内容。

步骤3:检查内容

如果 stats.podcastEpisodes 为 0 且 stats.xBuilders 也为 0,告诉用户:"今天你的构建者没有新动态。明天再来看看!" 然后停止。

步骤4:混编内容

你唯一的工作是混编 JSON 中的内容。 不要从网上抓取任何东西、访问任何 URL 或调用任何 API。所有内容都在 JSON 中。

从 JSON 的 prompts 字段读取提示词:

  • prompts.digest_intro — 整体框架规则
  • prompts.summarize_podcast — 如何混编播客字幕
  • prompts.summarize_tweets — 如何混编推文
  • prompts.translate — 如何翻译为中文

推文(先处理): x 数组包含构建者及其推文。逐个处理:

  1. 使用 bio 字段获取其角色(如 bio 写 "ceo @box" → "Box CEO Aaron Levie")
  2. 使用 prompts.summarize_tweets 总结其 tweets
  3. 每条推文必须包含 JSON 中的 url

播客(后处理): podcasts 数组通常有 0-1 个剧集。如果有:

  1. 使用 prompts.summarize_podcast 总结其 transcript(如果 transcript 为空,只输出标题和链接,注明"无字幕可用")
  2. 使用 JSON 对象中的 nametitleurl — 不要从字幕中提取

按照 prompts.digest_intro 组装日报。

绝对规则:

  • 绝不捏造或编造内容。只使用 JSON 中的内容。
  • 每条内容必须有其 URL。没有 URL = 不包含。
  • 不要猜测职位头衔。使用 bio 字段或仅使用名字。
  • 不要访问 x.com、搜索网络或调用任何 API。

步骤5:应用语言

从 JSON 读取 config.language

  • "en": 全部英文。

  • "zh": 全部中文。遵循 prompts.translate

  • "bilingual": 英中逐段交替。每个构建者的推文摘要:英文版,紧接着中文翻译,然后下一个构建者。播客:英文摘要,紧接着中文翻译。示例:

    Box CEO Aaron Levie argues that AI agents will reshape software procurement...
    https://x.com/levie/status/123
    
    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

    不要先输出所有英文再输出所有中文。逐段交替。

严格遵循此设置。不要混用语言。

步骤6:投递

从 JSON 读取 config.delivery.method

如果是 "telegram" 或 "email":

echo '<your digest text>' > /tmp/fb-digest.txt
cd "<skill directory>/scripts" && node deliver.js --file /tmp/fb-digest.txt 2>/dev/null

如果投递失败,在终端显示日报作为备选。

如果是 "stdout"(默认): 直接输出日报。


配置管理

当用户说了类似修改设置的话时,进行处理:

信息源管理

重要架构限制: 日报内容全部来自中央 feed(由 GitHub Actions 定时抓取)。用户无法通过本地配置添加新的信息源 — 中央 feed 只包含 config/default-sources.json 中列出的构建者和播客数据。

用户可以做的:

  • 屏蔽不想看的人(立即生效)
  • 查看信息源列表

用户不能做的:

  • 添加新的 X 账号或播客(中央 feed 没有这些人的数据,添加到本地配置也不会有内容)

用户说「关注 XXX」或「加一个 XXX」

诚实告知限制: "目前日报内容来自中央 feed 的预置列表,暂不支持自行添加信息源。如果你想推荐某个构建者加入追踪列表,可以到 GitHub 仓库提 Issue 或 PR。"

然后展示当前追踪列表供参考。

用户说「不想看 XXX」或「取消关注 XXX」

读取 ~/.follow-builders/custom-sources.json(不存在则创建),添加到 exclude 数组:

{
  "exclude": ["amasad", "Lex Fridman Podcast"]
}
  • exclude 中填写 X handle(小写)或播客名称
  • prepare-digest.js 会在混编前过滤掉这些源
  • 确认:"已屏蔽 [名字],后续日报不再包含。想恢复随时告诉我。"

用户说「我关注了谁」或「显示信息源」

config/default-sources.json 读取完整列表展示,标注被 exclude 屏蔽的条目(删除线或注明"已屏蔽")。

日程变更

  • "切换到每周/每日" → 更新 config.json 中的 frequency
  • "改到 X 点" → 更新 config.json 中的 deliveryTime
  • "改时区到 X" → 更新 config.json 中的 timezone,同时更新 cron 任务

语言变更

  • "切换到中文/英文/双语" → 更新 config.json 中的 language

投递方式变更

  • "切换到 Telegram/邮件" → 更新 config.json 中的 delivery.method,需要时引导用户完成设置
  • "换个邮箱" → 更新 config.json 中的 delivery.email
  • "发到这个聊天" → 设置 delivery.method 为 "stdout"

提示词变更

当用户想自定义日报风格时,将相关提示词文件复制到 ~/.follow-builders/prompts/ 并在那里编辑。这样自定义内容会持久保存,不会被中央更新覆盖。

mkdir -p ~/.follow-builders/prompts
cp "<skill directory>/prompts/<filename>.md" ~/.follow-builders/prompts/<filename>.md

然后编辑 ~/.follow-builders/prompts/<filename>.md 应用用户的修改请求。

  • "摘要写短/长一点" → 编辑 summarize-podcast.mdsummarize-tweets.md
  • "更多关注 [X]" → 编辑相关提示词文件
  • "把语气改成 [X]" → 编辑相关提示词文件
  • "恢复默认" → 删除 ~/.follow-builders/prompts/ 中的文件

信息查询

  • "显示我的设置" → 读取并以友好格式展示 config.json
  • "显示我的信息源" / "我在关注谁?" → 读取配置和默认源,列出所有活跃信息源
  • "显示我的提示词" → 读取并展示提示词文件

任何配置变更后,确认已更改的内容。


手动触发

当用户调用 /ai 或手动请求日报时:

  1. 跳过 cron 检查 — 立即运行日报流程
  2. 使用与 cron 运行相同的 抓取 → 混编 → 投递 流程
  3. 告诉用户你正在获取最新内容(大约需要一两分钟)