The parallel workflow I run daily — an agent suite pre-wired with a
/shiporchestrator and a one-command git-worktree bootstrap. Ready in 15 minutes. Pairs naturally with this extension: capture your research intoCLAUDE.mdhere, then let the Power Pack's parallel agents run with that context. → Get the Power Pack ($29)並列開発ワークフローを実運用パックに。
/shipオーケストレーター+並列 worktree ブートストラップ同梱、15 分で導入。 この拡張と相性◎:リサーチをこの拡張でCLAUDE.mdに集約 → Power Pack の並列エージェントがそのコンテキストで走ります。
Capture web pages as Markdown and append them directly to your project's context files —
CLAUDE.md,.cursorrules,.windsurfrules, all at once. Multi-project routing by URL pattern. Site-specific parsers for GitHub, GitHub Gist, Stack Overflow, Hacker News, X/Twitter, Zenn, Qiita, MDN, YouTube, Reddit, ChatGPT, Gemini, Notion, arXiv, Dev.to, Hashnode, Hatena, and claude.ai conversations.
Claude Code で 1 時間調べ物をして、ターミナルに戻った頃には「あの 5 つの記事の内容」が AI エージェントに伝わってない — このループを閉じる拡張機能です。
開いているページからノイズを除いた本文だけを Markdown に変換し、プロジェクトの CLAUDE.md に直接 append します。URL パターン(glob)で複数の CLAUDE.md を使い分けることもできます(例:github.com/anthropic/* → 仕事用、zenn.dev/* → 個人メモ)。
---
url: https://github.com/owner/repo/issues/42
title: "[Issue] Bug: something is broken"
captured_at: 2026-04-30T12:00:00.000Z
parser: github
author: alice
tags: ["bug", "priority:high"]
---
# Bug: something is broken
The thing crashes when I do `foo()`.
## Comments
### bob
I see the same.
---
*Source: [...](https://github.com/owner/repo/issues/42)*そのままチャットに貼るだけで、Claude にコンテキスト付きで質問できます。
- ワンクリック抽出:ツールバーアイコンまたはキーボードショートカットで開いているページを Markdown 化
- 選択範囲モード:テキスト選択時はその部分だけを抽出
- サイト別最適化:以下のサイトで専用パーサーが動作
- GitHub(Issue / Pull Request / Discussion / README)
- GitHub Gist (v1.5.0+) — gist.github.com の gist(複数ファイルを含むことがある)を 1 つの Markdown として抽出。各ファイルを
## <ファイル名>見出し+言語付きコードフェンスで出力し、言語は拡張子から推定(取れない場合は描画ハイライトのクラスで補完)。コードファイルは描画済みのハイライトテーブルから復元(ネットワーク不要)、Markdown / rST ファイルはレンダリング済み HTML ではなく Raw ソースを取得して忠実に再現(Raw が取れないときはレンダリング結果にフォールバック)。gist の説明(なければ先頭ファイル名)をタイトルに、著者と作成日時も取得。ファイル内容が取れないときは空キャプチャにせずフレンドリーなエラー、同一 gist の再キャプチャは上書き更新 - Stack Overflow / Stack Exchange
- Zenn
- Qiita
- MDN Web Docs
- YouTube (v0.8.0+) — transcript(manual / auto-generated)と動画メタを抽出。chapter があれば見出しでセグメント分割、なければ
[mm:ss]タイムスタンプ付き本文 - Reddit (v1.1.0+) — post + コメントツリーを JSON API 経由で抽出(不安定な shreddit DOM はスクレイプしない)。selftext / コメント本文は Markdown そのまま、ネストは blockquote で表現、deleted / removed はスキップ、最大 100 コメントで truncation を明記
- Hacker News (v1.1.0+) — item ページのストーリー(タイトル / 外部リンク / points / 投稿者 / Ask HN 本文)とコメントツリーを抽出。ネストは blockquote で再現、
[dead]/[flagged]はスキップ、最初の 100 コメントでキャップ - X / Twitter (v1.2.0+) — status ページのスレッドを DOM から抽出(内部 API は叩かない安全設計。
data-testidセマンティクスのみに依存)。focal tweet + 同一著者のスレッド続き(番号付き)+ 表示中のリプライ(フラット・最大 50 件)をキャプチャ。mention / hashtag / リンクは Markdown リンク化、絵文字はimg altから復元、引用ツイートは blockquote、画像 / 動画は[image: alt]/[video]プレースホルダ、プロモ枠はスキップ。仮想化で未描画のツイートは対象外(スレッドが続く場合はその旨を明記) - ChatGPT (v1.3.0+) — chatgpt.com(旧 chat.openai.com)の
/c/<id>会話ページを内部 API 経由で抽出(不安定な React DOM はスクレイプしない)。/api/auth/sessionの accessToken で/backend-api/conversation/<id>を叩き、mappingノードグラフをcurrent_nodeから root へ辿って可視ブランチを時系列復元。user / assistant のターンを保持、code はコードフェンス、multimodal は[image]プレースホルダ、tool 呼び出しはコンパクトに整形。system / 非表示メッセージはスキップ、model slug をタグ化、同一会話の再キャプチャは上書き更新。ログアウト時は再ログインを促すフレンドリーなエラー - Gemini (v1.4.0+) — gemini.google.com の
/app/<id>(および/share/<id>)会話ページを抽出。claude.ai / ChatGPT と違い Gemini にはクリーンな JSON API がなく(難読化されたbatchexecuteRPC のみ)、描画済み DOM を解析します。難読化クラス名ではなく Gemini の安定したセマンティック・カスタム要素(conversation-container/user-query/model-response)に依存。各ターンの user プロンプトと model 応答を保持、code は言語付きコードフェンス、リスト / テーブル / インライン code は共通 Markdown コンバータで再現、スクリーンリーダ用の重複テキスト(cdk-visually-hidden)はスキップ。同一会話の再キャプチャは上書き更新。ログアウト / 読み込み中はサインインを促すフレンドリーなエラー - Notion (v1.4.0+) — notion.so / notion.site のページを内部ブロック API(
/api/v3/loadPageChunk、cursor でページング)経由で抽出(仮想化で未描画のブロックも取りこぼさない)。block ツリーを Markdown に変換:見出し(H1〜H3)/ 段落 / 箇条書き・番号付き・ToDo リスト(ネスト対応)/ コードブロック(言語付き)/ 引用 / コールアウト(アイコン付き)/ トグル / テーブル / 区切り線。inline の bold / italic / strike / code / link / 数式も復元。空ブロックはスキップ、API が不達・形式変更のときはレンダリング済み DOM(.notion-page-content/data-block-id)にフォールバック。ログアウト / 非公開 / 想定外の形式はフレンドリーなエラー、同一ページの再キャプチャは上書き更新 - arXiv (v1.5.0+) — arxiv.org の
/abs/<id>アブストラクトページ(/pdf/<id>はアブストラクトページ経由で同一論文として扱う)を静的な server-rendered HTML から抽出。難読化とは無縁の安定したcitation_*メタタグ(title / authors / abstract / date / id)を主アンカーとし、無い場合は DOM(h1.title/div.authors/blockquote.abstract)へフォールバック。# タイトル+ 著者行 +## Abstract+ コンパクトなメタ情報ブロック(カテゴリ / バージョン付き arXiv id / 投稿日 / コメント / あれば journal reference と DOI / PDF・アブストラクトへのリンク)を生成。カテゴリ(cs.CL/hep-exなど)はタグ化、同一論文の別バージョンを再キャプチャすると上書き更新(dedupe キーは版を除去)。想定外のレイアウトは空キャプチャにせずフレンドリーなエラー - Dev.to + Hashnode (v1.6.0+) — 開発者ブログの記事を server-rendered ページからクリーンな Markdown で抽出。両者とも schema.org の
ArticleJSON-LD(タイトル / 著者 / 公開日 / タグ)を主アンカーとし、無い場合は DOM へフォールバック。Dev.to は#article-bodyを解析(公開 JSON API ではなく、コンテンツスクリプト上で既にクリーンな HTML が得られるため追加リクエスト不要)、Hashnode は.prose本文を解析しhashnode.dev/hashnode.comホストのみに限定(カスタムドメインの Hashnode ブログは自動判定できないため汎用 Readability パーサーにフォールバック)。コードブロックは言語を保持(Dev.to の Rouge クラスは<pre>からフェンスへ引き上げ)、画像は Markdown 化、タグはプラットフォーム名を prefix、同一記事の再キャプチャは上書き更新。フィード / タグ / プロフィールページは対象外、本文が取れないときは空キャプチャにせずフレンドリーなエラー - Hatena(はてな) (v1.6.0+) — はてなの 2 つのサービスを 2 つの形で抽出。はてなブログの記事(
*.hatenablog.com/.jp、*.hateblo.jp、*.hatenadiary.com/.jpの/entry/…固定リンク)は Zenn / Qiita と同様に、タイトル / ブログ名・著者 / 公開日 / カテゴリ(タグ化)と本文をクリーンな Markdown で取得。はてなブックマークのエントリーページ(b.hatena.ne.jp/entry/…)は軽量なディスカッションとして、ブックマーク対象ページのタイトル + URL(エントリー URL から直接デコード)と公開コメント一覧(ユーザー · 日付 · ★スター、タグ付き、最大 100 件)を取得。どちらも描画済み DOM のみ(内部 API 不使用)、再キャプチャは上書き更新、一覧 / トップページは generic にフォールバック、コンテンツが取れないときは空キャプチャにせずフレンドリーなエラー。独自ドメインのはてなブログはホストから判別できないため generic(Readability)にフォールバック - その他のサイトは Mozilla Readability で本文抽出
- メタ情報の埋め込み:URL・タイトル・取得日時を YAML frontmatter で付与
- CLAUDE.md への直書き (v0.2.0+):プロジェクトの
CLAUDE.mdを一度ピックすれば、以降のキャプチャは File System Access API 経由で自動 append。コピペ不要 - マルチプロジェクト振り分け (v0.3.0+):URL パターン(glob)で複数の CLAUDE.md を使い分け。例:
github.com/anthropic/*→ anthropic 用、zenn.dev/*→ 個人メモ、無マッチは default ルート - マルチエージェント同時書き込み (v0.9.0+):1 つのルートが
CLAUDE.md(Claude Code)+.cursorrules(Cursor)+.windsurfrules(Windsurf)など複数のコンテキストファイルへ同時 append。AI エージェントを並行して使ってる人が単一のキャプチャで全部更新できる。一部のファイルだけ書き込みに失敗した場合(permission 失効など)は成功扱いにせずきちんと通知します (v1.0.0+) - 書き込み前プレビュー (v0.6.0+):キャプチャした Markdown を別ウィンドウで確認・編集してから書き込み。ナビメニューやサイドバーの残骸をその場で削れます。「次回スキップ」チェックで一時的に無効化可能
- claude.ai 会話のキャプチャ (v0.4.0+):claude.ai でブレストした会話をワンクリックで CLAUDE.md に流し込み。share リンクの 403 問題、手コピペの労力を解消。内部 API を叩いて thinking blocks・tool_use・branch 構造まで保持
- アーティファクト抽出 & 範囲選択 (v0.5.0+):claude.ai キャプチャで「アーティファクトだけ」(Claude が書いたコード/ドキュメントを整形済みコードブロックで抽出、会話は捨てる)や「直近 N 件のみ」を選択可能。長い設計会話から必要な部分だけを取り込めます。アーティファクトは同一 ID の更新を最新版に集約。claude.ai のチャットを開いているときはポップアップから直接トグルできます
- 同一会話は上書き更新(siloを作らない) (v0.5.0+):MCP ストアモードで同じ claude.ai 会話を再キャプチャすると、新しいスナップショットを増やさず既存ファイルを上書きします。会話タイトルが変わっても安定 ID で追跡するので、ストアは常に single source of truth に保たれます(古いアーティファクトファイルも掃除)
- MCP 経由でオンデマンド参照 (v0.5.0+):キャプチャを
CLAUDE.mdに追記する代わりに、専用ディレクトリへ 1 件 1 ファイルで保存し、付属の MCP サーバ が Claude Code に必要なときだけ渡します。Anthropic 公式の「CLAUDE.mdは小さく保て(肥大化すると指示が無視される)」ガイドと整合し、コンテキストを汚しません。list_contexts/search_contexts/get_contextで検索・取得できます。v0.7.0+ はCCC_MCP_TOOLS環境変数でツールセットを絞れます(leanプロファイルでターンあたり約 52%、minimalで約 82% のツール定義トークン削減)。→ セットアップ - キャプチャバッファ:複数ページをまとめて溜めて、後から一括エクスポート
- キーボードショートカット:
Ctrl+Shift+L(macOS:Cmd+Shift+L):ページ全体Ctrl+Shift+K(macOS:Cmd+Shift+K):選択範囲
- コンテキストメニュー:右クリックから直接キャプチャ
- 設定可能:frontmatter の有無、フッター、文字数上限、ロケール(en / ja)など
実際に CLAUDE.md に書き込まれる内容:
マルチプロジェクトルーティング設定:
正直に言うと、Web ページを Markdown 化する Chrome 拡張は他にも LLMFeeder、Save、Context Collector などが既にあります。それらとの違い:
| 機能 | LLMFeeder | Save | Context Collector | この拡張 |
|---|---|---|---|---|
| Web → Markdown 変換 | ✓ | ✓ | ✓ | ✓ |
| クリップボードに出力 | ✓ | ✓ | ✓ | ✓ |
プロジェクトの実ファイル CLAUDE.md に直接書き込み |
✗ | ✗(独自 Vault) | ✗ | ✓ |
| URL パターンで複数ファイルに振り分け | ✗ | ✗ | ✗ | ✓ |
| GitHub / Gist / Stack Overflow / HN / X(Twitter) / Zenn / Qiita / MDN / YouTube / Reddit / ChatGPT / Gemini / Notion / arXiv / Dev.to / Hashnode / Hatena サイト別パーサー | ✗ | 部分的 | ✗ | ✓ |
| claude.ai 会話キャプチャ(thinking / tool_use / branch 保持) | ✗ | ✗ | ✗ | ✓ |
| 100% ローカル処理・完全 OSS | ✓ | ✗(SaaS) | ✓ | ✓ |
要は「Claude Code(や類似 AI エージェント)の context file 専用に振り切った clipper」です。汎用 Markdown clipper が欲しいなら LLMFeeder の方が成熟しています。プロジェクトの CLAUDE.md を自動メンテしたいなら、これがおそらく現状唯一の選択肢です。
Chrome ウェブストアで公開中です。ストア版の更新は審査待ちで数日遅れることがあります。最新版をすぐ使いたい場合は 最新リリース の zip をダウンロードするか、下記「開発版を直接インストール」の手順をご利用ください。
git clone https://github.com/OceansCreative/claude-code-context-capturer.git
cd claude-code-context-capturer
npm install
npm run buildその後 Chrome で:
chrome://extensions/を開く- 右上の「デベロッパーモード」を ON
- 「パッケージ化されていない拡張機能を読み込む」をクリック
- このリポジトリの
dist/ディレクトリを選択
ツールバーの拡張機能アイコンをクリック → 「Capture page」ボタン。
または Ctrl+Shift+L(macOS: Cmd+Shift+L)。
ページ上でテキストを選択 → 拡張機能アイコン → 「Capture selection」。
または Ctrl+Shift+K(macOS: Cmd+Shift+K)。
設定画面(拡張機能アイコン右上の ⚙)で「Default action」を Append to buffer または Both に変更すると、キャプチャがバッファに蓄積されます。設定画面の「Copy all as Markdown」で全件まとめてエクスポートできます。
設定画面で以下を変更できます:
| 設定 | 説明 |
|---|---|
| Default action | キャプチャ時の動作(クリップボード / バッファ / リンク済み CLAUDE.md / 両方) |
| Include YAML frontmatter | メタ情報の付与 |
| Include source footer | フッターに出典 URL を付ける |
| Wrap output in fenced code block | コードブロックで囲む(チャット直貼り用) |
| Maximum body length | 本文の最大文字数(0 = 無制限) |
| Locale | en / ja |
| Context file routes | 複数のコンテキストファイルを URL パターンで振り分け(v0.3.0+)。1 ルートに複数ファイルをリンクして同時書き込みも可能(v0.9.0+) |
- Node.js 20+
- npm
npm install # 依存関係のインストール
npm run dev # 開発モード(HMR 付き)
npm run build # 本番ビルド
npm test # テスト実行
npm run lint # Lint
npm run format # Prettier でフォーマットsrc/
├── background/ # Service worker(コマンド受信・配送)
├── content/
│ ├── index.ts # コンテントスクリプトエントリ
│ └── parsers/ # サイト別パーサー
├── popup/ # ポップアップ UI(React)
├── options/ # 設定画面(React)
├── shared/ # 共通ロジック(Markdown 変換、ストレージなど)
└── manifest.config.ts # Manifest V3 定義
新しいサイトに対応したい場合、以下の手順で追加できます:
src/content/parsers/yoursite.tsを作成canHandleYourSite(): booleanとparseYourSite(): CapturedContext | Promise<CapturedContext>をエクスポート- DOM だけでパース可能なら同期、内部 API fetch が必要なら async(v0.4.0+ の dispatcher は async 化済み)
src/content/parsers/dispatcher.tsで先頭に追加(より具体的なホスト判定が先に来るよう順序に注意)src/shared/types.tsのParserNameに追加tests/parsers/yoursite.test.tsでテストを追加(fetch を使う場合はvi.fn()でモック —tests/parsers/claude-ai.test.tsを参考に)
Pull Request 歓迎です。
MIT License - LICENSE を参照。
自由に fork ・改変・商用利用してください。
開発・メンテナンス:池田和司(OceansBase)
OceansBase は島根県を拠点とする個人事業屋号で、受託開発・IT コンサル・コンテンツ制作を行っています。
Claude Code エージェント集シリーズ:
- claude-code-c-suite-agents - 汎用 13 エージェント
- claude-code-agents-meo-shop - 店舗ビジネス向け
- claude-code-agents-jisaa - 士業向け
- claude-code-agents-saas-founder - SaaS 創業者向け
A Chrome extension that captures web pages as Markdown and writes them directly to your project's
CLAUDE.md. Multi-project routing by URL pattern.
When you research with Claude Code (or any AI coding agent), you read 5 articles for an hour, switch to your terminal, and the agent has none of that context. This extension closes that loop: every page you capture is appended to your project's CLAUDE.md so the next session starts where your reading ended.
URL globs let you maintain separate CLAUDE.md files per project — github.com/anthropic/* to one file, zenn.dev/* to another, unmatched URLs to a default catch-all.
What lands in your CLAUDE.md:
Multi-route configuration:
Honestly, several Web→Markdown extensions already exist: LLMFeeder, Save, Context Collector, and the venerable MarkDownload. This one's differentiation:
| Feature | LLMFeeder | Save | Context Collector | This extension |
|---|---|---|---|---|
| Web → Markdown conversion | ✓ | ✓ | ✓ | ✓ |
| Clipboard output | ✓ | ✓ | ✓ | ✓ |
Direct write to your project's CLAUDE.md |
✗ | ✗ (own vault) | ✗ | ✓ |
| URL-pattern routing to multiple files | ✗ | ✗ | ✗ | ✓ |
| Site-specific parsers (GitHub / Gist / SO / HN / X(Twitter) / Zenn / Qiita / MDN / YouTube / Reddit / ChatGPT / Gemini / Notion / arXiv / Dev.to / Hashnode / Hatena) | ✗ | partial | ✗ | ✓ |
| claude.ai conversation capture (thinking / tool_use / branches preserved) | ✗ | ✗ | ✗ | ✓ |
| 100% local, fully OSS | ✓ | ✗ (SaaS) | ✓ | ✓ |
In short: a clipper purpose-built for AI agent context files. If you want a general-purpose Markdown clipper, LLMFeeder is more mature. If you want to keep your project's CLAUDE.md continuously up to date with your reading, this is currently your only option.
- One-click capture — Toolbar icon or keyboard shortcut
- Selection mode — Capture only what you've selected
- Site-specific parsers for GitHub, Stack Overflow, Zenn, Qiita, MDN, and YouTube (v0.8.0+) — pulls the transcript + chapters + metadata, not just the title
- GitHub Gist capture (v1.5.0+) — captures a gist.github.com gist (a page that can hold many files) as a single Markdown document. Each file becomes a
## <filename>section with a fenced code block, language inferred from the extension (falling back to the rendered highlight class). Code files are rebuilt from the rendered highlight table with no network call; Markdown / rST files — which GitHub renders to HTML with no source view — fetch their Raw source for byte-fidelity instead of the rendered HTML, falling back to the rendered view if the Raw link is unavailable. The gist description (or the first filename) becomes the title, the author and created time are captured, missing file content surfaces a friendly error instead of an empty capture, and re-capturing the same gist updates it in place - Reddit thread capture (v1.1.0+) — captures the post + comment tree via Reddit's JSON API (no scraping of the unstable shreddit DOM). Selftext and comment bodies pass through as native Markdown, replies nest as blockquotes, deleted/removed comments are skipped, and megathreads are capped at 100 comments with an explicit truncation note
- Hacker News thread capture (v1.1.0+) — captures the story (title / external link / points / author / Ask HN text) plus the comment tree with nesting rendered as blockquotes, skipping
[dead]/[flagged]and capping at the first 100 comments - X / Twitter thread capture (v1.2.0+) — captures a status page's visible thread from the DOM (no internal API calls — safe for your account; anchored on
data-testidsemantics, never obfuscated class names). Gets the focal tweet, same-author thread continuations as a numbered sequence, and visible replies flat (capped at 50). Mentions / hashtags / links become Markdown links, emoji are restored fromimg alt, quote tweets render as blockquotes, media becomes[image: alt]/[video]placeholders, and promoted content is skipped. Tweets X hasn't rendered (virtualized away) aren't captured — a note is added when the thread continues - ChatGPT conversation capture (v1.3.0+) — captures a chatgpt.com (or legacy chat.openai.com)
/c/<id>conversation via the internal API instead of scraping the unstable React DOM. Uses theaccessTokenfrom/api/auth/sessionto call/backend-api/conversation/<id>, then walks themappingnode graph fromcurrent_nodeback to root to reconstruct the visible branch in order. User/assistant turns are preserved, code renders as fenced blocks, multimodal parts become[image]placeholders, and tool calls render compactly. System and hidden messages are skipped, the model slug becomes a tag, and re-capturing the same conversation updates it in place. Logged out? A friendly hint tells you to log in and retry - Gemini conversation capture (v1.4.0+) — captures a gemini.google.com
/app/<id>(or/share/<id>) conversation. Unlike claude.ai and ChatGPT, Gemini exposes no clean JSON API — only Google's obfuscatedbatchexecuteRPC — so this reads the rendered DOM instead, anchored on Gemini's stable semantic custom elements (conversation-container,user-query,model-response), never obfuscated class names. Each turn's user prompt and model response are preserved, code blocks keep their language as fenced blocks, and lists / tables / inline code survive through the shared Markdown converter. Screen-reader-only duplicate text (cdk-visually-hidden) is stripped, and re-capturing the same conversation updates it in place. Logged out or still loading? A friendly hint tells you to sign in and retry - Notion page capture (v1.4.0+) — captures a notion.so / notion.site page via Notion's internal block API (
/api/v3/loadPageChunk, cursor-paginated) instead of the virtualized DOM, so off-screen blocks aren't lost. Converts the block tree to Markdown: headings (H1–H3), paragraphs, bulleted / numbered / to-do lists (nested), code blocks (with language), quotes, callouts (with icon), toggles, tables, and dividers — plus inline bold / italic / strike / code / links / equations. Empty blocks are skipped; if the API is unreachable or its shape changed it falls back to a DOM parse (.notion-page-content+data-block-id). Logged-out / private / unexpected-shape pages surface a friendly error, and re-capturing the same page updates it in place - arXiv paper capture (v1.5.0+) — captures an
arxiv.org/abs/<id>abstract page (and/pdf/<id>via its abstract page) straight from the static, server-rendered HTML, anchored on arXiv's stablecitation_*meta tags (title / authors / abstract / date / id) with a DOM fallback (h1.title,div.authors,blockquote.abstract). Produces a clean# title, an authors line, a## Abstractsection, and a compact metadata block: categories, the versioned arXiv id, submission dates, author comments, the journal reference and DOI when present, and PDF + abstract-page links. Categories become tags (cs.CL,hep-ex, …), and re-capturing a new version of the same paper updates it in place (the dedupe key is version-stripped). Handles new-style (1706.03762) and old-style (hep-ph/9901001) ids; an unexpected layout surfaces a friendly error instead of an empty capture - Dev.to + Hashnode article capture (v1.6.0+) — captures a developer-blog article as clean Markdown straight from the server-rendered page. Both platforms are anchored on the schema.org
ArticleJSON-LD block (title / author / published date / tags) with DOM fallbacks. Dev.to reads#article-body— chosen over the public JSON API (dev.to/api/articles/<id>) because the page is already clean HTML in the content script, so no extra request / rate-limit / CORS. Hashnode reads the.prosebody and is scoped to thehashnode.dev/hashnode.comhosts only — Hashnode blogs on custom domains can't be auto-detected, so they fall through to the generic Readability parser by design. Code blocks keep their language (Dev.to's Rouge lexer class on the<pre>is lifted onto the fence), images become Markdown, tags are prefixed with the platform, and re-capturing the same article updates it in place (dedupe key is the canonical slug). Feed / tag / profile / series pages aren't claimed, and a missing article body surfaces a friendly error instead of an empty capture - Hatena capture (v1.6.0+) — two shapes across Hatena's two properties. Hatena Blog articles (on
*.hatenablog.com/.jp,*.hateblo.jp,*.hatenadiary.com/.jp, on an/entry/…permalink) are captured like Zenn / Qiita: title, blog name / author, published date, categories (as tags), and the body as clean Markdown. Hatena Bookmark entry pages (b.hatena.ne.jp/entry/…) are captured as a lightweight discussion — the bookmarked page's title + URL (decoded straight from the entry URL) plus the public user comments (user · date · ★stars, with tags), capped at 100. Both read the server-rendered DOM only (no internal-API calls), re-capture updates in place, listing / home pages fall through to generic, and missing content surfaces a friendly error instead of an empty capture. Custom-domain Hatena blogs can't be told apart by host, so they fall through to generic Readability by design - YAML frontmatter with URL, title, captured_at, author, tags
- Direct CLAUDE.md write (v0.2.0+) — Link a
CLAUDE.mdonce via the File System Access API; subsequent captures append directly, no copy/paste - Multi-project routing (v0.3.0+) — Link multiple
CLAUDE.mdfiles with URL glob patterns. Captures fromgithub.com/anthropic/*go to one file,zenn.dev/*to another, unmatched URLs to a default route - Multi-agent fan-out (v0.9.0+) — A single route can write to multiple context files at once:
CLAUDE.md(Claude Code) +.cursorrules(Cursor) +.windsurfrules(Windsurf), etc. People juggling several AI coding agents in the same project no longer need duplicate routes — one capture, all agents updated. If some target files fail while others succeed (e.g. an expired permission), the partial failure is surfaced instead of reported as success (v1.0.0+) - Preview before write (v0.6.0+) — Review and edit the captured Markdown in a preview window before it lands anywhere — trim nav menus, sidebar leftovers, and other cruft, then confirm. Toggleable in Options and via a "skip next time" checkbox on the preview itself
- claude.ai conversation capture (v0.4.0+) — Capture your claude.ai brainstorm conversation in one click. Bypasses the 403-on-share-link issue and the manual copy-paste loop. Hits claude.ai's internal API to preserve thinking blocks, tool_use entries, and branch structure that DOM scraping would miss
- Artifact extraction & range selection (v0.5.0+) — For claude.ai captures, choose artifacts only (extract just the code/documents Claude wrote as clean fenced code blocks, dropping the conversation) or keep the last N messages (trim a long planning thread to what matters). Artifacts are deduped by id so an updated artifact is captured at its final version, not every intermediate edit. When you're on a claude.ai chat, these are toggleable right from the popup
- Same conversation updates in place (no silos) (v0.5.0+) — In MCP-store mode, re-capturing the same claude.ai conversation overwrites the existing file instead of piling up new snapshots. It's tracked by a stable id, so even if the conversation's title changes the store stays a single source of truth (stale artifact files are cleaned up too)
- On-demand access via MCP (v0.5.0+) — Instead of appending to
CLAUDE.md, save each capture as a standalone file in a directory, and let the bundled MCP server hand them to Claude Code only when it asks. This aligns with Anthropic's own guidance to keepCLAUDE.mdsmall (bloated context files make Claude ignore your instructions) — your research stays available without polluting context. Searchable vialist_contexts/search_contexts/get_context. Since v0.7.0, theCCC_MCP_TOOLSenv var trims the exposed tool set — theleanprofile saves ~52% of the per-turn tool-definition token cost,minimal~82%. → Setup - Buffer mode — Stack multiple captures and export all at once
- Keyboard shortcuts:
Ctrl+Shift+L(Cmd+Shift+L on macOS) — capture pageCtrl+Shift+K(Cmd+Shift+K on macOS) — capture selection
- Context menu — Right-click to capture
Live on the Chrome Web Store. Store updates can lag a few days behind releases while in review; to get the newest version immediately, download the zip from the latest release or follow the "Manual install" steps below.
git clone https://github.com/OceansCreative/claude-code-context-capturer.git
cd claude-code-context-capturer
npm install
npm run buildThen in Chrome:
- Go to
chrome://extensions/ - Enable "Developer mode" (top right)
- Click "Load unpacked"
- Select the
dist/directory of this repository
Pull requests are welcome! To add support for a new site:
- Create
src/content/parsers/yoursite.ts - Export
canHandleYourSite(): booleanandparseYourSite(): CapturedContext | Promise<CapturedContext>— sync if DOM-only, async if you need to call the site's internal API (the dispatcher has been async since v0.4.0) - Register it at the top of
src/content/parsers/dispatcher.ts(order matters: more specific host checks first) - Add the name to
ParserNameinsrc/shared/types.ts - Add tests in
tests/parsers/yoursite.test.ts— seetests/parsers/claude-ai.test.tsfor an example with mockedfetch
MIT — free to fork, modify, and use commercially.
Maintained by Kazushi Ikeda (OceansBase) — solo IT consulting practice in Shimane, Japan.



