thread2text

July 15, 2026 · thread2text

How to Compile an Entire GitHub Thread into One File (and Strip the Bot Noise)

Open any popular open-source issue that’s been alive for a few months and count how many of the comments were written by a human. On a busy thread it can be less than half. The rest is dependency bumps, CI status updates, coverage reports, stale-bot warnings, and a scattering of reactions.

That’s fine when you’re reading in the browser and your eye skips past it. It’s a problem the moment you want to hand the thread to an AI, because the model can’t skip anything — it reads every token you give it, bot noise included. So before you compile a thread into a single file for a model, it’s worth removing the parts that were never meant for a reader in the first place.

This guide covers what actually clutters a GitHub thread, which bots to strip and why, and how to flatten the whole conversation into one clean file in a single step.

What makes GitHub threads so noisy

The noise falls into a few predictable buckets:

Individually none of it is large. Together, on a long thread, it’s the majority of the token weight — and it actively degrades an AI’s answer by burying the three comments that actually matter.

Compile the whole thread in one step

Rather than scrolling and hand-picking comments, thread2text pulls the entire thread through GitHub’s official API and composes it into one file. You control what stays in.

Paste and convert

Drop in the issue, pull request, or discussion URL and hit Convert. The full conversation comes back in order, with metadata — state, labels, participants — preserved.

Mute the bots with one click

This is the part that matters for a clean compile. Common automation accounts are available as one-tap presets, and you can exclude any author by name. Turn off the bots you don’t want and they vanish from the output before it’s ever counted.

Set the verbosity

A verbosity control lets you dial the output from a terse summary to a full, detailed transcript. Lower it when you only need the decision; raise it when you need every reproduction step. Either way you’re choosing your token budget deliberately instead of pasting whatever the page happened to contain.

Which bots to strip (and why)

Here’s a practical reference for the automation you’ll meet most often, and what each one contributes to a thread. Strip the ones that don’t help the question you’re asking.

Bot accountWhat it postsStrip it when…
dependabotDependency bump PRs and version-update notesAlmost always — rarely relevant to a bug discussion
renovateDependency updates and grouped upgrade notesSame as dependabot; keep only if the thread is about an upgrade
github-actionsWorkflow results, “checks passed”, deploy previewsUsually — status noise, not reasoning
codecov / coverallsCoverage deltas and report linksUsually, unless the discussion is about test coverage
Copilot (review/suggestions)Automated review comments and suggestionsDepends — keep if you want the AI’s prior take, strip to focus on humans
sonarcloud / sonarqubecloudStatic-analysis quality gatesUsually — unless the thread is about a specific lint finding
netlify / vercelDeploy preview links and build statusAlmost always — pure build chatter
stale / probot-stale”This has been inactive…” auto-warningsAlways — never adds information

A good default is to strip the deployment, CI, coverage, and dependency bots, keep the humans, and decide case-by-case on automated code review. thread2text ships the common ones as presets so you don’t have to remember the exact account names, and the custom exclusion field handles anything project-specific.

Readable vs AI output for a compiled thread

Once the noise is gone, choose how the remaining content is shaped:

The bot-stripping is identical in both; the difference is only in how the surviving conversation is presented.

Compiling pull requests — comments, reviews, and an optional diff

Pull requests deserve special handling because the reasoning is spread across three places: the top-level conversation, the inline review threads attached to specific lines, and the diff itself. A flat copy loses the connection between a review comment and the code it’s about.

A proper PR compile keeps those relationships — each inline comment stays anchored to its file and line — and treats the diff as an optional layer. When you include it, skipping lockfiles and generated files keeps the change readable; a three-line logic fix shouldn’t arrive wrapped in four thousand lines of dependency hashes. The result is a single file where the what (the diff) and the why (the review discussion) sit side by side, bots removed.

Doing it manually with the GitHub API (the hard way)

If you’d rather assemble the thread yourself, the endpoints are public:

You’d fetch each, paginate (100 items per page), filter out the bot authors by checking each comment’s user.login, then reformat the JSON into readable text. It’s a good afternoon’s scripting the first time and a maintenance burden after that. The one-step version exists precisely so you don’t have to keep that script alive.

FAQ

Can I exclude a specific user, not just the preset bots? Yes. Alongside the presets there’s a custom field where you can exclude any author by username.

Does stripping bots remove useful information? Only if the bot’s output was the point — say, a thread about a specific coverage regression. For ordinary bug and feature discussions, the bots you remove are status and dependency noise, not reasoning.

Does it preserve code blocks in the surviving comments? Yes. Fenced and inline code, plus links, are kept intact so a model reads them correctly.

How much smaller is the compiled output? It varies with how bot-heavy the thread is, but an 80–90% reduction against a raw paste is common on long threads once reactions, edit history, and automation are removed.


A clean file beats a long one. Strip the bots, keep the humans, compile it once, and your AI spends its attention on the conversation that actually mattered.

Compile your first GitHub thread →