API キー
Richfolio は最大 5 つの外部サービスを利用しますが、すべて寛大な無料枠があります。必須なのは Resend と受信メールアドレスだけ — それ以外はすべてオプションです。
各キーはリポジトリの Secret として追加します:Settings → Secrets and variables → Actions → Secrets タブ。RECIPIENT_EMAIL は代わりに Variable として追加してください(閲覧/編集が容易です)。

Resend(メール)— 必須
Resend は HTML メールレポートを配信します。
- resend.com にアクセスしてサインアップ
- ダッシュボードで API Keys に移動
- Create API Key をクリックし、名前を付けてキーをコピー
- GitHub Secret として追加 — 名前:
RESEND_API_KEY、値:先ほどコピーしたキー
無料枠: 月 3,000 通。デフォルトでは onboarding@resend.dev から送信されます。カスタムドメインを認証しない限り、アカウント所有者のメールアドレスにしか送信できません(Dashboard → Domains → Add Domain → DNS レコードを追加)。
受信メールアドレス — 必須
GitHub の Variable(Secret ではない)として追加:名前:RECIPIENT_EMAIL、値:あなたのメールアドレス。
カスタムドメインを認証していない場合、Resend アカウントのメールアドレスと一致している必要があります。
NewsAPI(ヘッドライン)— オプション
毎日のブリーフに各ティッカーのトップヘッドラインを提供します。
- newsapi.org にアクセスしてサインアップ
- ダッシュボードに API キーがすぐに表示されます
- GitHub Secret として追加 — 名前:
NEWS_API_KEY、値:ダッシュボードのキー
無料枠: 1 日 100 リクエスト。Richfolio はバッチング経由で 1 回の実行につき約 4 リクエストを使用します。直近 24 時間のヘッドラインのみ。未設定の場合、ブリーフはニュースなしで実行されます。
AI プロバイダ — AI 推奨を有効にするには少なくとも 1 つ必要
Richfolio は 3 つの AI プロバイダをサポートしています:Google Gemini、Anthropic Claude、Mistral。AI による買い推奨を利用するには、少なくとも 1 つを設定してください。2 つ以上を設定すると並列で実行され、スコアが平均化され、各推奨の横にプロバイダごとの内訳が表示されます。いずれも設定されていない場合は、ギャップベースの推奨にフォールバックします(AI なし)。
| モード | 設定 | 出力 |
|---|---|---|
| AI なし | いずれのキーも未設定 | ギャップベースの推奨のみ |
| シングル AI | 1 つのキーを設定 | 従来と同じ — ティッカーごとに 1 セットのアクション+確信度 |
| マルチ AI | 2 つ以上のキーを設定 | ティッカーごとのコンセンサスアクション+平均化された確信度。各推奨の下にプロバイダごとの内訳を表示。STRONG BUY は反対意見の距離で上限を判断 |
Google Gemini — オプション
Gemini 2.5 Flash で AI 買い推奨を提供します。
- aistudio.google.com/apikey にアクセス
- Create API Key をクリックし、Google Cloud プロジェクトを選択(または新規作成)
- キーをコピーし、GitHub Secret として追加 — 名前:
GEMINI_API_KEY、値:先ほどコピーしたキー
無料枠: 2026 年 8 月時点で、gemini-2.5-flash に対するライブの 429 エラーではクォータが1 日約 20 リクエストと報告されています(以前はここで 1 日 250 リクエストと記載していましたが、Google はこの制限を予告なく変更するため、正確な数値は aistudio.google.com/rate-limit を正とみなしてください)。Richfolio は 1 回の実行につき 2 リクエストを使用し(Stage 1 Observe + Stage 2 Decide)、さらに STRONG BUY ティッカー 1 つにつき詳細分析で 1 リクエスト、毎日のニュース関連性フィルターで 1 リクエストを追加で使用します。1 日 6 回の実行スケジュール(daily 1 回 + intraday 5 回)全体では、静かな日でも 13 リクエスト以上になるため、Gemini は後半の実行でクォータを使い切って離脱することがよくあります — その場合もブリーフ自体は送信され、デグレードしたプロバイダを示す ⚠ n/n AI バッジが付きます。新しいキーはクォータが有効化されるまで数分かかることがあります(最初は 429 エラーが出るかもしれません)。
新規作成したキーは gemini-2.5-flash を使えません。 Google は古いキーより先に新しい API キーに対してモデルを終了します。2026 年 8 月に作成したキーは 404 ... no longer available to new users を返す一方、同じモデルでも既存のキーは正常に動作します。GEMINI_MODEL 環境変数を現行モデル(例:常に最新の Flash を指すエイリアス gemini-flash-latest)に設定してください。既存キーに影響しないよう、デフォルトは gemini-2.5-flash のままにしてあります。暗号資産ワークフローでは既に設定済みです。
暗号資産スケジュール用の 2 つ目のキー: watchingCrypto を使う場合は、別途 Gemini キーを作成して GEMINI_API_KEY_CRYPTO として追加してください。暗号資産ワークフローは 1 日 8 回・各 2 リクエスト実行するため、それだけで 1 日 16 回になります。株式スケジュールと 1 つのキーを共有すると、午後になる前に両方が枯渇します。ワークフローはステップ単位でこれを GEMINI_API_KEY にマップするため、コード側は何も変わりません。さらに AI_DETAILED_PROVIDER を mistral に固定し、STRONG BUY ごとの詳細分析呼び出しが残りの余裕を食い潰さないようにしています。それでも頻繁に枯渇する場合は、crypto-monitor.yml の cron を 0 */3 * * * から 0 */4 * * * に広げてください(6 回実行 = 12 リクエスト)。
Gemini モデルティアに関する注記
Google の価格ページでは Gemini 2.5 Pro が入力/出力トークンとも「無料」であると記載されています。しかし実際には、無料枠の Pro リクエストは使用量が少なくても頻繁に 429 RESOURCE_EXHAUSTED エラーに当たります。Google は無料枠の実際の RPD(1 日あたりリクエスト数)上限を公表していません。サードパーティの情報源では Pro は約 100 RPD に制限されているかもしれないと示唆されていますが、実際の数字はアカウントによって異なるようで、保証はありません。
Richfolio はデフォルトで Gemini 2.5 Flash を使用しています。Flash の方が寛大で信頼性の高い無料枠クォータを持つためです。金融分析テキストにおける品質の差は無視できます。
Anthropic Claude — オプション
Claude(デフォルトでは Sonnet 4.6)で AI 買い推奨を提供します。認証方法は 2 通りあり、設定した方を Richfolio が使用します。
オプション 1 — Claude Pro/Max サブスクリプション(トークン課金なし)
すでに Claude Pro または Max を契約している場合、API クレジットを購入する代わりに、既存のサブスクリプション枠で Richfolio を実行できます。
- Claude Code をインストールし、サブスクリプションを持つアカウントでサインイン
- ローカルで
claude setup-tokenを実行し、出力されたトークンをコピー - GitHub Secret として追加 — 名前:
CLAUDE_CODE_OAUTH_TOKEN、値:そのトークン
これを使う場合は ANTHROPIC_API_KEY を未設定のままにしてください。 Claude Code の内部では API キーがサブスクリプショントークンより優先されるため、両方を設定すると気づかないうちに API アカウントに課金されてしまいます — まさにこのオプションが避けようとしている事態です。Richfolio はサブスクリプショントークンを優先し、サブプロセスから API キーを取り除きますが、最もクリーンな構成はどちらか一方だけを設定することです。
有効期限: 約 1 年で、自動更新はありません。Threads のトークンと違って更新ワークフローはないため、毎年 claude setup-token を再実行してください。期限が切れると Claude はその回の実行から外れます。マルチプロバイダ構成(Claude + Gemini や Mistral)では、残りのプロバイダが続行し、ブリーフは失敗ではなく ⚠ n/n AI と表示されます — ただしこのバッジはプロバイダが 2 つ以上設定されている場合にのみ表示されます。Claude だけを使っている場合、バッジを出す相手がいないため、ブリーフは黙ってギャップベースの推奨にフォールバックします。
オプション 2 — API キー(従量課金)
- console.anthropic.com にアクセスしてサインアップ
- API Keys → Create Key に移動し、名前を付けてキーをコピー
- GitHub Secret として追加 — 名前:
ANTHROPIC_API_KEY、値:先ほどコピーしたキー
料金: Anthropic には Gemini のような恒久的な無料枠はありませんが、新規アカウントには少額のスタータークレジットが付与されます。また、Richfolio のワークロードでの Sonnet 利用は通常 1 日あたり数セント程度です。コストを最小化するには CLAUDE_MODEL=claude-haiku-4-5-20251001 を設定してください(Haiku ティアは大幅に安価ですが、このワークロードを十分にこなせます)。
Mistral — オプション
Mistral Large(デフォルトでは mistral-large-latest)で AI 買い推奨を提供します。
- console.mistral.ai にアクセスしてサインアップ
- API Keys → Create new key に移動し、キーをコピー
- GitHub Secret として追加 — 名前:
MISTRAL_API_KEY、値:先ほどコピーしたキー
無料枠: Experiment ティアは恒久的に無料で、月あたり約 10 億トークン。Richfolio のワークロードは月あたり約 700 万トークンです。クレジット制ではなくレート制限型なので、上限に当たった場合の症状は課金エラーではなく 429 であり、これは自動的にリトライされます。より余裕を持たせて実行を速くしたい場合は MISTRAL_MODEL=mistral-medium-latest を設定してください(品質はわずかに下がります)。
Mistral が 2 つ目のプロバイダとして適しているのは、Gemini とは系統の異なる独立したモデルだからです。2 つ目のモデルは、その不一致がモデルの弱さではなくデータを反映している場合にのみ情報を追加します。
マルチ AI モード
GEMINI_API_KEY、Claude(CLAUDE_CODE_OAUTH_TOKEN または ANTHROPIC_API_KEY)、MISTRAL_API_KEY のうち 2 つ以上が設定されている場合、Richfolio は分析ごとに該当プロバイダを並行実行し、結果を集約します:
- ティッカーごとのコンセンサスアクションを多数決で決定(同数の場合は確信度の合計で同点を解消)
- 平均化された確信度を目立たせて表示し、その下にプロバイダごとのスコアを表示
- STRONG BUY は反対意見の「距離」で上限を判断 — 反対しているプロバイダがすべて 1 段階以内(反対が
BUYなら方向性は一致している)であれば STRONG BUY はそのまま維持され、1 つでもそれより離れた場合(HOLD/WAIT)は BUY に上限が下がります。SB + SB + BUYは維持、SB + SB + HOLDは上限が下がります - アクションの隣に合意ラベル(unanimous/majority/split)をバッジで表示
集約後のアクションはゲートではなく要約です。各プロバイダのアクション・確信度・理由はそのすぐ下に表示され、いずれかのプロバイダが STRONG BUY と判断したティッカーは、上限が下がったかどうかに関係なく、詳細分析ページ・「More Details」リンク・指値・テクニカル行のすべてを保持します。投票内容を見て、判断するのはあなたです。
代わりに全会一致を要求する(どんな反対でも STRONG BUY を BUY に下げる)場合は、config.json に "ai": { "strongBuyRequiresAllProviders": true } を設定してください。
実行中にあるプロバイダが失敗した場合(レート制限、クォータ枯渇、ネットワークエラー)、残りのプロバイダがそれなしで続行します。その回はデグレードとして扱われ、すべての推奨にメールでは ⚠ 1/2 AI のようなバッジ(Telegram ではタグ)が付きます。単独プロバイダの投票が、クロスチェック済みのものと同じに見えてはいけないからです。アクション自体はデフォルトでは変更されません — 応答しなかったプロバイダは、どの距離においても「反対」ではないためです。strongBuyRequiresAllProviders を有効にしている場合のみ、デグレード時の STRONG BUY も上限が下がります。プロバイダを 1 つしか設定していない場合は該当しません。その構成はそもそも比較を約束していないからです。
STRONG BUY 詳細分析ページを生成するプロバイダの選択
複数のプロバイダが有効な場合、STRONG BUY ごとの分析ページ(「More Details」リンク)は単一のプロバイダによって生成されます — デフォルトではレジストリ順で最初に利用可能なもの(Gemini、次に Claude、次に Mistral)。次の環境変数で上書きできます:
| 環境変数 | 値 | 効果 |
|---|---|---|
AI_DETAILED_PROVIDER | gemini | 詳細分析を Gemini に強制(GEMINI_API_KEY の設定が必要) |
AI_DETAILED_PROVIDER | claude | 詳細分析を Claude に強制(CLAUDE_CODE_OAUTH_TOKEN または ANTHROPIC_API_KEY の設定が必要) |
AI_DETAILED_PROVIDER | mistral | 詳細分析を Mistral に強制(MISTRAL_API_KEY の設定が必要) |
MISTRAL_MODEL | mistral-medium-latest | より安価で高速な Mistral モデル(デフォルト:mistral-large-latest) |
CLAUDE_MODEL | 例:claude-haiku-4-5-20251001 | Claude モデルを上書き(デフォルト:claude-sonnet-4-6) |
キーが設定されていないプロバイダ(または不明な名前)を AI_DETAILED_PROVIDER に指定した場合は、ログに記録された上で無視され、レジストリ順にフォールバックします。API キーのないプロバイダを固定すると、すべてのティッカーで失敗してしまうためです。
Telegram ボット — オプション
Telegram アカウントに凝縮されたサマリーを配信します。
ボットを作成
- Telegram を開き、@BotFather を検索
/newbotを送信- 名前(例:「Richfolio Brief」)とユーザー名(
botで終わる必要があります、例:richfolio_brief_bot)を選択 - BotFather がボットトークンを返信します — コピーしてください
chat ID を取得
- Telegram で @userinfobot を検索して起動
- 数値のユーザー ID が返ってきます — これがあなたの chat ID です
重要: Richfolio を実行する前に、新しいボットに何かメッセージ(例:「hi」)を送ってください — ボットがあなたにメッセージを送れるようになる前に必要です。
両方を GitHub Secret として追加します:
- 名前:
TELEGRAM_BOT_TOKEN、値:BotFather からのトークン - 名前:
TELEGRAM_CHAT_ID、値:あなたの数値ユーザー ID
注意: 未設定の場合、ブリーフは Telegram をスキップします。メッセージは凝縮されたサマリー(フル HTML ではない)です。1 メッセージあたり 4,096 文字の制限 — 必要に応じてニュースが切り詰められます。
ソーシャル投稿 — オプション
Richfolio は汎用的な買いシグナルを X、Facebook、Threads、LinkedIn の公開アカウントに投稿できます。すべてのプラットフォームはオプションで、設定するまではオフのままです。プラットフォームごとに必要な Secret:
- Facebook:
FACEBOOK_PAGE_ID、FACEBOOK_PAGE_TOKEN - Threads:
THREADS_USER_ID、THREADS_ACCESS_TOKEN(+ 約 60 日のトークンを自動リフレッシュするためのオプションのTHREADS_TOKEN_PAT) - LinkedIn:
LINKEDIN_ACCESS_TOKEN、LINKEDIN_ORG_URN - X/Twitter:
X_API_KEY、X_API_SECRET、X_ACCESS_TOKEN、X_ACCESS_TOKEN_SECRET
注意: 投稿は汎用的です — 保有や配分は一切開示されません。未設定の場合、ソーシャル投稿はスキップされます。各プラットフォームの手順ごとのセットアップはソーシャル投稿を参照してください。
まとめ
| キー | 必須 | サービス |
|---|---|---|
RESEND_API_KEY | はい | メール配信 |
RECIPIENT_EMAIL | はい | あなたのメールアドレス |
NEWS_API_KEY | いいえ | ニュースヘッドライン |
GEMINI_API_KEY | いいえ | AI プロバイダ(Google Gemini) |
GEMINI_API_KEY_CRYPTO | いいえ | 暗号資産ワークフロー専用の 2 つ目の Gemini キー。1 日 8 回のスケジュールに独立したクォータを与えます |
CLAUDE_CODE_OAUTH_TOKEN | いいえ | AI プロバイダ(Anthropic Claude、Pro/Max サブスクリプション経由) |
ANTHROPIC_API_KEY | いいえ | AI プロバイダ(Anthropic Claude、従量課金 API キー経由) |
MISTRAL_API_KEY | いいえ | AI プロバイダ(Mistral — 無料の Experiment ティア) |
TELEGRAM_BOT_TOKEN | いいえ | Telegram 配信 |
TELEGRAM_CHAT_ID | いいえ | Telegram 配信 |
FACEBOOK_PAGE_ID / FACEBOOK_PAGE_TOKEN | いいえ | Facebook ページ投稿 |
THREADS_USER_ID / THREADS_ACCESS_TOKEN | いいえ | Threads 投稿 |
THREADS_TOKEN_PAT | いいえ | Threads トークンの自動リフレッシュ(Secrets 書き込み権限を持つ PAT) |
LINKEDIN_ACCESS_TOKEN / LINKEDIN_ORG_URN | いいえ | LinkedIn ページ投稿 |
X_API_KEY / X_API_SECRET / X_ACCESS_TOKEN / X_ACCESS_TOKEN_SECRET | いいえ | X/Twitter 投稿 |
CLAUDE_MODEL | いいえ | Claude モデルを上書き(デフォルト:claude-sonnet-4-6) |
MISTRAL_MODEL | いいえ | Mistral モデルを上書き(デフォルト:mistral-large-latest) |
AI_DETAILED_PROVIDER | いいえ | STRONG BUY 分析ページに gemini、claude、mistral のいずれかを強制 |