「後で読む」を、今日読む。
Blog-Read-Forced
あなたにも心当たりありませんか?
スマホで気になった記事を「後で読もう」とブックマーク。 でも結局、何ヶ月も読まないまま埋もれていく。
そのリストは今日、何件たまっていますか?
Blog-Read-Forced とは
保存した記事を強制的に通知して読ませる、個人向け習慣ツールです。
iPhone で見つけた記事をワンタップで登録。 あとは何もしなくても、Chrome が定期的に未読記事を1件ピックアップして通知してくれます。
通知をクリックするだけで記事が開く。それだけです。
できること
1. スマホからワンタップで登録
Safari や Chrome の共有ボタンから、iOS ショートカット経由で即座に記事を保存。 アプリを開かなくていい。コピペもいらない。読んでいる流れを止めない。
2. 定期的に「今日の記事」を通知
Chrome がバックグラウンドで未読記事を取得し、デスクトップ通知を表示します。 「積ん読リスト」が勝手に消化されていく感覚。
3. 通知クリックで即オープン
通知をクリックするだけで記事が新しいタブで開きます。 モチベーションが高いうちにすぐ読み始められる。
4. Chrome 拡張からも登録
PC で気になったページは、拡張アイコンをワンクリックで登録。 iPhone とも同じリストに集まる。
5. 完全無料・サーバー管理なし
バックエンドは Google Apps Script + Google スプレッドシート。 維持費ゼロ、サーバー不要。スプレッドシートで記事一覧を確認できる。
こんな人のために作りました
- 気になる記事はすぐ保存するが、あとで読み返すことがほとんどない人
- Pocket や Instapaper のリストが増える一方で読めていない人
- 意識しないと情報を消化できない、インプット管理が苦手な人
- スマホと PC を行き来しながら情報収集している人
- シンプルで余計な機能のないツールが好きな人
なぜ「強制」なのか
既存の「後で読む」アプリの問題は、自分からアクセスしないと使われないことです。
Blog-Read-Forced は逆に、こちらから通知を送りつける設計になっています。 リストを見に行く習慣がない人でも、通知が来れば自然と反応してしまう。 そのちょっとした摩擦のなさが、習慣継続のカギです。
技術スタック
| レイヤー | 技術 |
|---|---|
| 通知・登録 UI | Chrome 拡張(Manifest V3) |
| スマホ登録 | iOS ショートカット |
| バックエンド | Google Apps Script(Web アプリ) |
| データ保存 | Google スプレッドシート |
ディレクトリ構成
force_reading/
├── docs/ # 設計ドキュメント
│ ├── requirements.md
│ ├── tech-stack.md
│ └── architecture.md
├── gas/
│ └── Code.gs # GAS バックエンド(doPost / doGet)
├── chrome-extension/
│ ├── manifest.json # 拡張の設定・権限
│ ├── background.js # Service Worker(アラーム・通知)
│ ├── popup.html # ツールバーの UI
│ └── popup.js # popup のロジック
└── README.md
セットアップ
1. Google スプレッドシートを作成
Google ドライブで新しいスプレッドシートを作成する。シート名は articles(GAS が自動作成も可)。
2. GAS をデプロイする
- スプレッドシートのメニュー → 「拡張機能」→「Apps Script」 を開く
gas/Code.gsの内容をエディタに貼り付けて保存- 「デプロイ」→「新しいデプロイ」 をクリック
- 設定:
- 種類: ウェブアプリ
- 実行ユーザー: 自分
- アクセスできるユーザー: 全員
- 表示された ウェブアプリ URL をコピー して保存
コードを更新したときは「デプロイを管理」→「編集」→「新しいバージョン」を選ぶこと(URL は変わらない)
3. Chrome 拡張をインストールする
- Chrome で
chrome://extensionsを開く - 「デベロッパーモード」 を ON にする
- 「パッケージ化されていない拡張機能を読み込む」 →
chrome-extension/フォルダを選択 - 拡張アイコンをクリックし、GAS URL を入力して「URL を保存」
4. iPhone ショートカットを設定する
| ステップ | アクション | 設定内容 |
|---|---|---|
| ① | ショートカットの入力を受け取る | 入力タイプ: URL |
| ② | 変数を設定 | 変数名「pageURL」= 入力のURL |
| ③ | 辞書 | url: pageURL、source: “iPhone” |
| ④ | URLのコンテンツを取得 | URL: GAS URL、メソッド: POST、本文: 辞書(JSON) |
| ⑤ | 通知を表示 | 本文: 「登録しました」 |
Safari / Chrome の共有ボタンからショートカットを実行すると記事が登録される。
データ仕様
| 列 | カラム名 | 説明 |
|---|---|---|
| A | タイトル | titleが空ならURLを代入 |
| B | URL | 記事のURL |
| C | 登録日時 | 自動設定 |
| D | ステータス | 初期値「未読」、通知クリックで「既読」に自動更新 |
| E | メモ | 将来用 |
| F | ソース | 「iPhone」または「Chrome拡張」 |