morning-ai: MorningAI レポート生成ツール
権限の概要: Reddit、Hacker News、GitHub、HuggingFace、arXiv、X/Twitterから公開データを収集します。
.envまたは~/.config/morning-ai/.envにオプションのAPIキーを設定する必要があります。レポートファイルを作業ディレクトリに書き込みます。詳細は設定を参照してください。
80以上のAIエンティティを6つの情報源から追跡します。過去24時間の更新情報を収集し、スコアリングと重複排除を行い、構造化されたMarkdown形式の日次レポートを生成します。4つのタイプをカバーします: 製品(機能リリース、バージョンリリース)、モデル(新規モデル、オープンソース重み)、ベンチマーク(リーダーボードの変更、論文)、資金調達(ラウンド、買収、マイルストーン)。
--intro — 製品紹介
ユーザーが --intro を渡した場合、以下の紹介文を表示して停止します(データ収集に進みません):
MorningAI — 80以上のエンティティを6つの情報源から監視する、日次AIニューストラッカー。
機能:
- Reddit、Hacker News、GitHub、HuggingFace、arXiv、X/Twitterから更新情報を収集
- 1〜10のスケールでスコアリング、重複排除、クロスソース検証を実施
- 4つのコンテンツタイプ(製品、モデル、ベンチマーク、資金調達)で構造化されたMarkdownレポートを生成
- オプション: インフォグラフィック画像(5つのビジュアルスタイル)、メッセージダイジェスト(WeChat/Telegram/Slack)、SNS投稿文(X/小红书)
情報源(すべて無料、基本使用にAPIキーは不要):
| 情報源 | 方法 | APIキー |
|---|---|---|
| 公開JSON | 不要 | |
| Hacker News | Algolia API | 不要 |
| GitHub | REST API | オプション(GITHUB_TOKEN でレート制限緩和) |
| HuggingFace | 公開API | 不要 |
| arXiv | 公開API | 不要 |
| X/Twitter | Web検索 | 不要 |
クイックスタート:
/morning-ai # デフォルトで実行(英語、全タイプ)
/morning-ai --lang zh # 中国語レポート
/morning-ai --depth deep # 包括的収集
/morning-ai --exclude Funding # 資金調達ニュースをスキップ
オプション機能(APIキーが必要):
- インフォグラフィック画像:
IMAGE_GEN_PROVIDER+ プロバイダーAPIキーを設定 - SNS投稿文:
SOCIAL_ENABLED=trueを設定 - メッセージダイジェスト:
MESSAGE_ENABLED=trueを設定
設定ファイル: ~/.config/morning-ai/.env — /morning-ai を設定なしで実行すると、ガイド付きセットアップが起動します。
バージョン: 1.2.9 | GitHub | ClawHub
紹介文を表示した後、停止します。ステップ0やデータ収集に進まないでください。
ステップ0: 設定ゲート(必須 — 他のステップの前に必ず完了すること)
他のことを行う前に、このコマンドを最初に実行してください:
if [ -f "$HOME/.config/morning-ai/.env" ] || [ -f ".claude/morning-ai.env" ] || [ -f ".env" ]; then echo "CONFIG_STATUS=READY"; else echo "CONFIG_STATUS=MISSING"; fi
出力に応じて分岐:
- 出力が
CONFIG_STATUS=READYの場合 — 設定ファイルを読み込み、アクティブな情報源を報告してから、ステップ1に進みます。 - 出力が
CONFIG_STATUS=MISSINGの場合 — 停止。ステップ1に進む前に、以下の初回セットアップを完了する必要があります。
初回セットアップ(MISSING の場合)
重要: ここで停止。 以下のセットアップ手順はすべて、ユーザーと対話的に完了する必要があります。 設定ファイルが存在し、ゲートチェックが
READYを返すまで、ステップ1(データ収集)を実行しないでください。 設定なしでデータ収集を実行すると、不完全な結果になります。
各ステップでユーザーの応答を待ちながら、対話的にセットアップを進めてください:
- ようこそ — MorningAIの機能を簡単に説明します: 80以上のAIエンティティを6つの情報源(Reddit、Hacker News、GitHub、HuggingFace、arXiv、X/Twitter)から追跡し、スコアリングされた日次レポートを生成します。
- 無料で使える機能を表示 — 6つの情報源(5つはAPIキー不要、1つはオプション):
- Reddit(公開JSON)、Hacker News(Algolia API)、HuggingFace(公開API)、arXiv(公開API)、X/Twitter(Web検索)
- GitHub(公開API、オプションの
GITHUB_TOKENでレート制限緩和)
- ユーザーに確認 GitHubのレート制限を緩和するかどうか:
| キー | 情報源 | 取得先 |
|---|---|---|
GITHUB_TOKEN | GitHubリリースとリポジトリ(レート制限緩和) | https://github.com/settings/tokens |
- インフォグラフィックについて確認(オプション):
| キー | 説明 |
|---|---|
IMAGE_GEN_PROVIDER | プロバイダー: gemini |
IMAGE_STYLE | スタイル: classic |
GEMINI_API_KEY | Google Gemini/Imagen(https://aistudio.google.com/apikey) |
MINIMAX_API_KEY | MiniMax global(https://www.minimax.io) |
MINIMAX_API_KEY | MiniMax cn(https://platform.minimaxi.com) |
-
SNSコンテンツ配信について確認(オプション):
- SNSコンテンツ生成を有効にしますか?
SOCIAL_ENABLED=trueを設定 - どのプラットフォームですか? X(Twitter)、小红书(Little Red Book)、または両方
- 高度なマルチアカウント/マルチスタイル設定の場合、
~/.config/morning-ai/social_channels.jsonを作成します(スキーマはskills/gen-social/SKILL.mdを参照)。クイックシングルチャンネル設定の場合は、SOCIAL_PLATFORM、SOCIAL_STYLE、SOCIAL_LANGの環境変数を設定するだけです。
- SNSコンテンツ生成を有効にしますか?
-
メッセージダイジェストについて確認(オプション):
- メッセージングプラットフォーム(WeChat、Telegram、Slack)で共有するための簡潔なメッセージダイジェストを有効にしますか?
- はいの場合:
MESSAGE_ENABLED=trueを設定 - オプション設定:
MESSAGE_MIN_SCORE(デフォルト5)、MESSAGE_MAX_ITEMS(デフォルト10)、MESSAGE_LINKS(bottomまたはinline)、MESSAGE_CATEGORY_BALANCE(デフォルトtrue、コンテンツタイプ間でスロットを分散)
-
設定ファイルを作成 — ユーザーが提供したキーを収集し、
~/.config/morning-ai/.envにKEY=value形式(1行に1つ)で書き込みます。必要に応じてディレクトリを作成:mkdir -p ~/.config/morning-ai -
確認 — アクティブになった情報源の数を表示(N/9)
-
検証 — ゲートチェックを再実行して
CONFIG_STATUS=READYを確認:if [ -f "$HOME/.config/morning-ai/.env" ] || [ -f ".claude/morning-ai.env" ] || [ -f ".env" ]; then echo "CONFIG_STATUS=READY"; else echo "CONFIG_STATUS=MISSING"; fi出力が
READYの場合のみステップ1に進みます。 -
ユーザーがAPIキーの設定をスキップして無料の情報源のみを使用したい場合は、最初に最小限の設定ファイルを作成してからステップ1に進みます:
mkdir -p ~/.config/morning-ai && echo "# morning-ai config — free sources only" > ~/.config/morning-ai/.env
言語
| パラメータ | デフォルト | 例 |
|---|---|---|
--lang | en(英語) | --lang zh(中国語)、--lang ja(日本語) |
ルール:
- デフォルトは英語です。
--langが明示的に指定されない限り、レポートはすべて英語で記述する必要があります。 タイトル、要約、セクションヘッダー、テーブルラベル、箇条書き、「Why It Matters」分析、その他すべての人間が読むコンテンツは英語で記述してください。 --langが指定された場合、すべての人間が読むコンテンツにその言語を使用します。- エンティティ名は固有名詞です(OpenAI、DeepSeek、Midjourney など)— 言語に関係なくそのままにしてください。
- ソースデータがターゲット言語と異なる場合(例: 中国語のソース → 英語のレポート)、レポート生成中に翻訳してください。翻訳されていない断片を残さないでください。
--lang設定はインフォグラフィックのプロンプトコンテンツにも適用されます(ステップ4を参照)。
前提条件: ステップ0で
CONFIG_STATUS=READYが返されている必要があります。ステップ0を完了していない場合は、戻って実行してください。
ステップ1: データ収集
Pythonコレクターを実行して、自動化された情報源からデータを収集します:
cd {SKILL_DIR} && python3 skills/tracking-list/scripts/collect.py --date {YYYY-MM-DD} --depth default -o {CWD}/data_{YYYY-MM-DD}.json
パラメータ:
--date: 対象日、デフォルトは今日(YYYY-MM-DD)--depth: 収集の深さ —quick(高速、結果が少ない)、default、deep(包括的)--sources: 特定の情報源のみ、例:--sources reddit hackernews github-o: 出力JSONファイルパス
機能:
- 5つのコレクターを同時に実行(Reddit、HN、GitHub、HuggingFace、arXiv)
- 時間枠:
[昨日08:00、今日08:00) UTC+8 - パイプライン: 収集 → スコアリング(1-10) → 重複排除 → クロスソースリンク → 検証ボーナス
- すべてのアイテム、統計、収集メタデータを含む構造化JSONを返す
タイムアウト: デフォルトの深さで最大3分、深い場合は最大5分を許可します。
ユーザーが --exclude タイプ(例: --exclude Funding)を指定した場合、ステップ3でフィルタリングするタイプをメモします。
X/Twitter検索
自動収集が完了したら、Web検索を使用して、追跡対象エンティティからの最近のX/Twitter更新情報を発見します。追跡対象のXハンドルは {SKILL_DIR}/lib/entities.py の X_HANDLES にリストされています。
検索戦略: マルチレイヤーアカウントチェック
X/Twitterを3つのレイヤーで優先順位順に検索:
レイヤー1 — 公式アカウント(最優先):
公式の企業/製品アカウントからの最近の投稿を検索します。ハンドルは {SKILL_DIR}/entities/ のエンティティファイルにリストされています。
- 焦点: モデルリリース、製品ローンチ、APIアップデート、価格変更
レイヤー2 — CEO / 主要人物アカウント: 主要人物のアカウントで、公式アカウントがカバーしない可能性のある発表、プレビュー、コンテキストを確認します。各エンティティファイルの「Key People」としてリストされています。
- 焦点: 初期プレビュー、戦略的コンテキスト、技術的詳細、競合に関するコメント
レイヤー3 — KOLとベンチマーク機関:
独立した分析、ベンチマーク結果、話題のディスカバリーについて、AIオピニオンリーダーと評価アカウントを確認します。{SKILL_DIR}/entities/kol.md と {SKILL_DIR}/entities/benchmarks-academic.md を参照してください。
- 焦点: 論文ハイライト、ベンチマークランキング、コミュニティトレンド、独立テスト
検索の実行
各検索の深さについて:
| 深さ | レイヤー1(公式) | レイヤー2(関係者) | レイヤー3(KOL) |
|---|---|---|---|
quick | 優先順位で上位5エンティティ | スキップ | スキップ |
default | すべての主要エンティティ(約20) | トップCEOアカウント(約10) | トップKOL(約5) |
deep | Xハンドルを持つすべてのエンティティ | すべての関係者アカウント | すべてのKOL + ベンチマークアカウント |
以下のようなWeb検索クエリを使用:
site:x.com @{handle} since:{昨日}— 特定のアカウントの投稿site:x.com "{エンティティ名}" AI announcement— より広範な発見site:x.com AI model release OR benchmark OR open-source {日付}— トレンドのAIニュース
RT/引用ツイートの処理
発見された投稿がリツイート(RT)または引用ツイートの場合:
- 元の投稿をトレース — イベントのタイムスタンプは、RT/引用の時間ではなく、元の投稿時間です
- 元の投稿時間が24時間の収集ウィンドウ
[昨日08:00、今日08:00) UTC+8内にあることを検証 source_urlにはRT/引用のURLではなく、元の投稿URLを使用source_labelで元の作成者をクレジット(例:"@AnthropicAI on X(@karpathy RT経由)")
適時性の検証
- すべてのX投稿時間は、ウィンドウ検証のためにUTC+8に変換する必要があります
- 収集ウィンドウは
[昨日08:00、今日08:00) UTC+8です - このウィンドウ外の投稿は拒否されます — 関連性に関わらず含めないでください
- RT/引用ツイートの場合は、リツイート時間ではなく元の投稿時間を検証してください
Xソースアイテムのソース優先度
| 優先度 | ソースタイプ | 信頼性 |
|---|---|---|
| 1 | 公式ブログ / チェンジログ | 最高 |
| 2 | 公式X/Twitterアカウント | 高 |
| 3 | APIチェンジログ / ドキュメント | 高 |
| 4 | 公式GitHubリリース | 高 |
| 5 | CEO / 主要人物Xアカウント | 中高 |
| 6 | ベンチマーク機関Xアカウント | 中 |
| 7 | KOL Xアカウント | 参考のみ — クロス検証が必要 |
KOLアカウント(優先度7)のみからソースされたアイテムは、控えめにスコアリングし、公式ソースとのクロス検証のためにフラグを立てる必要があります。
X発見結果の組み込み
検証された各X/Twitter更新について:
source: "x"、source_urlを元のツイートへのポインタ、source_labelを"@{handle} on X"として、TrackerItemを作成します- 同じイベントが既に自動コレクター(Reddit、HN、GitHubなど)によって発見されている場合は、重複を作成するのではなく、
cross_refとしてマージします — これにより検証スコアが強化されます - 自動データにない真に新しい発見である場合は、適切なスコアリングで新しいアイテムとして追加します
ステップ2: 仕様書を読む
データ収集が完了したら、トラッキング仕様書を読んで、スコアリング基準、レコード形式、適時性ルールを理解します:
Read {SKILL_DIR}/skills/tracking-list/SKILL.md
この仕様書は以下を定義しています:
- 4つのトラッキングタイプ(製品/モデル/ベンチマーク/資金調達)と包含/除外基準
- ソース優先度ランキング
- スコアリング基準(5次元の1-10スケール)
- 適時性検証ルール(イベント日 ≠ ページ日)
- クロス検証要件(7以上のスコアには2つ以上の独立したソースが必要)
- レポートのレコード形式
レポートを作成する前に仕様書を十分に理解してください。 スコアリング参照テーブルとタイプ分類ガイドに特に注意してください。
ステップ3: レポートを生成する
- ステップ1のJSON出力を読み込む
- レポートテンプレートを読む:
Read {SKILL_DIR}/templates/report.md - 作業ディレクトリに
report_{YYYY-MM-DD}.mdを生成する
レポート生成ルール:
- 言語: デフォルトは英語です。
--langが明示的に指定されない限り、すべてのコンテンツを英語で記述してください。ソースデータが異なる言語の場合は翻訳してください。エンティティ名(固有名詞)はそのままにします。 - ソースリンク: すべてのアイテムには、元のコンテンツを指すクリック可能なソースリンク
[ソース名](URL)を含める必要があります。これはTLDR、詳細エントリ、コンパクトテーブル行など、すべてのセクションに適用されます。 - 詳細品質: 要約箇条書きには、バージョン番号、改善率、パラメータ数、価格、可用性日付、ベンチマークスコアなど、具体的な詳細を含める必要があります。具体的な数値のないあいまいな説明は避けてください。
- 事実検証可能性: スコアが7以上のアイテムは、少なくとも2つの独立したソースで検証する必要があります。各検証済みアイテムについて、レポートの該当エントリにクロス参照をリストしてください。
- スコアリング参照: 仕様書のスコアリングテーブルに従って、1〜10のスコアを割り当てます。各スコアに影響を与える要因を説明する正当化を提供します。
- タイプ分類: 各アイテムを正確に4つのタイプ(製品、モデル、ベンチマーク、資金調達)の1つに分類します。タイプ分類ガイドに従って、不適切な分類を回避します。
ステップ4: オプションの後処理
設定で有効になっている場合、レポート生成後にオプションのステップを実行します。
これらのスキルのドキュメントは {SKILL_DIR}/skills/ にあります:
gen-image/SKILL.md— インフォグラフィック画像生成gen-social/SKILL.md— SNS配信gen-message/SKILL.md— メッセージダイジェスト
ユーザーの設定で有効になっている機能のみを実行します。チェックしてください:
IMAGE_GEN_PROVIDERが設定されている → gen-imageを呼び出すSOCIAL_ENABLED=true→ gen-socialを呼び出すMESSAGE_ENABLED=true→ gen-messageを呼び出す
インフォグラフィック画像(gen-image)
gen-imageスキルのドキュメントを読み、適切なパラメータで呼び出します:
IMAGE_GEN_PROVIDERを使用して画像生成プロバイダーを選択IMAGE_STYLEを使用してビジュアルスタイルを選択- レポートデータを入力として渡す
--langが指定されている場合は、プロンプトにその言語を使用
SNS配信(gen-social)
gen-socialスキルのドキュメントを読み、適切なパラメータで呼び出します:
SOCIAL_PLATFORMとSOCIAL_STYLEを渡す--langが指定されている場合は、それに従って言語を設定- 簡単な設定の場合は環境変数を使用、高度な設定の場合は設定ファイルを参照
メッセージダイジェスト(gen-message)
gen-messageスキルのドキュメントを読み、適切なパラメータで呼び出します:
MESSAGE_MIN_SCORE(デフォルト5)で最小スコアを設定MESSAGE_MAX_ITEMS(デフォルト10)で最大アイテム数を設定MESSAGE_LINKSでリンク配置(bottomまたはinline)を制御MESSAGE_CATEGORY_BALANCE(デフォルトtrue)でコンテンツタイプ間のバランスを確保