SereneReader APIを使ったオートメーションの構築
なぜ読書をオートメーション化するのか
RSSはすでに多くのソースのコンテンツを一か所にまとめてくれます。SereneReader APIを使えば、そのコンテンツをスクリプトやcronジョブ、その他のツールに取り込むことができます。
認証は単一のAPIキーで行います。キーを作成し、各HTTPリクエストに付与するだけで、JSONが返ってきます。APIは読み取り専用でWebhookはないため、スクリプトはスケジュールに従ってポーリングする形になります。
はじめに
APIアクセスはPro(ウェブで月額$5)およびTeamプランに含まれています。
APIキーの作成
SereneReaderで設定を開き、APIタブを選択します。キーを作成して、後で識別できる名前を付け、安全な場所にコピーしてください。キーは一度しか表示されません。Proアカウントは最大5つ、Teamアカウントは最大10つのキーを持つことができます。
認証
すべてのリクエストで、AuthorizationヘッダーにBearerトークンとしてキーを付与する必要があります。クライアントID、リフレッシュトークン、スコープはありません。設定のAPIタブにはベースURL、エンドポイント、リクエストの例が記載されています。
レート制限
APIはアカウントごとに1分間30リクエストまで許可しており、すべてのキーで共有されます。スケジュール実行のスクリプトには十分な量です。各レスポンスにはX-RateLimit-Remainingヘッダーが含まれます。制限を超えた場合、APIは429とRetry-Afterヘッダーを返します。そこに示された秒数待ってから再試行してください。
できること
APIはあなたの記事とサブスクリプションへの読み取りアクセスを提供します。
GET /api/v1/articlesはフィードの記事を新しい順に返します。フィード、フォルダ、公開日でフィルタリングでき、ページングにも対応しています(デフォルトはリクエストあたり50件、最大200件)。各記事にはタイトル、URL、フィード名、著者、公開日、スニペット、既読・スター状態が含まれます。GET /api/v1/feedsはサブスクリプションの一覧を未読数およびフォルダとともに返します。GET /api/v1/usageは使用中のキーが過去1時間、8時間、24時間に行ったリクエスト数を表示します。
パラメータとレスポンスフィールドの完全な一覧は、設定のAPIタブにあります。
活用例
毎日のダイジェストメール
毎朝7時に実行するスクリプトを作成し、前日の記事を取得してサマリーメールを送信します。日付でフィルタリングし、JSONをjqに通してタイトルとURLを抽出し、普段使っているメールや通知ツールで送信します。
フィード監視チェック
フィードは壊れることがあります。ドメインの期限切れ、パスの変更、サーバーのダウンなどです。APIはフェッチエラーやフィードの最終公開日時を報告しませんが、週次スクリプトで静かになったフィードを検出することはできます。フィードの一覧を取得し、feedIdとsinceパラメータを使って各フィードの最近の記事をリクエストし、数週間以内に何も公開されていないフィードにフラグを立てます。フィードが多い場合は、レート制限を超えないようにリクエストのペースを調整してください。
静かなフィードが必ずしも壊れているとは限りませんが、確認すべきブログのリストとして活用できます。
他のツールへのエクスポート
記事をローカルデータベース、Notionページ、Obsidianのvault、またはスプレッドシートに取り込みます。APIは構造化されたJSONを返すため、変換は通常jqの数行またはPythonの短いスクリプトで完結します。
AIエージェントとの連携
APIはHTTPリクエストを実行できるAIツールと連携します。OpenClawのようなアシスタントを使用している場合、SereneReaderにアクセスさせてフィードを処理させることができます。詳細は別の記事に書いています:RSSフィードをAIエージェントに接続する方法。
さらなるアイデア
数行で実現できるアイデアをいくつか紹介します。特定のフォルダの当日の記事をメールで送るcronジョブ、/api/v1/feedsから未読数を合計するシェルエイリアス、特定のフィードの新着記事をSlackチャンネルに投稿するポーリングスクリプトなどです。
これらにフレームワークは不要です。curlとjqでほとんどのケースに対応でき、残りはHTTPクライアントを持つ任意の言語で対応できます。
設定のAPIタブからキーを作成してください。