Point at a list. Hunt down every page. Get one clean Markdown file.
A floating Chrome extension that turns any list of links into a single downloadable .md.
Open a page that has a list of links (a table of contents, a chapter list, an index), click the floating button, point at the list, and press Start. Text Hunter visits every link, grabs each page's heading and paragraphs, and saves everything into one Markdown file.
# Chapter 1 – The Arrival
First paragraph…
---
# Chapter 2 – The Road West
First paragraph…
| 🎯 Element picker | Hover and click the list on the page. Press ↑ / ↓ to move to a parent or child before you click. Esc cancels. |
| 🧬 Similar-element finder | Several lists that look alike? They're listed with checkboxes, link counts and a first-link preview. Tick the ones you want, or use all / none. |
| 🔭 Hover to locate | Hovering a row scrolls the page to that element and highlights it in orange. |
| 🚫 Smart skipping | Skips File: / Image: / Category: pages, images, PDFs, archives, media and same-page anchors. File-name-only paragraphs such as File:Cover.jpg.jpg are dropped too. |
| 🔁 Polite fetching | Configurable delay, retries and retry wait, so you don't hammer a server. |
| 📊 Live progress | Progress bar, a running log, and a Cancel button that still saves what was collected. |
| 🖱️ Floating & draggable | A small button you can drag anywhere. It remembers its position. Built in a Shadow DOM so site CSS can't break it. |
Text Hunter isn't on the Chrome Web Store, so load it unpacked:
- Clone or download this repository.
- Open
chrome://extensionsand switch on Developer mode. - Click Load unpacked and choose the project folder (the one containing
manifest.json). - Open any page and look for the round indigo button in the bottom-right corner.
- Click the floating button to open the panel.
- Pick element. The panel hides; hover the list you want and click it.
- If similar elements were found, tick the ones to include.
- Adjust delay / retries / filename if you like.
- Press Start. A
.mdfile downloads when it finishes.
Tip: if the summary says
0 links, press ↑ while picking to select a parent that actually contains the links.
- Links are collected from the selected element(s), de-duplicated, and filtered.
- Each page is fetched with
fetch()from the current page, then parsed withDOMParser. - The title comes from
h1[itemprop="name"], falling back to the first<h1>, then<title>. - Every non-empty
<p>becomes a paragraph. Pages are joined with---.
- Only one permission:
storage, used to remember the button's position. - Nothing is sent anywhere. Text Hunter only requests the links you selected.
- No analytics, no remote code, no dependencies.
- Requests run from the page you're on, so they're subject to that site's same-origin / CORS rules. Lists that link to other domains may fail.
- Content that's rendered by JavaScript after load won't appear in the fetched HTML.
- Only paragraphs and the main heading are extracted (no images, tables or lists).
- Please respect each site's terms of service and
robots.txt.
TextHunter/
├─ manifest.json
├─ content.js
├─ icons/
│ ├─ logo.svg
│ ├─ icon16.png
│ ├─ icon48.png
│ └─ icon128.png
├─ docs/
│ ├─ index.html ← static landing page (GitHub Pages)
│ └─ logo.svg
└─ README.md
A dependency-free landing page lives in docs/. To publish it, enable GitHub Pages in the repo settings and serve from the /docs folder of your default branch.
Made by prantosmss · pranto.smss.dev@gmail.com