noteの記事700本を「棚卸し」する——WXRリーダーを自作して、Claudeのナレッジベースに活かすまで【自作ツール】
ブログを日々書き続けていると、ある日ふと思います。「自分、いままで何を書いてきたんだっけ」と。
noteには連続投稿の通知こそありますが、全体を俯瞰する手段は意外と乏しいものです(プランによる)。記事の一覧はスクロールで追うしかなく、カテゴリやタグの使用傾向を確認する方法もありません。700本近い記事がたまると、「あの話、前に書いたっけ?」という既視感との闘いが日常になります。
この記事では、noteのエクスポートデータ(WXR形式)をブラウザだけで可視化するツールを自作した話と、その先にあった「記事をAIのナレッジベースとして活用する」という展望についてお話しします。
⭐️ツール配布は、2. のセクションです⭐️
1. noteのエクスポートデータ、眺めていますか?

noteには2023年3月からエクスポート機能が実装されています。自分の記事をZipファイルとしてダウンロードでき、中にはWXR(WordPress eXtended RSS)形式のXMLファイルと、画像などを格納したassetsフォルダが含まれます。
ただ、多くの人はエクスポートしたデータを「バックアップとして保管するだけ」で終えているのではないでしょうか。自分も基本的にそうでした。定期的にエクスポートはするものの(前回やったのは1年前)、XMLファイルを開くことはない。そもそもXMLを開いても、タグの羅列が延々と続くだけで人間が読むようにはできていません。
「せっかくのデータなのにもったいない」——その思いが、今回のツール自作のきっかけでした。
2. WXRリーダーを作る——ブラウザ完結、サーバー不要
作ったのは、WXRファイル(またはZip)をブラウザにドラッグ&ドロップするだけで記事を閲覧・検索・統計表示できるシングルHTMLファイルです。サーバーには一切データを送信せず、すべてブラウザ内で完結します。
↓同じものです。
主な使い方はこんな感じです。
①エクスポートされたzipファイルを解凍し、.xmlのファイルだけ1まとめにします。
②これを、まとめて選択して、上のツールに放り込みます。


記事の一覧表示と全文検索に対応しており、投稿種別(記事/固定ページ)での絞り込みや、新しい順・古い順のソートができます。個別記事の詳細表示ではMarkdownへの変換コピーやHTMLコピーにも対応していて、他のプラットフォームへの転記も容易です。一括でMarkdown変換(これは便利)してZipダウンロードする機能や、CSV書き出しも用意しました。
技術的には、XMLのパースにはDOMParserを使い、Zip展開にはJSZipを利用しています。外部ライブラリへの依存はこのJSZipだけで、フォントにGoogle Fonts(Noto Serif JP / Noto Sans JP)を使用する以外は自己完結するシンプルな構成です。Claudeとの対話で設計から実装まで一気に進めました(いわゆるバイブコーディング)。
※個別記事の画像は反映されません。
3. 「通知表」としての統計ダッシュボード

ツールを作り始めた当初は「記事を読み返せればいい」くらいの気持ちでしたが、途中から欲が出てきました。毎日書いているなら、その軌跡を可視化したい。いわば「ブログの通知表」が欲しくなったのです。
実装した統計機能は大きく3種類あります。

2024年9月くらいから、2025年9月くらいまでは毎日投稿。
以降は、ムラがあるね、というのがパッとわかります。
まず、GitHubのコントリビューショングラフに着想を得た投稿ヒートマップ。日ごとの投稿数を緑色の濃淡で表現するカレンダー形式の表示です。連続投稿日数(現在のストリークと過去最長のストリーク)もバッジとして表示されるので、毎日投稿を続けているブロガーにとっては、あの緑のマス目がズラッと並ぶ快感があります。noteにはストリーク表示の機能がないので、自分でエクスポートして初めて見える景色です。
次に、月間投稿数と月間文字数のバーチャート。月ごとの記事本数と総文字数をそれぞれ棒グラフで表示します。「先月は頑張ったな」「この時期は短めの記事が多かったんだな」といった執筆リズムの変化が一目でわかります。700本・300万文字超のアーカイブを俯瞰すると、自分の書く量が安定しているのか波があるのか、意外な発見があるものです。
そして、カテゴリ・タグの使用頻度ランキング。これは実装したは良いものの、おそらくエクスポートできないようですね。
いずれのチャートも拡大ボタンでフルスクリーン表示に切り替えられるので、データが多い場合でも細部まで確認できます。
——なにか、もうちょっと面白いアプローチもあると思うんですよね。ただ、Claudeが5時間制限で沈黙してしまったので、また後ほど(自由に使えるアカウントで、MAX契約しようかなぁ)。
4. もう一つの用途——データの「棚卸し」

実はこのツール、可視化だけが目的ではありません。もう一つ重要な用途があります。それはデータの棚卸しです。
自分の場合、記事の管理をnote上の公開データと手元の記録の二重で行っています。すると投稿ギリギリで修正する場合もあり、微妙な不一致が生じてくるのです(予約してから、修正する場合は特に)。「この記事、公開したはずだけどエクスポートに含まれていない」「内容がずれている」「編集したタイミングで記録が上書きされた」——こうした齟齬は、700本規模になるとじわじわ蓄積します。
WXRリーダーのCSV書き出し機能を使えば、noteのエクスポートデータを正とした記事一覧が得られます。これを手元の記録と突き合わせることで、抜け漏れや日付のずれを効率的に検出できるわけです。
華やかな統計表示の裏にある地味な実務。でも、長期間ブログを運営する上ではこの「帳簿の照合」的な作業が意外と大切です。
5. その先へ——過去記事をAIナレッジベースに

ツールを作り終えて記事を整理していると、自然に次の疑問が浮かびました。「この大量の過去記事、もっと活用できないだろうか」と。
最初に検討したのはObsidian+Copilot(プラグイン)+Ollama+Embeddingの組み合わせです。Obsidianのノートをローカルでベクトル化し、Ollamaで動かしたLLMからセマンティック検索する構成ですね。Obsidian CopilotプラグインはOllamaのnomic-embed-textなどのEmbeddingモデルに対応しており、ローカル完結のRAG(検索拡張生成)環境を構築できます。すべてがローカルで完結するのでプライバシーの心配がなく、オフラインでも使える点は魅力的でした。
次に目を引いたのがEvernoteのセマンティック検索です。2026年1月にリリースされたEvernote v11では、OpenAIとの連携によるAIアシスタントとセマンティック検索が正式に搭載されました。従来のキーワード検索と違い、文脈を理解して関連ノートを検索できるようになっています。ノートアプリとしての実績は十分ですし、ここに全記事を放り込んでセマンティック検索できればかなり便利そうだ、と思いました。
🔗Evernote Releases v11 - BusinessWire
しかし、最終的に選んだのはClaudeのプロジェクト機能でした。
理由はシンプルで、主な考えられる用途が「過去に書いた内容を踏まえて新しい記事を書く」ことだったからです。過去記事の検索はあくまで手段であり、目的は「過去の自分の文脈を理解したAIと対話すること」にあります。Claudeのプロジェクト機能はナレッジベースとカスタム指示を組み合わせて、特定の目的に最適化されたAIワークスペースを作れます。過去記事をナレッジとして読み込ませれば、「以前書いたあの記事と矛盾しないか」「この話題は過去に触れたか」といった確認を対話の中で自然に行えるのです。
もっというと、Obsidianは良いのですが、目的に対して過剰すぎると判断しました。また、Evernoteは現状.mdファイルをインポートできません(単なる添付ファイル扱い)。
6. 700本を闇雲には入れられない——取捨選択の実際

ただし、現実的な問題があります。700本近い記事をすべてナレッジベースに投入するのは無理があります。コンテキストウィンドウの制約もあるし、そもそもすべての記事が参照の価値を持つわけではありません。日記的な短文もあれば、時事ネタでもう古くなった記事もある。
そこで、Claudeにファイルの取捨選択自体を手伝ってもらうことにしました。
手順はこうです。まず、WXRリーダーでエクスポートデータをMarkdownに一括変換します。変換後のファイル群が入ったフォルダで、ターミナルから次のコマンドを打ちます。

↓これはmacのコマンドです。Windows版はお好きなAIに聞いてください。
楽なのは、このツールのHTMLをお好きなAIに投げて、聞くことです。
ls *.md > ~/Desktop/filelist.txtこれで全記事のファイル名一覧がテキストファイルに出力されます。このfilelist.txtをClaudeに渡して、「ブログのナレッジベースに入れるべき記事を選んでほしい。技術解説記事やAI関連の考察を優先し、日記的な記事や時事性の強いニュース要約は除外して」と依頼するわけです。
ここで幸いしたのが、過去の自分のファイル命名規則でした。小説系の記事には基本的にタイトルに「【小説】」と振っていたのです。昔の自分、賢い。おかげで「【小説】を含むファイルは除外」という明快なルールが使えます。
そしてClaudeに選定してもらったファイルリストをもとに、移送用のシェルスクリプトを生成してもらいます。選ばれたファイルだけをプロジェクト用フォルダにコピーするワンライナーですね。ファイル名だけでは判断しにくいものについても「これは?」と提案してくれるので、機械的な振り分けと人間の判断を柔軟に組み合わせられます。

今にして思えば、Claude Coworkを使うべきでした(ついつい癖でWEB版を使っちゃう)。
このワークフローの良いところは、「分類の基準自体をAIと相談できる」点です。最初のルールでざっくり絞り、漏れそうな良記事はClaudeが拾ってくれる。完璧な分類を一人で考え込むより、対話しながら進めるほうがずっと速くて精度も高い。
まとめ
noteのエクスポート機能は、バックアップ用途だけで使うのはもったいない機能です。今回のWXRリーダーのように、データを可視化・整理するツールと組み合わせることで、「ブログの振り返り」から「ナレッジベースの構築」まで、活用の幅がぐんと広がります。
やったことを整理すると、こういう流れになります。noteからWXRデータをエクスポートし、自作ツールで記事を閲覧・検索・統計表示する。CSV出力やMarkdown一括変換で手元の記録と照合する。そして、AIのナレッジベースに入れるべき記事をClaude自身に選んでもらい、プロジェクト機能で「自分の過去記事を知っているAI」を作る。
ほぼ毎日ブログを書いている方、長期間にわたって記事を蓄積している方は、一度エクスポートして自分のアーカイブを俯瞰してみることをおすすめします。300万文字の自分と向き合うのは、なかなかに感慨深い体験ですよ。
