Select → collect → synthesize
Editorial selection over your AI conversations — and over a file on GitHub. Tap the sentences that catch your attention while reading, annotate them, and send them back as one payload — no boilerplate, no copy-paste, no API.
Works on chatgpt.com and claude.ai in a mobile browser. Each conversation keeps its own fragment list, stored only on your phone and persisting across visits; export to .md/.txt at any time. Your existing subscription does all the inference. Three ways to run it — all the same payload.
One-time setup, about five minutes. The script then loads automatically on every visit.
⋮ → Add-ons (or Extensions) → search Tampermonkey → Add.
Violentmonkey works identically if you prefer it.⋮ → Add-ons → Tampermonkey → open its Dashboard → tap + (create new script) → long-press in the editor, Select all, Paste → save (file icon or Ctrl-S).No extension needed, but you tap it once per visit to activate.
⋮ → ☆), then ⋮ → Bookmarks → edit it: name it dive and paste over the URL.
If Chrome strips the javascript: prefix when pasting, retype those 11 characters at the front.dive in the address bar and tap the bookmark suggestion to activate tap-to-collect; running it again opens your collected fragments.The same payload as a WebExtension — no userscript manager needed. extension/ in the repo holds the source; assay-extension.zip is the packaged build, and store/ has the listing copy, screenshots and submission checklist.
chrome://extensions → Developer mode → Load unpacked → pick the extension/ folder.
Chrome on Android doesn’t run extensions at all — that’s why mobile routes through Firefox or the bookmarklet.assay-extension.zip as a listed add-on. Automated review typically approves simple extensions within minutes to hours; a follow-up human review can occasionally take days. Once live, it installs on regular Firefox for Android with one tap from its add-on page — set the listing’s visibility to Invisible so only people with the direct link find it..xpi file. On Firefox for Android: Settings → About Firefox → tap the logo five times to unlock the debug menu, then Settings → Install extension from file.Tap a word in any reply — it highlights, with a small bar: + Add collects it, ✎ Note annotates it now (choose whether the note sits before or after the quote), and a verb row — Keep Push Tweak Reword Challenge Cut — collects it classified in one tap; the verb becomes a plain-English clause in the prompt. Tap the highlight to widen it — word → sentence → paragraph → back to the word. Tap other words in the same reply to grow the selection toward them, word by word — into the next paragraph too. A tap further off is a different passage, so it starts a new selection there rather than dragging the highlight across everything between. This works inside the cards ChatGPT renders in the chat too — a canvas draft, or a message swapped into an edit box — and on a phone the caret is handed back, so the keyboard stays down. On GitHub and Gist it runs over a file instead of a reply, and a multi-file gist exports one section per file. To start over: ✕ on the bar, or tap a different reply or empty space. Long-press selection still works for arbitrary spans.
Each fragment gets the next of six rotating highlight colors, and collected marks stay tinted on the page while you keep reading — they are found again after a page refresh, so a reload costs you nothing. Tap the Assay pill to flip between the fragment view and the conversation — the page stays scrollable behind it and taps keep collecting. ChatGPT drops documents into a reply as editable cards; Assay reads them back as ordinary conversation text so a tap selects in them like anywhere else — ⚙ in the tray holds the settings, including Cards: editable, which hands them back to the site's editor. Tap a passage you already collected and the same bar opens on it — change its verb, rewrite its note, or Remove it. In the list: the same, plus flip a note between before/after, delete strays, expand truncated text with a tap. Each conversation keeps its own list (fragments collected in a brand-new chat follow it once it gets its address); a shared cross-conversation list may come later.
↗ To composer writes just your fragments and annotations into the composer — no added prompt text; your annotations carry the intent. Review, then send. If injection is ever blocked, it lands on your clipboard instead.
⬇ .md / ⬇ .txt download the conversation to your phone — named assay-<chat title>-<timestamp> — with your collected fragments and notes appended — nothing is sent or cleared. A picker opens first, listing every message with its author and a preview so you can take the whole thread or just part of it: ↓ on a message takes it and everything after. Both sites load older messages only as you reach them, so an export holds what the page was showing when you pressed the button — or press ⤓ Walk the whole thread in the picker — the quiet amber one, which asks first — and it walks the thread for you: to the top, unfolding anything behind a “show more”, reading each screenful on the way back down, then putting the page back where you were. It blocks while it runs and has a Stop; what you had already ticked survives it. The picker shows every message it found with its length; tap a size to read it. Nothing of Assay is attached to the page between exports, so scrolling, typing and a reply streaming in cost it nothing at all.
Clear and sent batches are restorable from the empty sheet, so nothing is lost by accident.