GmailのScholar通知をGitHub Projectsで管理する
Google Scholarからのフロー情報(通知メール)を、タスク管理可能なストック情報(GitHub Issue)へと変換し、GUI/CLIの両面から活用するシステムを構築しました。
GitHub Projectsを用いることで人間とClaude Codeの両者にとって扱いやすいUIで管理することを意図しています。
システムは具体的に以下の3層構造で設計されています。
1. 入力・分類層 (Gmail): メールサービスのフィルタ機能を用い、非構造化データであるメールに対して、著者やトピックごとのタグ付け(ラベリング)による事前分類を行います。
2. 変換・連携層 (Google Apps Script): 定期バッチ処理により、HTMLメールからの書誌情報抽出、外部APIを用いたメタデータ(Open Access状況等)の付与、および重複排除を行うETL処理を担当します。
3. 管理・操作層 (GitHub):
GUI: GitHub Projects (Kanban) を用いた、ドラッグ&ドロップによる視覚的なステータス管理。
CLI: テキストベースのIssueとして永続化することで、gh コマンドやClaude Code等のAIエージェントからの操作を可能にします。
https://gyazo.com/c5f8edcc87dc68d8645f0209e0ad3352
背景と課題
研究活動において、Google Scholar Alertは特定のキーワードや著者の新着論文を網羅的にキャッチアップできる非常に強力で有用なツールです。
しかし、日々届く大量の通知を「メールの受信トレイ」や「Gmailのラベル」だけで管理し続けることには限界がありました。
以前はGASを用いてスプレッドシートに転記しリスト化する試みを行っていました。
Gmail上でラベル分けされたScholarアラートから文献リストを生成するGoogle Apps Script(試作)
しかし、表計算ソフトでは、厳密に構造化されているゆえの管理のしにくさがありました。
メモが書きにくい: 個別の論文に対する翻訳や関連情報、アイデアなどを書きにくい。
ステータス管理が困難: 動的なステータス管理を扱いにくい。
これらの課題を解決し、通知を受け取るだけでなく「読み、記録し、消化する」プロセス全体を最適化するためにGitHubへの移行を行いました。
GitHub Projecrts:GUIとCLIとしての扱いやすさ
移行の主な理由は、GitHub Issueの方がデータを入出力するインターフェースとして優れているためです。
GUI
可読性: Markdownでレンダリングされるため、要約や数式が読みやすいです。
状態管理: Projects (Kanban) により、Backlog, Ready, In Progressといったステータスをドラッグ&ドロップで操作できます。
議論: Comment機能により、論文に対するメモやCritiqueを時系列で残せます。
CLI
スプレッドシートはCLIからの操作が面倒ですが、GitHub Issueはテキストベースのためコマンドラインツールとの親和性が高いです。
特に、Claude Code などのAIエージェントに操作を任せることを想定しています。
構成
分類ロジックはGmail、GASはデータの運搬役、UIはGitHubに任せる設計です。
1. Gmail: Scholarアラートを受信します。フィルタ機能で著者やキーワードごとにラベルを振ります。
GmailでGoogle ScholarのAlertを作者別に自動ラベル振り分けする
2. GAS: 定期的にGmailを巡回します。
HTMLをパースしてメタデータを抽出
Unpaywall API等でOA状況を確認
GitHub APIを叩いてIssueを作成(重複排除含む)
3. GitHub Projects: 作成されたIssueをKanbanで表示します。
生成されるIssueの構造
GASによって自動生成されるMarkdownは、以下のようなスキーマで統一されています。
タイトル、メタデータリスト、要約(翻訳と原文)で構成され、機械可読性と人間可読性を両立しています。
code: (markdown)
## {論文の英語タイトル}
- **Authors:** {著者リスト}
- **Venue:** {掲載誌・学会名}
- **Year:** {発行年}
- **OA Status:** {OAステータス (gold/green/closed)}
- **Label:** {検索元のGmailラベル}
- **Source URL:** {論文の公式URL}
- **OA URL:** {PDFへの直リンク (Unpaywall等で取得)}
## 概要
{Abstractの日本語自動翻訳}
{Abstractの英語原文}
作成手順・運用方針
tomiokario/my-paper-reading-list |GitHubを参照
※ 後日,Closeにする可能性があります.その際は,必要情報をCosense上に再掲します.