GitHub | Releases Full Topic Exporter

Adds a floating button to fetch all releases on a multi-page view and download as HTML/TXT with full asset listings (fetches lazy-loaded assets).

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

작성자
piknockyou
일일 설치 수
0
총 설치 수
2
평점
0 0 0
버전
1.4
생성일
2026-01-17
갱신일
2026-01-17
크기
20.2KB
라이선스
AGPL-3.0
적용 사이트

If you'd like to support me: https://ko-fi.com/piknockyou :-)

GitHub | Releases Full Topic Exporter

Export complete GitHub release histories with full asset details. One-click download of multi-page releases as HTML or clean TXT format with SHA256 checksums and metadata.


Why You Need This

GitHub's release pages are difficult to archive:

  • No native export: No way to save release notes, changelogs, and asset lists in bulk
  • Pagination limits: Multi-page releases require manual clicking through each page
  • Lazy-loaded assets: Asset lists are truncated or loaded on-demand—copy-paste misses checksums and file details
  • Lost context: Manual copying loses release metadata, dates, contributors, and SHA256 hashes

This script fetches all pages of a repository's releases, expands all assets (including lazy-loaded content), and generates a complete archive in your choice of format.


Key Features

Complete Multi-Page Capture

  • Auto-pagination: Automatically fetches all pages of releases (no manual clicking)
  • Progress indicator: Shows "Fetching 1/5..." as it loads each page
  • Delay control: Configurable 300ms delay between requests to avoid rate limits

Full Asset Expansion

  • Lazy-load handling: Fetches truncated/collapsed asset lists from GitHub's expanded_assets endpoint
  • SHA256 checksums: Captures complete cryptographic hashes for verification
  • File metadata: Extracts filenames, extensions, sizes, and download URLs
  • Auto-expand: All <details> sections expanded automatically

Dual Export Formats

HTML Export

  • Styled archive: Preserves GitHub's visual design with all CSS
  • Absolute URLs: All links/images converted to full URLs for offline viewing
  • Page markers: Visual separators show original pagination
  • Clean layout: Hides headers/footers for focused reading

TXT Export

  • Clean Markdown-style: Human-readable plain text format
  • Structured sections: Clear delimiters between releases
  • Asset listings: Indented file trees with sizes and SHA256 hashes
  • Metadata preserved: Release titles, tags, authors, dates, and contributors

What Gets Exported

For each release:

  • ✅ Release title and tag name
  • ✅ Author and publication date
  • ✅ Full release notes (markdown body)
  • ✅ Code blocks and quotes (preserved formatting)
  • ✅ Contributors list
  • ✅ Complete asset list with:
    • Filenames and extensions
    • File sizes
    • SHA256 checksums
    • Download URLs (HTML only)

Usage

Quick Export

  1. Navigate to any GitHub repository's Releases page (e.g., github.com/user/repo/releases)
  2. A green "Load All Releases" button appears in the bottom-right corner
  3. Click to start fetching all pages
  4. After loading completes, two download buttons appear:
    • Download .html: Full visual archive with styling
    • Download .txt: Clean text format with metadata

Export Process

1. Click "Load All Releases"
   ↓
2. Script fetches pages 1, 2, 3... (shows progress)
   ↓
3. For each page: expands all lazy-loaded assets
   ↓
4. Choose format: HTML or TXT
   ↓
5. File downloads instantly

Example Output

TXT Format Sample

==================================================
Moonlight PC v6.1.0 (v6.1.0) by cgutman | 2024-09-17T03:56:03Z
--------------------------------------------------
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 (9) ---
  Moonlight-6.1.0-x86_64.AppImage (52.8 MB)
    SHA256: a3f2d1e9b8c4...
  MoonlightSetup-6.1.0.exe (41.3 MB)
    SHA256: 7b2e8f4d1a6c...
--- END ASSETS ---

Installation

Requirements

Steps

  1. Install a userscript manager
  2. Install this script
  3. Visit any GitHub repository's Releases page (/releases)
  4. The export button appears automatically

Technical Details

How It Works

  1. Pagination Detection: Parses .pagination links to determine total page count
  2. Sequential Fetching: Loads each page with 300ms delay (configurable)
  3. Asset Expansion: For each release:
    • Extracts tag name from release title link
    • Fetches /releases/expanded_assets/{tag} endpoint
    • Replaces lazy <include-fragment> with full asset list
  4. URL Normalization: Converts all relative URLs to absolute
  5. Format Generation:
    • HTML: Bundles page CSS + processed content
    • TXT: Parses DOM to extract structured text + metadata

Architecture

  • No external dependencies: Pure JavaScript, no libraries
  • Single-page processing: Handles GitHub's SPA navigation
  • Error resilience: Failed page loads show error message, don't stop export
  • Shadow DOM isolation: Button UI completely isolated from page styles

Configuration

Edit the CONFIG object at the top of the script:

const CONFIG = {
    postSelector: 'section[aria-labelledby]',  // Release container selector
    fetchDelayMs: 300,                         // Delay between page requests
};

FAQ

Q: Does this work on private repositories?
A: Yes, if you're logged into GitHub. The script uses your browser's existing authentication.

Q: Can I export a single release instead of all pages?
A: Not currently. The script is designed for bulk export. For single releases, use browser "Save As" or copy-paste.

Q: Why does it take so long to load?
A: The script:

  1. Fetches each page sequentially (respects rate limits)
  2. Makes additional requests for each release's full asset list
  3. Waits 300ms between pages to avoid triggering GitHub's rate limiting

Q: What if GitHub changes their HTML structure?
A: The script uses multiple fallback selectors for resilience. If it breaks, report an issue with the repository URL.

Q: Can I customize the TXT format?
A: Yes. Edit the showActionButtons() function's TXT generation section to adjust formatting, add/remove fields, or change delimiters.

Q: Does the HTML export work offline?
A: Mostly. Styles are embedded, but GitHub serves some fonts/icons from CDN. Images and asset downloads still require internet.


Known Limitations

  • Rate limiting: Very large repos (100+ pages) may trigger GitHub rate limits
  • Memory usage: Exporting repos with 1000+ releases may consume significant RAM
  • Asset downloads: The export contains asset metadata only—files themselves are not downloaded

Permissions Explained

Permission Purpose
@match *://github.com/*/*/releases* Activates script only on GitHub release pages
@run-at document-idle Waits for page to fully load before injecting button