汎用SNSアーカイバー Chrome拡張機能。ログイン済みの自分のアカウントで見えているタイムライン・プロフィール・投稿を、統一スキーマでローカルに保存し、Claude Codeに読ませやすい形式 (JSON / Markdown) でエクスポートする。
| Platform | URL |
|---|---|
| X (Twitter) | x.com / twitter.com |
| www.instagram.com | |
| Threads | www.threads.net |
| www.facebook.com | |
| TikTok | www.tiktok.com |
| www.linkedin.com | |
| www.reddit.com / old.reddit.com | |
| YouTube | www.youtube.com (動画詳細+コメント / 検索 / チャンネル) |
| Bluesky | bsky.app |
| Mastodon | 全インスタンス自動判定 |
| note | note.com |
| はてブ | b.hatena.ne.jp |
| その他 | OGP + 本文 + リンク見出しを汎用抽出 |
- ワンクリックキャプチャ — ポップアップの「📥 このページをキャプチャ」でオートスクロール後に全件取得し JSON+Markdown で保存
- 監視モード — 「👁 監視開始」で MutationObserver を起動、ユーザーが手動スクロール中に追加投稿を蓄積、「⏹ 停止+保存」でまとめて吐き出し
- 統一スキーマ — どのプラットフォームでも
{id, type, author, text, posted_at, media[], stats, url}の共通フォーマット。横断分析しやすい - 2形式エクスポート — JSON (機械可読 / Claudeへの構造化入力) + Markdown (Claudeに直接読ませやすい)
- 保存先カスタマイズ — 設定画面で
~/Downloads/<dir>/のサブディレクトリ指定 - 汎用フォールバック — 未対応サイトでも OGP / 本文 / 見出しリンクをベストエフォートで抽出
# 1. chrome://extensions/ を開く
# 2. 右上「デベロッパーモード」ON
# 3. 「パッケージ化されていない拡張機能を読み込む」
# 4. ~/projects/sns-archiver/ を選択- 任意のSNSページ(自分のアカウントでログイン済み)を開く
- ツールバーのアイコンをクリック → ポップアップ表示
- 「📥 このページをキャプチャ」 をクリック
- オートスクロールで遅延読み込みコンテンツを取得(10〜30秒)
~/Downloads/sns-archive/<platform>_<timestamp>.jsonと.mdが保存される
通常モードは1回のスクロールで終わるので、大量の投稿を取りたい場合は監視モード推奨:
- 「👁 監視開始」クリック
- 自分でゆっくりスクロール(X/IGはスクロールバッファを切るので一気に降りると古い投稿がDOMから消える)
- 「⏹ 監視停止+保存」で蓄積した全件を保存
# Claude Code起動して保存ファイルを指定
claude
# Claude側でこう言う
> ~/Downloads/sns-archive/x_2026-05-19_163000.json を読んで、
> 直近のポストから今フォロワーが何に興味持ってるか分析してJSON は構造化されているのでフィルタリング・集計しやすい。Markdown は概観把握向き。
ポップアップ下部の「⚙ 設定を開く」または chrome://extensions/ → 拡張機能の詳細 → 「拡張機能のオプション」
- 保存先サブディレクトリ: デフォルト
sns-archive - 保存フォーマット: JSON / Markdown 個別ON/OFF
{
"schema_version": "1.0",
"platform": "x",
"captured_at": "2026-05-19T16:30:00.000Z",
"source_url": "https://x.com/home",
"page_title": "Home / X",
"item_count": 42,
"items": [
{
"id": "1234567890",
"type": "post",
"author": {
"handle": "someone",
"name": "Someone",
"url": "https://x.com/someone"
},
"text": "投稿本文",
"posted_at": "2026-05-19T15:00:00.000Z",
"media": [
{ "url": "https://...", "type": "image", "alt": "" }
],
"stats": {
"likes": 123,
"reposts": 45,
"replies": 6,
"views": 12000
},
"url": "https://x.com/someone/status/1234567890",
"reply_to": null,
"platform_extras": {}
}
]
}- X: タイムライン / 検索結果 / プロフィール / 単発ポスト詳細
- Instagram: フィード / プロフィールグリッド / ハッシュタグページ
- Threads: タイムライン / プロフィール / ポスト詳細
- YouTube: 動画詳細→本体メタ+コメント、検索結果→動画一覧、チャンネル→動画一覧
- Reddit: サブレディット一覧 / Front Page / ユーザーページ
- TikTok: For You / プロフィール / 検索結果
- note: 記事詳細 → 本文取得、一覧ページ → タイトル一覧
- 規約: 自分が閲覧できる範囲をローカルに保存する個人利用の範囲は概ねグレー。自動操作・再配布・大量取得・他人のDM等は明確に規約違反。
- DOM変化: 各SNSのDOM構造は頻繁に変わる。動かなくなったら該当
content/adapter-*.jsのセレクタを修正 - レート的な注意: オートスクロールはサイトに負荷をかける。
common.jsのautoScroll({ maxScrolls, delay })でチューニング可 - media URL: 期限切れになるURLが多い(特にX/IG)。重要な画像は別途ダウンロードしておく
sns-archiver/
├── manifest.json Manifest V3 定義
├── background.js service worker(保存処理)
├── popup.html / .js ツールバーポップアップ
├── options.html / .js 設定画面
├── content/
│ ├── common.js 共通ユーティリティ + adapterレジストリ
│ ├── adapter-*.js プラットフォーム別アダプタ
│ ├── adapter-generic.js OGPフォールバック
│ └── dispatcher.js メッセージ受信・autoScroll・MutationObserver
├── icons/ PNGアイコン
└── README.md
新プラットフォーム対応するときは content/adapter-<name>.js を新規作成:
(() => {
const SA = window.__snsArchiver;
const U = SA.util;
SA.register({
name: 'mysite',
match(host) { return host === 'mysite.example'; },
async capture() {
await U.autoScroll();
const items = U.qsa(document, '.post').map(p => ({
id: ..., type: 'post', author: {...}, text: ..., url: ...
}));
return U.buildPayload('mysite', items);
}
});
})();そして manifest.json の content_scripts.js 配列に追加すれば完了。