PullMD Part 5: Reddit Day and First Issues
On April 27 at 09:32 in the morning, gh repo create ran. The repo was public. One night later: a few stars, fourteen unique cloners according to GitHub Insights, not a single issue. That was the first time I sat down to breakfast and glanced at a project that was no longer only mine — and nothing unexpected had happened.
The Post on r/ClaudeAI
On April 28, just after noon, I wrote a Reddit post on r/ClaudeAI. Title: “PullMD - gave Claude Code an MCP server so it stops burning tokens parsing HTML”.
Two frustration triggers as the hook — real ones I actually had, not constructed:
1. Mobile copy-paste is awful. Long Reddit thread or blog article on my phone, I want to ask Claude something about it. Long-press, drag selection handles over navigation and sidebar, copy, switch apps, paste. None of that is hard. But it’s annoying enough that one day I just wanted to fix it.
2. Claude Code burns tokens on HTML boilerplate. A typical article is 80% navigation, cookie banners, and footer — 20% actual content. Watching the agent wrestle with that before answering my question was inefficient. In an unpleasant way that gets harder to ignore the better you understand the system.
The post went live. I had no particular expectations — a post among a few thousand in an active sub, posted at noon on a weekday.
What Happened Over the Day
As of this writing: 387 upvotes, 58 comments. That was more than anything I had posted on Reddit before.
The first comment I read in the morning was from u/CloisteredOyster:
“What is this!? A useful and novel tool on an AI sub? Amazing!” — u/CloisteredOyster (+108)
That was early enough in the day that I could just be happy about it, without knowing whether more would follow.
What Reddit Taught Me About My Own Tool
The most interesting comment came from u/blin787 — a side-by-side comparison with Claude Code’s own WebFetch:
“Claude code’s webfetch works differently. It passes page to Haiku model which then returns very small result which is actually added to context of Opus/Sonnet. So the reduction is not as drastic as it seems when using with agents which solved this problem.” — u/blin787 (+35)
I hadn’t looked deeply into WebFetch internals because I was solving a different problem. After the comment, I researched it. WebFetch fetches the page via Axios, then starts a secondary Haiku conversation with the raw HTML and the following prompt:
Provide a concise response based only on the content above.
- Enforce a strict 125-character maximum for quotes
The main agent never sees the page — only Haiku’s reduced answer. PullMD, by contrast, returns verbatim markdown, without any LLM calls at all.
The tradeoff is clear: WebFetch is cheaper and faster because the context stays small. PullMD is complete — what’s in the markdown is what’s on the page, not what Haiku thought about it. For “give me the exact wording,” structured data (lists, tables, links), or JS-heavy pages where WebFetch would see only an empty React shell anyway, PullMD is the better choice. For “I just need the main point,” WebFetch is enough.
Comparison Questions as a Gift
Two more comments I read as comparison questions rather than attacks:
u/KnackeHackeWurst:
“Isn’t that just like firecrawl?” — u/KnackeHackeWurst (+11)
Honest distinction: firecrawl is a full crawler — sitemap, depth, batch, AI extraction. The AI features require OpenAI or Ollama when self-hosted. PullMD is single-URL, without any LLM calls, but with an MCP server and Claude Code skill out of the box. For “crawl a complete docs site with structured LLM extraction”: firecrawl. For “URL to markdown in 30 seconds, no account, no API key”: PullMD.
u/ardicli2000:
“Would not it be better to run a bash script as a skill which operates on your browser or headless or even with wget rather than on a server?” — u/ardicli2000 (+3)
That’s a valid architecture question. A bash script is enough for single-user, single-machine. The server mode becomes interesting as soon as multiple clients come into play: caching across sessions and clients (6–13 ms warm instead of up to 6 s cold), Claude Code on multiple machines, Claude Desktop, the mobile PWA — all hitting the same cache. Hosting Playwright as a sidecar costs 3.7 GB of Chromium binaries, once, not per skill call. Refreshable share links work because a stable URL lives on the server. For all of that, you need the server.
Token Benchmarks
Reddit asked for numbers. So I appended an EDIT to the post that evening — my own benchmarks from my homelab instance. Token counts are tiktoken cl100k_base approximations, not exact Claude tokens — the order of magnitude holds, the exact number less so.
| Source | raw | PullMD | reduction |
|---|---|---|---|
| GitHub README | 141,599 | 3,125 | 97.8% |
| MDN Reference | 63,979 | 16,093 | 74.8% |
| Reddit Thread | 3,264 | 320 | 90.2% |
The real point is in the right-hand column: depending on the source, three quarters to nearly 98 percent fewer tokens. That’s what PullMD is for.
The First External Issue
On April 28 at 22:56, a user named andrewthetechie opened Issue #1:
MCP: remove structuredContent — Claude Code displays it instead of content[0].text
For the first time, a stranger had taken the time to write a bug report because my code was doing something wrong. That’s different from an upvote: an issue is work. Someone installed the tool, reproduced the problem, wrote it up, submitted it. That takes time.
About half an hour later, at 23:29: Issue #2 from another user — “Unable to open database file when running docker compose up.” Two issues the same evening. The repo had been public for less than 48 hours.
The Issue Flood on April 29
In the 24 hours that followed: thirteen issues in the tracker. Not a steady trickle — a block that formed while the Reddit post was still riding high. Most came from strangers; two of them (#5 and #6) I opened myself to capture the feedback — more on that in a moment.
A selection of the external reports, to show the spectrum:
- #7 — Add
DISABLE_PUBLIC_HISTORYenv var to hide history/archive on shared instances - #8 — MCP/REST: mojibake on ISO-8859-1 pages without explicit charset (e.g. winfuture.de)
- #9 — MCP: include full share URL in read_url response (LLMs hallucinate pullmd.com)
- #10 — Claude Desktop custom connector: how to authenticate (UI only supports OAuth)?
- #12 — Reddit threads with images: only image shows in markdown, header/comments missing
- #13 — Container images not published to GHCR
Sebastian WinFuture23 appeared multiple times in those first days — he brought Issue #8 with winfuture.de as a test case, and he will play a role later in this series. A concrete edge case I probably wouldn’t have caught that early without that pointer.
GitHub Insights for this 14-day period: 397 unique visitors, 320 unique cloners. reddit.com as top referrer with 165 views, 105 unique.
How the Feedback Reordered My Roadmap
Two of the issues didn’t come from outside: #5 and #6 I opened myself, with Claude Code, to bundle what the thread had surfaced in hints and requests — together with my own thinking:
Architecture: Phase 1 — Multi-user system with sessions + API keys Architecture: Phase 2 — OAuth authorization code flow for claude.ai web connector
Multi-user had been Phase 2 or 3 for me until then, somewhere on the roadmap, for later. But the feedback from the thread — multiple clients, shared instances, the wish for authentication — made it clear that “later” no longer held. So I wrote it down and moved it to the top.
That’s exactly what happens when you make software public: the order of features is no longer exclusively your own. Not because strangers dictate it, but because their feedback shifts your own judgment.
What happened next is Part 6.
Part 5 of 9 in the PullMD series.
← PullMD Part 4: From My Tool to an OSS Project | PullMD Part 6: The Multi-User Pivot →