AI News HubLIVE
サイト内リライト2 分で読了

Show HN: Hacker Newsletterなどをフィルタリングして読むためのAIスキル

設定済みのGmailニュースレターを日付または日付範囲で読み取るCodexスキル。デコード済みのテキストMIMEパーツをそのままモデルに渡し、リンクフィルタリング用の指示に基づいてレポートを生成します。ローカルで動作する読み取り専用Gmailデーモンを含み、ブラウザのlocalStorageにフィードバックを保存してJSONでエクスポートできます。

ソースHacker News AI著者: miros_love

このプロジェクトは、Gmail から設定済みのニュースレターを読み取るための Codex スキル「email-reader」を提供するものです。実装の詳細として、ローカルで動作する読み取り専用の Gmail デーモンが含まれていますが、通常は日付または日付範囲を指定してスキルを呼び出すだけでよく、デーモンを直接操作する必要はありません。スキルはデーモンを起動し、指定期間中に設定済みの送信者から届いたすべてのメッセージを取得し、デコード済みの text/plain および text/html MIME パーツをモデルに渡します。レポートの選択や整形、フィードバック収集には .agents/skills/email-reader/LINK_FILTERING_INSTRUCTIONS.md が使われます。

Codex で使う際は、$email-reader 2026-06-27 のように日付を指定するか、$email-reader 2026-06-01 2026-06-27 のように範囲を指定します。スキルは scripts/fetch_messages.py を実行し、メッセージのメタデータとデコード済みのテキスト MIME パーツを返します。レポートの作成時、モデルがこれらのパーツを解釈しますが、取得スクリプト自体は内容の選択、クリーニング、書き換えを行いません。生成されたレポートは、リンクごとのフィードバックをブラウザの localStorage に保存し、Report.feedback.json にエクスポートして後で設定を更新することもできます。

設定手順は次のとおりです。プロジェクトルートに .env ファイルを作成し、ALLOWED_SENDER、GMAIL_OAUTH_CREDENTIALS_PATH、HOST、PORT を指定します。OAuth クライアントファイルは Google Cloud Console で取得します。Gmail API を有効にし、OAuth 同意画面を設定し、テストモードの場合は自分の Gmail アカウントをテストユーザーに追加します。続いて「デスクトップアプリ」タイプのクライアントを作成して JSON をダウンロードし、gmail_client_secret.json にリネームしてプロジェクトルートに配置します。プロジェクトでは、インストール済みデスクトップアプリ用の OAuth クライアント JSON を使用する必要があり、API キーやサービスアカウント JSON は使えないと明記されています。スコープは https://www.googleapis.com/auth/gmail.readonly です。

ローカルデーモンは、まず uv sync --locked で依存関係をインストールし、その後 UV_CACHE_DIR=/tmp/uv-cache uv run --locked python -m email_reader のように起動します。最初の /messages リクエストが来ると、デーモンはデフォルトブラウザで OAuth 認証 URL を開きます。Google 認証が完了すると、ローカル OAuth トークンは .gmail_token.json に保存されます。古いトークンや失効したトークンを Google が拒否した場合は、デーモンが自動的に再認証を行い、旧トークンをバックアップとして保持します。Google に「Access blocked: this app has not completed the Google verification process」と表示された場合は、時間を置いて再試行する必要があります。新しい OAuth アプリ設定やテストユーザーの変更が反映されるまで、最大 24 時間かかることがあります。API は curl でも利用でき、たとえば次のようにアクセスできます。curl 'http://127.0.0.1:4873/messages?start_date=2026-06-01&end_date=2026-06-27'。このプロジェクトは MIT ライセンスで公開されています。