☕ If you find this tool helpful & would like to support its maintenance, please consider leaving a tip on:
https://ko-fi.com/piknockyou
Thank you! :-)
🖼 For a quick impression of this script, refer to the screenshots at the bottom.
GitHub Repo Exporter — Releases · Issues · PRs · Discussions
Export all of a GitHub repo's release notes into a single page, or generate a complete index of every issue, PR & discussion — as HTML or Markdown. No more endless scrolling through paginated release histories. Perfect for feeding a full project overview to an LLM, finding related discussions, or offline reference.
Why You Need This
Working with GitHub repositories at scale is painful:
- No native bulk export: No way to save release notes, changelogs, and asset lists in one go
- Pagination everywhere: Releases, issues, and PRs are spread across dozens of pages requiring endless clicking
- Scattered context: Issues, PRs, and discussions live in separate tabs with no unified view
- LLM-unfriendly: Feeding a full project history to an AI assistant means hours of manual copy-paste
- Missing metadata: Manual copying loses SHA256 checksums, download counts, reaction data, labels, and status information
This script talks directly to the GitHub API to fetch everything — all releases with full asset details, and complete indexes of issues, pull requests, and discussions — then packages it into clean, self-contained files.
Key Features
📦 Complete Release Export
- API-powered fetching: Pulls all releases directly from GitHub's REST API (no fragile HTML scraping)
- Full asset details: Download counts, file sizes, SHA256 digests, upload dates, and auto-classified file types (Installer, macOS, Linux, Archive, Signature, Checksum, etc.)
- Rendered release notes: Markdown bodies rendered to formatted HTML using the marked library
- Smart auto-linking: Automatically links #123 issue references, @username mentions, commit SHAs, and cross-repo references within release notes
- Reaction data: Displays emoji reactions (👍👎😄🎉😕❤️🚀👀) on each release
- Source archives: Zipball and tarball download links included automatically
📋 Issues, Pull Requests & Discussions Index
- Unified listing: Get a complete numbered index of every issue, PR, and discussion in one file
- Selective export: Choose any combination of Issues, PRs, and Discussions via checkboxes
- Range filtering: Target specific items (e.g.,
1-500, 1,5,10-50) instead of fetching everything
- Smart API usage: Uses REST API for issues/PRs and GraphQL for discussions; switches to efficient GraphQL batch queries when a range and token are set
- Status tracking: Shows open/closed/not planned/answered status with color coding
- Label display: Includes all labels associated with each item
🔑 Authentication & Rate Limits
- Token management: Save a GitHub Personal Access Token for higher rate limits (60 → 5,000 requests/hour) and Discussions access
- Persistent storage: Token and all preferences saved across sessions
- Rate limit awareness: Real-time display of remaining API calls and reset times
- Pause & resume: If rate limited, the export pauses and can resume exactly where it left off — no lost progress
🖥️ Modern Panel UI
- Collapsible floating panel: Clean interface that stays out of your way until needed
- Independent sections: Releases and Issues/PRs/Discussions each have their own controls, status, and output buttons
- Smart button states: Action button adapts (Start → Cancel → Resume → New Export) based on current status
- Light/dark theme: Toggle between themes with preference persistence
- Debug logging: Optional per-section log viewer for troubleshooting API calls
- SPA-aware: Handles GitHub's Turbo navigation — no need to refresh when switching repos
Dual Export Formats
HTML Export
- Self-contained: Custom dark-themed styling with no external dependencies — works completely offline
- Open or download: Preview in a new tab or save as a file
- Releases: Styled cards with tag badges, metadata, collapsible asset tables, and reaction badges
- Issues index: Color-coded status indicators, type labels, and clickable links
Markdown Export
- LLM-ready: Clean, structured text perfect for pasting into AI assistants
- Releases: Full release notes preserved as-is, asset tables in Markdown format
- Issues index: Simple list format with status, type, and links
What Gets Exported
For Each Release
- ✅ Release title and tag name
- ✅ Author and publication date
- ✅ Draft and pre-release flags
- ✅ Full release notes (rendered from Markdown)
- ✅ Auto-linked references (#issues, @users, SHAs)
- ✅ Emoji reactions with counts
- ✅ Complete asset list with:
- Filenames and auto-detected type classification
- File sizes
- Download counts
- SHA256 digests
- Upload dates
- Source code archive links
For Each Issue / PR / Discussion
- ✅ Number, title, and direct link
- ✅ Type classification (Issue / Pull Request / Discussion)
- ✅ Status (Open / Closed / Not Planned / Answered)
- ✅ Creation date
- ✅ All associated labels
- ℹ️ This is an index listing — titles, status, and links only. Full content (descriptions, comments, diffs) is not included.
Usage
Quick Start
- Navigate to any page of a GitHub repository
- Click the "📋 Repo Lister" button in the bottom-right corner
- The control panel opens with two sections
Exporting Releases
1. Open the panel → Releases section
2. Click "Start"
↓
3. Script fetches all releases via API (shows progress)
↓
4. Choose output:
🔗 HTML — open in new tab
💾 HTML — download file
💾 MD — download Markdown
Exporting Issues / PRs / Discussions
1. Open the panel → Issues · PRs · Discussions section
2. Check which types you want (Issues ✓, PRs ✓, Discussions ✓)
3. Optionally set a range (e.g., "1-500")
4. Click "Start"
↓
5. Script fetches via REST API + GraphQL (shows progress)
↓
6. If rate limited → pauses → click "Resume" after reset
↓
7. Choose output:
🔗 HTML — open in new tab
💾 HTML — download file
💾 MD — download Markdown
Example Output
Release (Markdown)
## Moonlight PC v6.1.0 (`v6.1.0`)
*cgutman · 2024-09-17 · Pre-release*
### OS Support Changes
- Windows 10 (1809), Windows Server 2019, or later is now required
- 32-bit versions of Windows are no longer supported
### New Features
- Experimental YUV 4:4:4 support for improved text clarity
- HDR streaming now supported with software decoding
### Assets
| Type | File | Size | Downloads | Uploaded | SHA256 |
|:-----|:-----|-----:|----------:|:---------|:-------|
| Linux | [Moonlight-6.1.0-x86_64.AppImage](...) | 52.8 MB | 14,302 | 2024-09-17 | `a3f2d1e9…b8c4` |
| Installer | [MoonlightSetup-6.1.0.exe](...) | 41.3 MB | 89,547 | 2024-09-17 | `7b2e8f4d…1a6c` |
| Source | Source code (zip) | | | | |
| Source | Source code (tar.gz) | | | | |
Reactions: 🚀 42 · ❤️ 18 · 👍 12
---
Issues Index (Markdown)
# Issues, Pull Requests & Discussions Index — user/repo
> ℹ️ This is an index listing — titles, status, and links only.
Repository: `user/repo`
Total: 1,247 (Issues: 892 · Pull Requests: 314 · Discussions: 41)
- [#1 Initial project setup](https://github.com/...) — ISSUE · **CLOSED**
- [#2 Add CI/CD pipeline](https://github.com/...) — Pull Request · **CLOSED**
- [#3 Feature request: dark mode](https://github.com/...) — ISSUE · **OPEN**
- [#4 How to configure custom themes?](https://github.com/...) — DISCUSSION · **ANSWERED**
Installation
Requirements
Steps
- Install a userscript manager
- Install this script
- Visit any GitHub repository
- The "📋 Repo Lister" button appears automatically in the bottom-right corner
Optional: GitHub Token
For Discussions export and higher rate limits:
- Go to GitHub Settings → Tokens
- Create a token with
public_repo scope
- Paste it into the 🔑 Token section in the panel
Technical Details
How It Works
Releases:
- Calls
GET /repos/{owner}/{repo}/releases?per_page=100 with pagination
- Renders Markdown bodies to HTML via the marked library
- Auto-links issue refs, mentions, and SHAs
- Classifies assets by file extension
- Generates self-contained HTML and clean Markdown output
Issues & PRs:
- Calls
GET /repos/{owner}/{repo}/issues?state=all (REST API, paginated)
- For PRs-only queries, uses the dedicated
/pulls endpoint
- When a range and token are set, switches to GraphQL batch queries (50 items per request) for efficiency
- Normalizes data from both REST and GraphQL into a unified format
Discussions:
- Uses GitHub's GraphQL API with cursor-based pagination
- Requires a Personal Access Token (GraphQL is authenticated-only)
- Fetches number, title, URL, answered status, and labels
Rate Limit Handling:
- Monitors
x-ratelimit-remaining and x-ratelimit-reset headers
- On HTTP 403 with zero remaining: pauses and saves exact position
- Resume picks up from saved page number, GraphQL batch index, or discussion cursor
Architecture
- API-first: All data comes from GitHub's REST and GraphQL APIs — no brittle DOM scraping
- Modular design: Releases, Issues, and UI are independent modules with clean interfaces
- SPA-aware navigation: Listens for Turbo events, popstate, and polls for URL changes
- Persistent state: Token and preferences stored via GM_getValue/GM_setValue
- External dependency: marked library (v17.0.1) for Markdown rendering, loaded via CDN
- Error resilience: Network errors retry, rate limits pause gracefully, partial exports are preserved
FAQ
Q: Does this work on private repositories?
A: Yes, if you provide a GitHub token with appropriate permissions. The token is sent with all API requests.
Q: Why do I need a token for Discussions?
A: GitHub's Discussions data is only available through the GraphQL API, which requires authentication. Issues and PRs work without a token (at lower rate limits).
Q: Can I export just a subset of issues?
A: Yes. Use the range filter — enter something like 1-100, 42, or 1,5,10-50. When combined with a token, this uses efficient GraphQL batch queries instead of paginating through everything.
Q: What happens if I get rate limited?
A: The script pauses automatically and shows the reset time. Click "Resume" after the reset to continue exactly where you left off. With a token, you get 5,000 requests/hour instead of 60.
Q: Why is the Issues export just an index?
A: Full issue/PR content (descriptions, comments, review threads, diffs) would require significantly more API calls and produce extremely large files. The index gives you a complete overview with direct links to each item.
Q: Does the HTML export work offline?
A: Yes. All CSS is embedded directly in the file. No external stylesheets, fonts, or scripts are needed.
Q: Can I export releases AND issues at the same time?
A: The two sections operate independently. Start a release export and an issues export separately — they run in their own sections with their own progress tracking.
Q: What happened to the TXT export format?
A: It's been replaced by Markdown (.md), which is more structured, more widely compatible, and better suited for LLM input.
Known Limitations
- Rate limiting: Large repos may exhaust API limits, especially without a token (60 requests/hour). Use a token for 5,000/hour.
- Issues export is index-only: Full descriptions, comments, and diffs are not included — only titles, status, labels, and links.
- Discussions require a token: The GraphQL API used for Discussions is authenticated-only.
- Asset files not downloaded: Exports contain asset metadata (names, sizes, checksums, URLs) — the actual files are not downloaded.
- Memory usage: Repositories with thousands of releases or issues may consume significant browser memory.
- Markdown rendering: Release notes are rendered using the marked library. Complex or non-standard Markdown may render slightly differently than on GitHub.
Permissions Explained
| Permission |
Purpose |
@match *://github.com/*/* |
Activates on all GitHub repository pages |
@grant GM_openInTab |
Opens HTML preview in a new browser tab |
@grant GM_getValue / GM_setValue |
Persists your token and preferences across sessions |
@require marked |
Markdown-to-HTML rendering for release notes |
@run-at document-idle |
Waits for page to fully load before initializing |