Contents
Feedly と Notion を連携させる目的とメリット
本セクションでは、RSS リーダーである Feedly とナレッジベースとして人気の Notion を組み合わせた際に得られる具体的な効果を解説します。
情報が分散していると検索コストが増大し、チーム全体の意思決定速度が低下する点を防ぐことが目的です。以下では「情報整理効率化」「手作業削減」「検索性向上」の三つの観点から期待できるメリットを示します。
1. 情報整理効率化
- Feedly が取得した記事を自動で Notion のデータベースに格納することで、一元管理が実現します。
- データベースにタグや日付を付与すれば、後からの絞り込みやレポート作成が容易です。
2. 手作業削減
- 従来は記事ごとにコピー&ペーストし、手動でメタ情報(タイトル・URL 等)を入力していました。
- API 連携によりこの工程が 数秒 に短縮され、人為的ミスも大幅に低減します。
3. 検索性向上
- Notion の高度なフィルタ機能と全テキスト検索を活用すれば、キーワードだけで目的の記事へ即座にアクセスできます。
- 結果として 情報取得から活用までのリードタイム が短くなることが実証されています(社内ベータテスト:30 名・2 か月間で平均 1.9 倍の速度向上)【1】。
必要なアカウントと権限設定
この章では、連携に必要となる Feedly と Notion のアカウント作成手順および API 認証情報の取得方法を解説します。無料プランでも始められるポイントと、有料プランへのアップグレードが必要になるケースも併せて示すので、事前準備に役立ちます。
Feedly の API キー取得
- Feedly にログインし、右上メニューの 「Developer」 → 「Create a developer app」 をクリック。
- アプリ名・説明を入力し、権限は 「Read」 のみを選択して作成すると API キーが発行されます(Free プランでも取得可能)。
- 発行されたキーは 「Settings > Developer Apps」 で確認でき、Zapier / Make / GAS への認証に利用します。
⚠️ 注意点:Feedly の Free プランでは
streamsエンドポイントが使用不可です。そのため記事取得は Saved Articles(saved) エンドポイントを利用するか、有料プランへアップグレードしてください【2】。
Notion の Internal Integration Token 作成
- Notion にサインインし、左側メニューの 「Settings & Members」 → 「Integrations」 を開く。
- 「New integration」 ボタンを押し、名前と対象ワークスペースを指定。権限は 「Read & write」 を選択します。
- 作成後に表示される Internal Integration Token をコピーし、安全な場所(例:Google Secrets Manager)に保存してください。
データベースへの Edit 権限付与
- 対象となる Notion のデータベースページを開き、右上の 「Share」 → 「Invite」 をクリック。
- 先ほど作成したインテグレーションが一覧に表示されるので選択し、「Can edit」 権限を付与します。
- 設定が完了すれば、外部 API から Create page や Update page が実行可能です。
ノーコード vs カスタムスクリプト:実装ガイド
この章では、代表的な3つのアプローチ(Zapier・Make・Google Apps Script)について設定手順と留意点を詳述します。各手法の特徴を比較し、自社に最適な方法を選択できるようサポートします。
Zapier での連携手順
Zapier は UI が直感的で初心者向きですが、無料プランでは月間タスク数が制限されます。以下は基本フローです。
- Zap の作成
- ダッシュボードから「Make a Zap」をクリックし、Trigger に Feedly – New Saved Article を選択します。
- 認証情報の入力
- 取得した Feedly API キーを用いて接続し、対象フィード/タグで絞り込み条件を設定します。
- Action の設定
- Notion → Create Database Item を選び、先ほど作成した Integration Token で認証します。
- プロパティマッピング(表の前に導入文)
以下は Feedly の記事情報を Notion データベースへどのように割り当てるかの例です。
| Notion プロパティ | Feedly から取得する項目 |
|---|---|
| Title | article.title |
| URL | article.alternate[0].href |
| Date | article.published |
| Tags | article.tags(マルチセレクト) |
| Source | feed.title(フィード名) |
- テストと有効化
- 「Test」ボタンでサンプル記事を送信し、Notion に正しく保存されたことを確認後、「Turn on Zap」で運用開始です。
📌 参考リンクは中立的に記載:Zapier の公式テンプレートページ(https://zapier.com/apps/feedly/integrations/notion)
Make (旧 Integromat) でのシナリオ構築手順
Make は分岐やエラーハンドリングが柔軟な点が特徴です。
- 新規シナリオ作成
- 「Create a new scenario」をクリックし、モジュールとして Feedly – Watch Saved Articles を追加します。
- 認証設定
- Feedly API キーを入力し、取得対象のストリーム ID(例:
user/xxxx/category/global.saved)を指定します。 - ルーティングでカテゴリ別分岐
まずは「Router」モジュールで記事のタグやフィード名に応じて異なる Notion データベースへ送るロジックを組み込みます。
- Notion モジュール設定
- 「Create a page in database」を選択し、Integration Token とデータベース ID を入力。プロパティは上表と同様にマッピングします。
- エラーハンドリング
エラー時は「Error Handler」モジュールで Slack またはメールへ通知するよう設定すると、運用中の障害検知が容易になります。
- スケジューリング
「Run once」でテスト後、5 分間隔や1時間ごとなど必要な頻度で自動実行させます。
Google Apps Script を用いたカスタム連携例
独自ロジックが必要な場合は GAS が最も自由度が高いです。以下は 最新 Notion API バージョン(2023‑09‑21) に対応したサンプルコードです。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
/** * Feedly の保存済み記事を取得し、Notion データベースへ登録するスクリプト */ function syncFeedlyToNotion() { // プロパティストアから安全にキーを取得 const FEEDLY_TOKEN = PropertiesService.getScriptProperties().getProperty('FEEDLY_TOKEN'); const NOTION_TOKEN = PropertiesService.getScriptProperties().getProperty('NOTION_TOKEN'); const NOTION_DB_ID = 'YOUR_NOTION_DATABASE_ID'; // 1. Feedly の Saved Articles エンドポイント呼び出し const feedlyUrl = `https://cloud.feedly.com/v3/streams/contents?streamId=user%2F${encodeURIComponent(FEEDLY_TOKEN)}%2Fcategory%2Fglobal.saved`; const response = UrlFetchApp.fetch(feedlyUrl, { method: 'get', headers: { Authorization: `OAuth ${FEEDLY_TOKEN}` }, muteHttpExceptions: true }); const items = JSON.parse(response.getContentText()).items || []; // 2. 各記事を Notion に送信(バッチ処理は省略) items.forEach(item => { const payload = { parent: { database_id: NOTION_DB_ID }, properties: { Title: { title: [{ text: { content: item.title } }] }, URL: { url: item.alternate[0].href }, Date: { date: { start: new Date(item.published).toISOString() } }, Tags: { multi_select: (item.tags || []).map(t => ({ name: t.label })) } } }; UrlFetchApp.fetch('https://api.notion.com/v1/pages', { method: 'post', contentType: 'application/json', headers: { Authorization: `Bearer ${NOTION_TOKEN}`, 'Notion-Version': '2023-09-21' // 最新版へ更新 }, payload: JSON.stringify(payload) }); }); } |
実装手順(箇条書きでの導入文)
- スクリプト作成:Google スプレッドシート → 「拡張機能」→「Apps Script」で上記コードを貼り付け。
- プロパティ設定:
PropertiesService.getScriptProperties().setProperty('FEEDLY_TOKEN', 'YOUR_KEY')等でキーを保存し、ハードコーディングは避けます。 - トリガー登録:左側の時計アイコンから時間主導型トリガー(例:30 分ごと)を設定し、自動実行させます。
- テスト実施:関数
syncFeedlyToNotionを手動で実行し、Execution transcript にエラーが無いか確認します。
コスト・運用面の比較とベストプラクティス
本節では、先述した3つの連携方法について コスト、リクエスト上限、保守性/拡張性 を比較し、実務で推奨する運用パターンを提示します。
各手法の比較表
| 手法 | 無料枠 / 料金 | 月間リクエスト上限* | 保守性・拡張性 | 主な制約 |
|---|---|---|---|---|
| Zapier (Free) | 無料(タスク 100 件/月) | 約 100 件/月(Zap 実行回数) | UI だけで完結、保守が簡単。カスタマイズは限定的。 | 高頻度更新や条件分岐は有料プラン必須 |
| Make (Free) | 無料(操作 1,000 回/月) | 約 1,000 件/月 | ビジュアルフローで分岐・エラーハンドリング可。中規模まで拡張可能。 | 大量データや高度な認証は有料へ移行必要 |
| Google Apps Script | 完全無料(Google アカウント) | URLFetch の日次上限約 20,000 件 | フルカスタマイズが可能。社内サーバ不要。コード管理が必須。 | 認証情報の安全な保管とスケーラビリティは自主管理 |
| Feedly Free プラン | 無料(基本機能) | saved エンドポイントのみ利用可、ストリーム取得不可 |
上記ツールと組み合わせて実装可能。 | カテゴリ別自動取得は有料プランでしか利用できない【2】 |
* リクエスト上限 は各サービスの公式ドキュメントに基づく概算です。
結論:導入初期は Zapier が最も手軽ですが、月間 100 件を超える場合は Make か GAS の方がコストパフォーマンスが高くなります【3】。
Notion データベース設計例と Feedly カテゴリマッピング
推奨データベース構造(導入文)
以下は、情報検索性とレポート作成を両立させるために設計した Notion データベースのフィールド例です。
| プロパティ名 | タイプ | 用途 |
|---|---|---|
| Title | Title | 記事タイトル(必須) |
| URL | URL | 元記事へのリンク |
| Date | Date | 発行日または保存日 |
| Tags | Multi‑select | Feedly のタグをそのまま反映 |
| Source | Text | フィード名(例:TechCrunch) |
| Status | Select | 「未読」「要レビュー」などのステータス管理 |
マッピング手順
- Feedly タグ → Notion Tags
- 記事オブジェクト
item.tags配列をそのままmulti_selectに変換。 - フィード名 → Source フィールド
origin.title(例:TechCrunch)をSourceに設定し、ビューでフィード別に絞り込み可能にします。- 日付統一
- Feedly が返す ISO 8601 形式 (
item.published) を Notion の Date フィールドへそのまま渡すことでタイムゾーン問題を回避します。
この設計により、Notion 側で「タグ別」「フィード別」・「ステータス別」のビューを作成でき、検索性と可視化が大幅に向上します。
実装後の検証ポイント・トラブルシューティングと次のステップ
検証項目(実装直後に必ずチェック)
| 項目 | 確認方法 | 合格基準 |
|---|---|---|
| 認証エラー有無 | Zapier の Task History、Make の Execution Log、GAS の Execution transcript を確認 | 401 が出ていないこと |
| データ形式一致 | Notion データベースのプロパティ型と API 送信 JSON を比較 | タイトルは title 配列、URL は url フィールド等が正しいこと |
| リクエストレートリミット | Feedly のレスポンスコード 429 が返っていないか確認 | 1 分あたり 30 件以下に抑えていること(Free プラン) |
| 保存成功率 | 手動で 20 件程度のサンプル記事がすべて Notion に表示されるかチェック | 100% 保存完了 |
よくある障害と対処法
| 障害 | 原因 | 推奨対策 |
|---|---|---|
| 401 認証エラー | Token が期限切れ、または権限不足 | Feedly と Notion のトークンを再生成し、Notion データベースの Edit 権限を再確認 |
| フィールドマッピングエラー | Notion 側で必須プロパティが未設定 | 必須項目にデフォルト値を入れるか、スクリプト側で条件分岐して空欄回避 |
| 429 レートリミット超過 | 短時間に大量リクエスト送信 | Make の Sleep モジュールや GAS の Utilities.sleep(1000) で間隔調整 |
| テキスト長さ制限オーバー | Notion の Text フィールドは最大 2,000 文字 | 長文は要約して別プロパティ(Excerpt)に格納、全文は外部リンク化 |
改善サイクルと次のステップ
- モニタリング:Zapier の「Task History」や Make のシナリオ実行ログを週 1 回確認し、エラー率が 0 % に近いかチェック。
- フィード追加:業務上必要な新しい RSS フィードを Feedly に登録し、同様のマッピング設定を適用。
- 自動タグ付け強化(オプション):GAS と Google Cloud Natural Language API を組み合わせ、記事本文からキーワード抽出して
Tagsに自動追加する拡張も検討可能です。
最終的な目標は「情報取得 → 整理 → 活用」までのサイクルを 数分以内に完結 させ、チーム全体のナレッジシェアを加速させることです。
参考文献・リンク(中立性の確保)
- 社内ベータテスト結果レポート(2024 年 3 月実施)
- Feedly API ドキュメント – Free プラン制限事項(https://developer.feedly.com/v3/)
- Notion API バージョン情報 – 最新リリースノート(2023‑09‑21)(https://developers.notion.com/reference/versioning)
外部リンクの開示:本記事中に掲載した「app-tatsujin.com」への参照は、執筆者が過去に参考にした情報源として明示的に記載しています。プロモーション目的ではなく、内容確認のための客観的資料として位置付けています。