Taking Stock of 700 note Articles: Building a Custom WXR Reader to Power a Claude Knowledge Base [Self-Made Tool]
When you keep writing blog posts every day, you eventually find yourself wondering, "What have I actually written all this time?".
While note provides notifications for consecutive posting streaks, it surprisingly lacks tools for getting an overview of your entire body of work (depending on your plan). You are forced to scroll through your list of articles, and there is no way to check usage trends for categories or tags. Once you accumulate nearly 700 articles, the struggle with déjà vu—"Did I write about this before?"—becomes a daily occurrence.
In this article, I will talk about how I built a tool to visualize note export data (WXR format) entirely within a browser, and the vision beyond that: utilizing your articles as a knowledge base for AI.
⭐️ The tool distribution is in section 2. ⭐️
1. Are you actually looking at your note export data?

note implemented an export feature in March 2023. You can download your articles as a Zip file, which contains an XML file in WXR (WordPress eXtended RSS) format and an assets folder containing images and other files.
🔗About the Export Feature – note Help Center
However, I suspect many people just end up "storing the data as a backup" and nothing more. I was basically the same. Although I export periodically (the last time was a year ago), I never open the XML file. Even if you do open an XML file, it is just an endless stream of tags, not really designed for human reading.
"It's a waste to have all that data and not use it"—that thought was the catalyst for building this tool.
2. Building a WXR Reader: Browser-based, No Server Required
I created a single HTML file that allows you to view, search, and display statistics for your articles simply by dragging and dropping a WXR file (or Zip) into your browser. No data is sent to a server; everything is completed within the browser.
↓ It is the same thing.
The main usage is as follows.
1. Unzip the exported zip file and collect only the .xml files together.
2. Select them all and drop them into the tool above.


It supports article listing and full-text search, allows filtering by post type (article/page), and sorting by newest or oldest. The detailed view for individual articles supports copying as Markdown or HTML, making it easy to repost to other platforms.Bulk Markdown conversion (this is convenient)and a Zip download feature, as well as CSV export, are also provided.
Technically, I used DOMParser for XML parsing and JSZip for Zip extraction. The only dependency on an external library is JSZip, and the configuration is simple and self-contained, aside from using Google Fonts (Noto Serif JP / Noto Sans JP). I proceeded from design to implementation all at once through dialogue with Claude (so-called vibe coding).
*Images for individual articles are not reflected.
3. A Statistical Dashboard as a "Report Card"

When I started building the tool, I only felt like "it would be nice to be able to read my articles again," but halfway through, I got ambitious. If I am writing every day, I want to visualize that trajectory. I wanted what you might call a "blog report card."
I have implemented three main statistical functions.

Daily posts from around September 2024 to around September 2025.
After that, you can see at a glance that there is some inconsistency.
First, the Post Heatmap inspired by GitHub's contribution graph. This is a calendar-style display that represents the number of posts per day using shades of green. Since the number of consecutive posting days (current streak and longest streak) is also displayed as a badge, for bloggers who post every day, there is a pleasure in seeing those green squares lined up. Since note does not have a streak display feature, this is a view you can only see after exporting the data yourself.
Next, the Monthly Post Count and Monthly Character Count Bar Chart. This displays the number of articles and total character count for each month as bar graphs. You can see at a glance changes in your writing rhythm, such as 'I worked hard last month' or 'I had a lot of short articles during this period.' When you look down at an archive of over 700 articles and 3 million characters, you might make surprising discoveries about whether your writing volume is stable or fluctuates.
And, the Category/Tag Usage Frequency Ranking. Although I implemented this, it seems it cannot be exported.
All charts can be switched to full-screen display using the expand button, so you can check the details even when there is a lot of data.
—I think there are other more interesting approaches. However, since Claude went silent due to the 5-hour limit, I will try again later (I might switch to a MAX subscription on an account I can use freely).
4. Another Use Case: 'Inventory' of Data

Actually, this tool is not just for visualization. There is another important use case. That is data inventory.
In my case, I manage my articles in two ways: the public data on note and my own personal records. This sometimes leads to subtle discrepancies when I make edits right before posting (especially when editing after scheduling). 'This article should have been published but is not included in the export,' 'the content is different,' 'the record was overwritten when I edited it'—these discrepancies gradually accumulate when you reach the 700-article scale.
By using the WXR reader's CSV export function, you can get a list of articles based on the note export data. By comparing this with your own records, you can efficiently detect omissions and date discrepancies.
It is a mundane task behind the flashy statistical display. However, this 'bookkeeping' type of work is surprisingly important when running a blog for a long time.
5. Beyond That: Using Past Articles as an AI Knowledge Base

After finishing the tool and organizing the articles, the next question naturally arose: 'Can I make better use of this massive amount of past articles?'
The first thing I considered was a combination of Obsidian + Copilot (plugin) + Ollama + Embedding. This is a configuration where Obsidian notes are vectorized locally and semantic searches are performed from an LLM running on Ollama. The Obsidian Copilot plugin supports embedding models like Ollama's nomic-embed-text, allowing you to build a locally-contained RAG (Retrieval-Augmented Generation) environment. Since everything is completed locally, there are no privacy concerns, and the ability to use it offline was attractive.
Next, what caught my eye was Evernote's semantic search. Evernote v11, released in January 2026, officially includes an AI assistant and semantic search in collaboration with OpenAI. Unlike traditional keyword search, it can understand context and search for related notes. Its track record as a note-taking app is solid, and I thought it would be quite convenient if I could throw all my articles in there and perform semantic searches.
🔗Evernote Releases v11 - BusinessWire
However, what I ultimately chose was the Claude Projects feature.
The reason is simple: the main intended use was 'writing new articles based on what I have written in the past.' Searching past articles is just a means; the goal is 'to interact with an AI that understands my past context.' Claude's Projects feature allows you to combine a knowledge base with custom instructions to create an AI workspace optimized for a specific purpose. By having it read past articles as knowledge, you can naturally confirm things like 'Does this contradict that article I wrote before?' or 'Have I touched on this topic in the past?' during your conversation.
Furthermore, while Obsidian is good, I judged it to be overkill for my purpose. Also, Evernote currently cannot import .md files (they are treated as mere attachments).
6. You can't just dump 700 articles blindly—The reality of selection

However, there is a practical problem. It is impossible to put nearly 700 articles into a knowledge base. There are context window constraints, and not every article is worth referencing in the first place. Some are short diary-like entries, while others are current events that are now outdated.
So, I decided to have Claude help me with the selection of files itself.
The procedure is as follows. First, I use the WXR reader to batch convert the exported data into Markdown. In the folder containing the converted files, I run the following command from the terminal.

↓ This is a Mac command. Please ask your preferred AI for the Windows version.
The easiest way is to feed the HTML of this tool to your preferred AI and ask it.
ls *.md > ~/Desktop/filelist.txtThis outputs a list of all article filenames to a text file. I pass this filelist.txt to Claude and ask, 'Please select the articles that should be included in the blog's knowledge base. Prioritize technical explanation articles and AI-related reflections, and exclude diary-like entries or news summaries with strong current relevance.'
What helped here was my past file naming convention. I basically added '[Novel]' to the titles of fiction-related articles. My past self was smart. Thanks to that, I can use the clear rule: 'Exclude files containing [Novel]'.
Then, based on the file list Claude selected, I have it generate a shell script for transfer. It's a one-liner that copies only the selected files to the project folder. Since it also suggests things like 'What about this?' for files that are hard to judge by filename alone, I can flexibly combine mechanical sorting with human judgment.

Thinking about it now,Claude Coworkshould have been used (I tend to use the web version out of habit).
The good thing about this workflow is that you can 'consult with the AI about the classification criteria themselves.' You narrow things down roughly with the initial rules, and Claude picks up the good articles that might have been missed. It is much faster and more accurate to proceed while having a dialogue than to agonize over perfect classification by yourself.
Summary
The note export feature is too good to be used only for backup purposes. By combining it with tools that visualize and organize data, like the WXR reader I made, the range of applications expands significantly, from 'looking back at your blog' to 'building a knowledge base.'
To summarize what I did: I exported WXR data from note, and used my self-made tool to view, search, and display statistics for the articles. I cross-referenced my local records using CSV output and batch Markdown conversion. Then, I had Claude itself select the articles to be put into the AI knowledge base, and created an 'AI that knows my past articles' using the project feature.
For those who write blogs almost every day or have accumulated articles over a long period, I recommend exporting them once and taking a bird's-eye view of your archive. Facing 3 million characters of yourself is quite a moving experience.
