Save a web article as a clean Markdown ZIP: readable text, preserved tables, and original images in assets/.
HTML Markdown Clipper is a Chrome/Edge extension for people who collect serious web material into Obsidian, Git repos, notes, docs, or knowledge bases. Open an article, click once, and get a portable Markdown package instead of a messy copy-paste.
- One-click article capture: Markdown plus local image assets.
- Keeps real article images instead of hotlinking remote URLs.
- Cleans sidebars, ads, recommendations, comments, avatars, and navigation.
- Preserves useful Markdown tables for docs, wiki pages, and technical articles.
- Works from the page context first, so logged-in article images have a better chance to download.
- Ships with regression tests for Bambu Wiki, Zhihu-like pages, WordPress lazy images, and table conversion.
Article Title.zip
├── Article Title.md
└── assets/
├── image1.png
├── image2.jpg
└── image3.webp
Inside the Markdown, image links are rewritten to local paths:
Clone and build:
git clone https://github.com/yinbaozong/html-markdown-clipper.git
cd html-markdown-clipper
npm install
npm run buildLoad it in Chrome or Edge:
- Open
chrome://extensions/oredge://extensions/. - Enable Developer mode.
- Click Load unpacked.
- Select the generated
dist/folder. - Pin the extension if you want one-click access.
Export your first article:
- Open an article page.
- Click the extension icon.
- Click the sniff button to preview title and image count.
- Click Download Markdown ZIP.
- Unzip the file and drop the Markdown folder into Obsidian or any docs repo.
If you want to reproduce this project but are not sure how to start, feel free to contact me anytime: yinbaozong@163.com
- Zhihu columns and long answers
- Bambu Wiki and product docs
- CSDN, blog posts, and technical tutorials
- WordPress articles with lazy-loaded images
- Documentation pages with tables and screenshots
Some sites block image downloads or require login. Open the page normally in your browser first, then run the extension from that same tab.
src/content/content.jsclones the current page, lazy-loads images, removes noisy blocks, and extracts the best article body.@mozilla/readabilityprovides the first article parse.- Site-aware fallback selectors preserve content Readability may miss.
src/shared/markdown.jsconverts HTML to Markdown with Turndown and GFM table support.src/shared/downloadImages.jsdownloads article images concurrently.src/shared/zip.jsbuilds the final Markdown ZIP with JSZip.
These commands are expected to pass before publishing changes:
npm run test:extract
npm run test:perf:5
npm run buildCurrent local verification:
test:extract: passedtest:perf:5: passed, average total simulated response about 90 ms with 5 imagesbuild: passed and generateddist/
Install dependencies:
npm installRun tests:
npm run test:extract
npm run test:perfBuild after editing:
npm run buildReload the unpacked extension in the browser extensions page after every build.
- Extension still shows old behavior: click Reload on the extension card, or remove and load
dist/again. - Images are missing: make sure the page is fully loaded and you are logged in if the site requires it.
- Markdown has extra page chrome: open an issue with the target URL and a short HTML sample if possible.
- Download is blocked: check browser download permissions and retry with Save As enabled.
