BulkMD
§

Blog · Field notes

Notes on Markdown, LLM context, and browser tooling.

Practical, measured posts on cleaning web content for AI pipelines — from one-shot prompts to bulk RAG ingest. No pop-ups, no newsletters; just things we learned while shipping BulkMD.

32 postsUpdated monthly
Comparisons

MarkDownload Alternative: A Migration Guide

MarkDownload was pulled from the Chrome Web Store. Here's how to pick a MarkDownload alternative and migrate your web-to-Markdown workflow cleanly.

10 min readMarkdownChrome extensionRead
Engineering

Right-Click Copy as Markdown in Manifest V3

Build a right-click Copy as Markdown context menu in Manifest V3 — register it in onInstalled, branch on page versus selection, and copy from a service worker.

13 min readManifest V3Chrome extensionRead
LLM Context

Context Window Budgeting for RAG in 2026

A practical guide to context window budgeting for RAG: chunk sizing, relevance versus recall, the cost of stuffing pages, and a token-budget worksheet.

14 min readRAGLLM contextRead
Cost & Performance

Estimating LLM Token Count and Cost Client-Side

How to estimate LLM token count and cost in the browser without bundling a tokenizer — the chars-per-token heuristic, accuracy bounds, and a JS implementation.

15 min readTokensCost optimizationRead
LLM Context

Generative Engine Optimization for Developer Docs

Make developer documentation citable by AI Overviews, ChatGPT, and Perplexity with answer-first sections, semantic HTML, and fact density.

13 min readSEOLLM contextRead
Workflow

Importing Markdown into Notion Without Losing Formatting

A practical guide to importing Markdown into Notion: what paste converts to blocks, what the file importer keeps, and how to avoid the lossy parts.

13 min readNotionMarkdownRead
Comparisons

Markdown vs JSON vs Text for LLM Context

When to feed an LLM Markdown vs JSON vs plain text: token density, reasoning reliability, and the rule for picking a format per content type.

14 min readLLM contextMarkdownRead
Workflow

Obsidian Frontmatter for Web Clipping, Done Right

Clip web pages into Obsidian with clean YAML frontmatter and Properties: which fields to keep, the obsidian://new URI scheme, and Dataview-friendly metadata.

13 min readObsidianMarkdownRead
LLM Context

Packaging a Web Corpus for AI Agents to Ingest

Turn clipped pages into an agent-ready web corpus — a folder of Markdown plus an index and a manifest.json with file, title, URL, and token counts.

15 min readLLM contextRAGRead
Workflow

Send a Web Page to ChatGPT, Claude, Perplexity

How to send a web page to ChatGPT, Claude, and Perplexity as clean Markdown context instead of a raw URL — paste vs link, per-tool quirks, and a one-click flow.

14 min readLLM contextMarkdownRead
Workflow

YouTube Transcripts to LLM Context: A Clean Markdown Flow

Turn YouTube transcripts into clean, low-token Markdown LLM context: strip timestamps and filler, then feed Claude or ChatGPT a citable source.

12 min readLLM contextMarkdownRead
Workflow

Building a Personal RAG with BulkMD Markdown Output

A reproducible 200-line personal RAG pipeline — capture with BulkMD, chunk on Markdown headings, embed with OpenAI, retrieve with LanceDB, answer with Claude.

11 min readRAGMarkdownRead
Workflow

Building an Obsidian Knowledge Base from Web Pages

A reproducible workflow for turning your read-it-later list into a structured Obsidian vault — frontmatter, folder shape, and linking patterns.

11 min readObsidianNotionRead
Engineering

chrome.storage Patterns for Manifest V3 Extensions

When to use chrome.storage.session, .local, .sync, or IndexedDB in a Manifest V3 extension — quotas, throughput, and a practical layout for queue-heavy work.

11 min readManifest V3Service workerRead
Workflow

Building a Claude Code Knowledge Base from Web Docs

A reproducible workflow for turning any documentation site into a local Markdown knowledge base that Claude Code, Cursor, and other coding agents can index.

11 min readClaudeChatGPTRead
Cost & Performance

Claude Model Routing: Haiku vs Sonnet vs Opus for RAG

When to call Haiku, Sonnet, or Opus in a RAG pipeline — a measured comparison of cost, latency, and answer quality across the Claude 4.x lineup in 2026.

11 min readClaudeCost optimizationRead
LLM Context

How Google AI Overviews Pick Citations in 2026

What gets surfaced in AI Overviews — the signals Google uses to choose citations, why semantic HTML beats keywords, and what to fix this week.

12 min readSEOLLM contextRead
LLM Context

How to Write an llms.txt File for AI Search in 2026

A practical guide to authoring llms.txt — the emerging standard that tells ChatGPT, Claude, Perplexity, and Google AI Overviews what your site is about.

13 min readLLM contextSEORead
Engineering

Manifest V3 Service Workers for Bulk URL Processing

Engineering patterns for a Chrome extension that survives service-worker restarts mid-job — queue persistence, tab pools, alarms, and what holds up at scale.

13 min readManifest V3Service workerRead
LLM Context

How AI Agents Read Markdown Context in 2026

How Claude, ChatGPT, Cursor, and Perplexity actually parse Markdown — what they cite, what they drop, and how to structure pages for higher answer quality.

13 min readLLM contextMarkdownRead
Comparisons

OpenAI vs Voyage vs Cohere Embeddings: 2026 RAG Benchmark

Three embedding-model families compared on a Markdown-corpus RAG task — retrieval quality, cost per million tokens, dimensions, and which fits which workload.

11 min readRAGTokensRead
Cost & Performance

Anthropic Prompt Caching + Markdown: 90% Cost Reduction

How pairing Anthropic prompt caching with clean Markdown context drops repeat-query costs to ~10% of baseline — with reproducible numbers from a real workflow.

12 min readCost optimizationTokensRead
Comparisons

Readability vs Trafilatura vs jsdom: 2026 Benchmark

A measured comparison of three HTML content extractors across 50 real pages — extraction fidelity, runtime, edge cases, and which fits a browser extension.

12 min readReadabilityTurndownRead
Comparisons

Server Scrapers vs Browser Extensions: 2026 Tradeoffs

When server-side scraping APIs win, when a browser extension wins, and the four metrics — latency, auth coverage, cost, rate-limit risk — that decide it.

11 min readWeb scrapingChrome extensionRead
Engineering

Handling SPA Pages in a Manifest V3 Content Script

Why naive document_idle injection fails on Next.js, React, and Vue apps — and the MutationObserver-and-quiescence pattern that reliably waits for hydration.

11 min readManifest V3Content scriptRead
Cost & Performance

Token Math by Content Type: Code, Tables, Lists in 2026

How prose, code, tables, lists, and JSON tokenize differently in 2026 — the per-byte token cost of each content type, and where Markdown compresses best.

11 min readTokensCost optimizationRead
Comparisons

Turndown vs Pandoc vs marked: Serializer Benchmark

Three HTML-to-Markdown serializers compared on the same 50 pages — output fidelity, GFM coverage, runtime, and which one fits a browser-side pipeline.

12 min readTurndownPandocRead
Engineering

Vite + Manifest V3: Bundling a Chrome Extension Right

How to bundle a Manifest V3 extension with Vite without tripping the no-remote-code policy — single-file service workers, asset paths, and IIFE outputs.

11 min readManifest V3Chrome extensionRead
Workflow

How to Convert Any Web Page to Markdown for ChatGPT & Claude (2026 Guide)

A practical guide to turning live web pages into clean Markdown for LLMs — why it cuts tokens 60–80%, how Readability strips boilerplate, and the fastest browser-side workflow.

8 min readLLM contextMarkdownRead
Engineering

Bulk Export Web Pages to Markdown: a Repeatable Chrome Workflow

How to convert dozens of URLs to clean Markdown at once using a local Chrome extension — concurrency, retries, queue persistence, and the patterns that make it survive a service-worker restart.

8 min readBulk exportChrome extensionRead
Cost & Performance

Cut LLM Token Costs by 60–80% with Clean Markdown Context

A measured breakdown of how converting source pages to Markdown reduces prompt tokens, the math behind the savings, and where the gains plateau — with real numbers from twenty benchmark pages.

8 min readTokensCost optimizationRead