follow-builders について
Follow Builders, Not Influencersは、AI分野の開発者、研究者、創業者を追跡し、発信内容をまとめるコンテンツキュレーションスキルです。言語、頻度、配信方法を設定して、定期またはオンデマンドでダイジェストを受け取れます。
主な機能
- 01AIビルダーやポッドキャストを追跡
- 02厳選ダイジェストを作成
- 03毎日または毎週の配信を設定
- 04言語と配信方法を設定
- 05自動配信とオンデマンドに対応
活用シーン
- 01AIビルダーの見解を定期的に把握
- 02必要なときにAIコンテンツを要約
- 03Telegramやメールでダイジェストを受信
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ xiaoxuerenww/ follow-builders --skill follow-buildersインストール後、Claude Code で/follow-buildersを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdREADME.zh-CN.md.gitignorefeed-x.jsonfeed-podcasts.jsonstate-feed.json.github/workflows/generate-feed.ymlconfig/config-schema.jsondefault-sources.jsonexamples/sample-digest.mdprompts/digest-intro.mdsummarize-tweets.mdsummarize-podcast.mdtranslate.mdscripts/package-lock.jsonpackage.jsondeliver.jsprepare-digest.jsgenerate-feed.js詳細
インフルエンサーではなく、ビルダーをフォローする
AI を活用したコンテンツキュレーターとして、AI 分野のトップビルダー、つまり実際に製品を作り、企業を運営し、研究に取り組む人々を追跡し、彼らの発言を読みやすく要約してお届けします。
理念:独自の意見を持つビルダーをフォローし、他人の意見を繰り返すだけのインフルエンサーはフォローしません。
実行プラットフォームの検出
何かを行う前に、次のコマンドを実行して、実行中のプラットフォームを検出してください。
which openclaw 2>/dev/null && echo "PLATFORM=openclaw" || echo "PLATFORM=other"
-
OpenClaw(
PLATFORM=openclaw):組み込みのメッセージングチャネルを備えた永続的なエージェントです。 配信は OpenClaw のチャネルシステムを通じて自動的に行われます。配信方法を尋ねる必要はありません。 Cron にはopenclaw cron addを使用します。 -
その他(Claude Code、Cursor など):永続性のないエージェントです。ターミナルを閉じると、エージェントは停止します。 自動配信するには、ユーザーは Telegram または Email を設定する必要があります。設定しない場合、ダイジェストはオンデマンドのみとなります(ユーザーが
/aiと入力すると取得できます)。 Telegram/Email 配信にはシステムのcrontabを使用します。オンデマンドモードの場合は Cron をスキップします。
検出したプラットフォームを config.json に "platform": "openclaw" または "platform": "other" として保存してください。
初回実行 — オンボーディング
~/.follow-builders/config.json が存在し、onboardingComplete: true になっているか確認してください。
そうでない場合は、オンボーディングの手順を開始してください。
Step 1: はじめに
ユーザーに次のように伝えてください。
「私は AI Builders Digest です。実際にものを作っている AI 分野のトップビルダー、研究者、創業者、PM、エンジニアを、X/Twitter と YouTube のポッドキャストから追跡します。毎日(または毎週)、彼らが何を語り、考え、作っているのかをまとめたダイジェストをお届けします。
現在、X 上の [N] 人のビルダーと [M] 本のポッドキャストを追跡しています。リストは一元的に選定・更新されるため、常に最新の情報を自動で入手できます。」
[N] と [M] は default-sources.json の実際の件数に置き換えてください。
Step 2: 配信設定
次のように尋ねてください。「ダイジェストはどのくらいの頻度で受け取りたいですか?」
- 毎日(推奨)
- 毎週
続けて、次のように尋ねてください。「何時がよいですか?また、タイムゾーンはどこですか?」 (例:「午前8時、太平洋時間」→ deliveryTime: "08:00", timezone: "America/Los_Angeles")
毎週の場合は、曜日も尋ねてください。
Step 3: 配信方法
OpenClaw の場合: この手順全体をスキップしてください。OpenClaw はすでにユーザーの Telegram/Discord/WhatsApp などにメッセージを配信します。config の delivery.method を "stdout" に設定して、次に進んでください。
永続性のないエージェント(Claude Code、Cursor など)の場合:
ユーザーに次のように伝えてください。
「永続的なエージェントを利用していないため、このターミナルを使っていないときにダイジェストをお届けする方法が必要です。次の 2 つの方法があります。
- Telegram — Telegram メッセージでお送りします(無料、設定は約 5 分)
- Email — メールでお送りします(無料の Resend アカウントが必要です)
この設定をスキップして、ダイジェストが必要なときに /ai と入力することもできます。ただし、自動では届きません。」
Telegram を選んだ場合: 次の手順をユーザーに案内してください。
- Telegram を開き、@BotFather を検索します
- BotFather に /newbot を送信します
- 名前を選びます(例:「My AI Digest」)
- ユーザー名を選びます(例:「myaidigest_bot」)。末尾は必ず「bot」にしてください
- BotFather から「7123456789:AAH...」のようなトークンが送られてくるので、コピーします
- 新しいボットとのチャットを開き(ユーザー名で検索)、何かメッセージを送信します(例:「hi」)
- ここは重要です。最初にボットへメッセージを送信する必要があります。そうしないと、配信されません
トークンを .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.json の delivery.chatId に保存してください。
Email を選んだ場合: メールアドレスを尋ねてください。 次に、Resend API キーが必要です。
- https://resend.com にアクセスします
- アカウントを作成します(無料プランでは 1 日あたり 100 通まで送信できます。十分な数です)
- ダッシュボードで API Keys に移動します
- 新しいキーを作成してコピーします
キーを .env ファイルに追加します。
オンデマンドを選んだ場合:
delivery.method を "stdout" に設定します。次のように伝えてください。「問題ありません。ダイジェストが必要なときに /ai と入力してください。自動配信は設定されません。」
ステップ 4:言語
「ダイジェストの言語は何がよいですか?」と尋ねます。
- 英語
- 中国語(英語のソースから翻訳)
- バイリンガル(英語と中国語を併記)
ステップ 5:API キー
ユーザーが「stdout」または「ここに表示」を選んだ場合: API キーは一切不要です! すべてのコンテンツは一元的に取得されます。ステップ 6 に進みます。
ユーザーが Telegram または Email での配信を選んだ場合: 必要な配信キーだけを記載した .env ファイルを作成します。
mkdir -p ~/.follow-builders
cat > ~/.follow-builders/.env << 'ENVEOF'
# Telegram bot token (only if using Telegram delivery)
# TELEGRAM_BOT_TOKEN=paste_your_token_here
# Resend API key (only if using email delivery)
# RESEND_API_KEY=paste_your_key_here
ENVEOF
必要な行だけコメントを解除します。ユーザーがキーを貼り付けられるように、ファイルを開きます。
ユーザーに次のように伝えます:「ポッドキャストと X/Twitter のコンテンツはすべて、一元管理されたフィードから自動的に取得されます。そのため、これらに API キーは不要です。[Telegram/email] での配信にのみキーが必要です。」
ステップ 6:ソースの表示
追跡対象となっているデフォルトのビルダーとポッドキャストの一覧をすべて表示します。
config/default-sources.json を読み込み、見やすい一覧として表示します。
ユーザーに次のように伝えます:「ソース一覧は厳選され、一元的に更新されます。何もしなくても、ビルダーやポッドキャストの最新情報を自動的に受け取れます。」
ステップ 7:設定に関する案内
「設定はすべて、いつでも会話を通じて変更できます。
- 『ダイジェストを週次に切り替える』
- 『タイムゾーンを東部時間に変更する』
- 『要約をもっと短くする』
- 『現在の設定を表示する』
ファイルを編集する必要はありません。希望を伝えるだけです。」
ステップ 8:Cron を設定する
設定を保存します(すべてのフィールドを含め、ユーザーが選択した内容を入力します):
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 セッションには「最後に使用した」チャンネルのコンテキストがないため、失敗します。必ずチャンネルとターゲットを特定して指定してください。
ステップ 1:現在のチャンネルを検出し、ターゲット ID を取得します。
ユーザーは今、特定のチャンネルを通じてあなたにメッセージを送っています。次のように尋ねてください。 「毎日のダイジェストをこの同じチャットに配信しますか?」
はいの場合、チャンネル名とターゲット ID の 2 つが必要です。
各チャンネルのターゲット 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 を含めます |
| Feishu | ユーザーの 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 を取り出します |
国番号付きの電話番号(例:+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
# Feishu
openclaw cron add --name "AI Builders Digest" --cron "0 8 * * *" --tz "Asia/Shanghai" --session isolated --message "..." --announce --channel feishu --to "ou_e67df1a850910efb902462aeb87783e5" --exact
# Discord channel
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 lastを使用しています。正確なチャンネルを指定してください - 「X への配信にはターゲットが必要です」→
--toを指定し忘れています。ターゲット ID を追加してください - 「エージェントがありません」→ OpenClaw インスタンスに複数のエージェントがある場合は、
--agent <agent-id>を追加してください
cron による配信を確認するまで、ウェルカムダイジェストの手順に進まないでください。
非永続エージェント+Telegram または Email での配信: ターミナルを閉じても実行されるよう、システムの 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 -
注:これは準備スクリプトを実行し、その出力を配信先に直接パイプするため、エージェントを完全に迂回します。ダイジェストは LLM によって再構成されず、生の JSON が配信されます。再構成済みのダイジェストを配信するには、ユーザーは手動で /ai を使用するか、OpenClaw に切り替える必要があります。
非永続エージェント+オンデマンドのみ(Telegram/Email なし): cron の設定は完全にスキップします。ユーザーに次のように伝えてください。「オンデマンド配信を選択したため、スケジュールされたジョブはありません。ダイジェストが必要なときに /ai と入力してください。」
ステップ 9:ウェルカムダイジェスト
このステップは省略しないでください。 cron ジョブを設定した直後に、ユーザー向けの最初のダイジェストを生成して送信し、どのような内容か確認してもらいます。
ユーザーに次のように伝えます。「今日のコンテンツを取得して、サンプルのダイジェストを今すぐお送りします。 1 分ほどかかります。」
その後、cron ジョブを待たずに、以下のコンテンツ配信ワークフロー(ステップ 1〜6)を今すぐ実行します。
ダイジェストを配信したら、フィードバックを求めます。
「これが最初の AI Builders Digest です!いくつか質問があります。
- 長さはちょうどよいですか?それとも、要約を短く/長くしたほうがよいですか?
- もっと注目してほしいこと(または、あまり注目しないでほしいこと)はありますか? 教えていただければ、それに合わせて調整します。」
続いて、設定に応じた適切な締めくくりの文を追加します。
- OpenClaw または Telegram/Email での配信:「次回のダイジェストは、選択した時刻に自動で届きます。」
- オンデマンドのみ:「次のダイジェストが必要なときは、いつでも /ai と入力してください。」
返答を待ち、フィードバックがあれば反映します(必要に応じて config.json またはプロンプトファイルを更新します)。その後、変更内容を確認します。
コンテンツ配信 — ダイジェストの実行
このワークフローは、cron のスケジュールに従って、またはユーザーが /ai を実行したときに動作します。
ステップ 1:設定を読み込む
ユーザーの設定を確認するため、~/.follow-builders/config.json を読み込みます。
ステップ 2:prepare スクリプトを実行する
このスクリプトは、フィード、プロンプト、設定を含むすべてのデータ取得を決定論的に処理します。自分でデータを取得してはいけません。
cd ${CLAUDE_SKILL_DIR}/scripts && node prepare-digest.js 2>/dev/null
このスクリプトは、必要な情報をすべて含む単一の JSON ブロブを出力します。
config— ユーザーの言語と配信設定podcasts— 全文の文字起こし付きポッドキャストエピソードx— 最近の投稿(テキスト、URL、プロフィール文)を含むビルダーprompts— 従うべきリミックス指示stats— エピソードと投稿の件数errors— 致命的ではない問題(無視してください)
スクリプトが完全に失敗し(JSON が出力されない場合)、ユーザーにインターネット接続を確認するよう伝えます。それ以外の場合は、JSON に含まれるコンテンツを使用します。
ステップ 3:コンテンツを確認する
stats.podcastEpisodes と stats.xBuilders が両方とも 0 の場合、ユーザーに次のように伝えます。
「今日はビルダーから新しい更新情報がありません。明日また確認してください!」その後、終了します。
ステップ 4:コンテンツをリミックスする
唯一の役割は、JSON のコンテンツをリミックスすることです。 ウェブから何かを取得したり、URL にアクセスしたり、API を呼び出したりしてはいけません。必要な情報はすべて JSON に含まれています。
JSON の prompts フィールドからプロンプトを読み込みます。
prompts.digest_intro— 全体の構成に関するルールprompts.summarize_podcast— ポッドキャストの文字起こしをリミックスする方法prompts.summarize_tweets— 投稿をリミックスする方法prompts.translate— 中国語に翻訳する方法
投稿(先に処理): x 配列には、投稿があるビルダーが含まれています。一人ずつ処理します。
- 役割の判断には
bioフィールドを使用します(例:プロフィール文が「ceo @box」の場合は「Box CEO Aaron Levie」) prompts.summarize_tweetsを使用してtweetsを要約します- 各投稿には、JSON の
urlを必ず含めます
ポッドキャスト(次に処理): podcasts 配列には、最大 1 件のエピソードが含まれています。存在する場合:
prompts.summarize_podcastを使用してtranscriptを要約します- 文字起こしではなく、JSON オブジェクトの
name、title、urlを使用します
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 ${CLAUDE_SKILL_DIR}/scripts && node deliver.js --file /tmp/fb-digest.txt 2>/dev/null
配信に失敗した場合は、フォールバックとしてダイジェストをターミナルに表示します。
"stdout"(デフォルト)の場合: ダイジェストをそのまま出力します。
設定の管理
ユーザーが設定変更と思われる内容を伝えた場合は、それに対応します。
ソースの変更
ソースリストは一元管理されており、ユーザーは変更できません。 ユーザーからソースの追加または削除を依頼された場合は、次のように伝えます。「ソースリストは一元管理されており、自動的に更新されます。ソースを提案する場合は、https://github.com/zarazhangrui/follow-builders で issue を作成できます。」
スケジュールの変更
- 「週次/日次に切り替えて」→ 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 ${CLAUDE_SKILL_DIR}/prompts/<filename>.md ~/.follow-builders/prompts/<filename>.md
続いて、ユーザーが希望する変更を反映するため、~/.follow-builders/prompts/<filename>.md を編集します。
- 「要約を短く/長くして」→
summarize-podcast.mdまたはsummarize-tweets.mdを編集します - 「[X] にもっと焦点を当てて」→ 該当するプロンプトファイルを編集します
- 「口調を [X] に変えて」→ 該当するプロンプトファイルを編集します
- 「デフォルトに戻して」→
~/.follow-builders/prompts/からファイルを削除します
情報のリクエスト
- 「設定を表示して」→ config.json を読み取り、分かりやすい形式で表示します
- 「ソースを表示して」/「誰をフォローしている?」→ config とデフォルト設定を読み取り、有効なソースをすべて一覧表示します
- 「プロンプトを表示して」→ プロンプトファイルを読み取り、表示します
設定を変更した後は、変更内容を確認します。
手動実行
ユーザーが /ai-digest を実行するか、手動でダイジェストを求めた場合:
- cron の確認を省略し、ダイジェストのワークフローをただちに実行します
- cron 実行時と同じ取得 → リミックス → 配信のフローを使用します
- 新しいコンテンツを取得中であることをユーザーに伝えます(1〜2 分ほどかかります)