🔖 X Bookmark Logger
— X のブックマークを自動で Obsidian Vault (GitHub) に残す
X(Twitter)でブックマークしたツイートを、自動的にあなたの GitHub リポジトリ(Obsidian Vault)へ 1件 = 1 Markdown ファイルとして保存するユーザースクリプトです。 本文・作者・投稿日時・展開済みURL・画像/動画URL・引用ツイートまで記録します。
PC のブラウザで 🔖 を押す ──→ その場で即ログ(リアルタイム)
iPhone の X アプリで 🔖 ──→ あとでブラウザで x.com/i/bookmarks を
開いてスクロールすると未記録分だけ自動ログ(差分同期)
│
▼
GitHub の Vault リポジトリに Markdown がコミットされる
01仕組みと特徴
- x.com を開いている間、X 本体が発行する GraphQL 通信を傍受して記録します。X の API キーは不要・無料です。
- ブックマーク追加(
CreateBookmark)を検知すると、直前に画面へ流れてきたツイートデータから本文・作者を補完して保存します。 - ファイル名は
投稿日_スクリーンネーム_ツイートID.mdで決定的。どの端末から記録しても同名になるため、二重記録は GitHub 側で自動的に防止されます(同名ファイルが既にあればスキップ)。 - オフラインや認証エラー時は未送信キューとしてブラウザ内に保持し、復帰後に自動再送します。
02PC への導入(5分)
- ユーザースクリプトマネージャーを入れる: Tampermonkey または Violentmonkey
- Chrome の場合のみ:デベロッパーモードを有効化する
アドレスバーにchrome://extensionsと入力 → 右上の「デベロッパー モード」をオンにする。
これをしないと Chrome がスクリプトのインストールをブロックします(「このウェブサイトから追加することはできません」エラー)。Firefox や Violentmonkey ではこの手順は不要です。 - 下のボタンからスクリプトをインストール
⚠️ Chrome で「このウェブサイトから追加することはできません」と出る場合
次の順に確認してください:
chrome://extensions→ 右上「デベロッパー モード」をオン- Chrome を完全に再起動(デベロッパーモードはブラウザ再起動後に反映されます)
- このページを
file://(ローカルファイル)で開いている場合:chrome://extensions→ Tampermonkey の「詳細」→「ファイルの URL へのアクセスを許可する」をオン
x-bookmark-logger.user.js を選択。
03GitHub トークン(PAT)の作成
保存先リポジトリにだけ書き込める、最小権限のトークンを作ります。
- GitHub → Settings → Developer settings → Fine-grained personal access tokens → Generate new token
- Repository access: 「Only select repositories」で Vault リポジトリ1つだけを選択
- Permissions: Repository permissions → Contents: Read and write のみ
- Expiration: 90日など短めに設定(期限が切れたら作り直して設定し直す)
- 発行された
github_pat_…をコピー
04設定
- x.com を開くと左下に 🔖 ボタンが出るのでタップ
- オーナー名 / リポジトリ名 / ブランチ / 保存先フォルダ / PAT を入力し「記録を有効にする」をオン → 保存
- 「接続テスト」で ✅ が出れば完了
ボタンの色が状態表示です:緑=待機中 / 橙=未送信あり(数字バッジ) / 赤=エラー(パネルで詳細確認)
05iPhone での使い方
X のネイティブアプリ内の通信は傍受できないため、iPhone では「アプリでブックマーク → あとで Safari で差分同期」という運用になります。
- App Store で Userscripts アプリを入れ、設定 → Safari → 機能拡張 で有効化
- Safari で本ページを開き、本体とアップローダーの2本ともインストール (iOS の Userscripts では傍受とGitHub送信を別スクリプトが分担する必要があるため2本必要です)
- 普段は X アプリで自由にブックマーク
- ときどき Safari で
x.com/i/bookmarksを開いて下までスクロール → 未記録分だけが自動でコミットされます
PC を持っている場合はもっと簡単
iPhone 分の同期も PC のブラウザで
x.com/i/bookmarks を開くだけで OK。その場合 iPhone への導入は不要です。
06保存される Markdown
X Bookmarks/2026-06-10_username_1234567890123456789.md
---
id: "1234567890123456789"
url: https://x.com/username/status/1234567890123456789
author: "@username"
author_name: "表示名"
posted_at: 2026-06-10T12:34:56.000Z
bookmarked_at: 2026-06-12T19:00:00+09:00
source: realtime # realtime=その場で記録 / bookmarks-sync=差分同期
media:
- https://pbs.twimg.com/media/xxxx.jpg
tags: [x-bookmark]
---
ツイート本文(t.co は展開済み)
> [!quote] 引用元 @other(表示名)
> 引用ツイートの本文

動画: https://video.twimg.com/xxxx/vid/xxxx.mp4
Obsidian ではフロントマターがプロパティとして認識され、#x-bookmark タグやDataviewでの集計・検索ができます。
07注意事項
| 項目 | 内容 |
|---|---|
| 非公式手法 | X の内部通信を読む非公式な方法です。X 側の仕様変更で動かなくなる可能性があり、規約上もグレーです(自分のデータの読み取りのみなのでリスクは小さい想定ですが、自己責任で利用してください)。 |
| PAT の保管 | トークンはブラウザの localStorage(x.com 上)に保存されます。理論上は x.com 上で動く他のスクリプトから読める場所なので、必ず「Vault リポジトリ1つ・Contents 権限のみ・短期限」の Fine-grained PAT を使ってください。 |
| iPhone Safari | 7日間 x.com を開かないとブラウザ内データ(未送信キュー等)が消えることがあります。記録済みの判定は GitHub 側の同名ファイル検知でも行われるため、重複の心配はありません。 |
| 削除は非対応 | ブックマーク解除してもログは消しません(ログとして残すことが目的のため)。 |
| 過去分の取り込み | x.com/i/bookmarks を一番下までスクロールすれば、過去のブックマークも全件取り込めます。 |
08うまく動かないとき
- 🔖 ボタンが出ない → Tampermonkey 本体が有効でも、スクリプト個別の「ユーザースクリプト」トグルが OFF になっていることがあります。x.com を開いた状態で Tampermonkey アイコンをクリックし、「X Bookmark Logger」がオンか確認 → オンにしたら x.com をリロード。
- 接続テストが「エラー(404)」 → PAT にリポジトリアクセスが付いていません。プライベートリポジトリは権限のないトークンには 404(存在しない扱い)を返します。トークン設定画面で該当トークンを開き、Repository access に Vault リポジトリが表示されているか・Repository permissions に Contents: Read and write が付いているかを確認してください。作成時にチェックしたつもりでも反映されないまま発行されることがあります(Edit で後から追加可能。トークン文字列は変わらないので貼り直し不要)。
- 🔖 ボタンが赤い → パネルを開いてエラーメッセージを確認(PAT 期限切れ・リポジトリ名間違いが大半)
- ブラウザのコンソールで
__XBM_DEBUG.state()を実行すると、設定・未送信キュー・記録済み件数を確認できます - 「記録済み索引クリア」を押してもリポジトリ側のファイルは消えません(再取り込みのテスト用)