Skip to main content

Export GitHub issues to individual JSON files with incremental updates and credential management

Project description

GitHub Issue Exporter

A command-line tool that exports GitHub issues to individual JSON files, with incremental updates and credential management. Supports multiple repositories with per-repo configuration.

Authored by Claude Code.

Features

  • Incremental Updates: Only exports issues that have been modified since last export
  • Multiple Repositories: Process multiple repositories concurrently
  • Secure Credential Storage: Encrypted storage of GitHub tokens
  • Rich Progress Display: Beautiful progress bars and status updates
  • Flexible Configuration: Per-repository settings and global configuration
  • Comprehensive Export: Includes issue metadata, comments, labels, and assignees

Installation

# Install with uv
uv tool install github-issue-exporter

# Or install in development mode
uv pip install -e .

Quick Start

# Export issues from a single repository
github-issue-exporter owner/repo

# Export from multiple repositories
github-issue-exporter owner/repo1,owner/repo2,owner/repo3

# Custom output directory
github-issue-exporter owner/repo --output /path/to/exports

# Force re-export (ignore timestamps)
github-issue-exporter owner/repo --force

# Export only open issues
github-issue-exporter owner/repo --state open

Authentication

The tool will automatically prompt for a GitHub Personal Access Token when needed. You can create one at: https://github.com/settings/tokens

Required scopes:

  • repo (for private repositories)
  • public_repo (for public repositories)

Tokens are stored securely using encryption and can be managed per-repository.

Configuration

# View current configuration
github-issue-exporter config --show

# Clear stored authentication
github-issue-exporter config --clear-auth owner/repo

# Set default output directory
github-issue-exporter config --set-output /path/to/exports

Output Format

Issues are exported as individual JSON files with the following structure:

{
  "repository": {
    "owner": "string",
    "name": "string", 
    "full_name": "string"
  },
  "issue": {
    "id": "number",
    "number": "number",
    "author": "string",
    "state": "string",
    "title": "string",
    "body": "string",
    "labels": ["string"],
    "assignee": "string|null",
    "assignees": ["string"],
    "milestone": "string|null",
    "created_date": "iso_string",
    "updated_date": "iso_string",
    "closed_date": "iso_string|null"
  },
  "comments": [
    {
      "id": "number",
      "author": "string",
      "body": "string",
      "created_date": "iso_string",
      "updated_date": "iso_string"
    }
  ],
  "export_metadata": {
    "exported_at": "iso_string",
    "tool_version": "string"
  }
}

File Organization

Files are organized by repository and issue state:

exports/
    owner1/
        repo1/
            open/
                1-first-issue-title.json
                3-another-open-issue.json
                ...
            closed/
                2-closed-issue-title.json
                4-resolved-issue.json
                ...
    owner2/
        repo2/
            open/
                1-some-open-issue.json
            closed/
                2-some-closed-issue.json

Key Features:

  • Issues are organized into open and closed subdirectories based on their current state
  • Filenames use the issue number (not internal ID) for easier identification
  • When an issue state changes, the file is automatically moved to the appropriate directory

Commands

export

Export GitHub issues to JSON files.

github-issue-exporter export [OPTIONS] REPOSITORIES

Options:

  • --output, -o: Output directory (default: ./exports)
  • --force, -f: Force re-export, ignoring timestamps
  • --state, -s: Issue state (open, closed, all)
  • --no-comments: Skip exporting comments
  • --concurrent, -c: Max concurrent repositories (1-10)

cleanup

Remove files for issues that no longer exist.

github-issue-exporter cleanup [OPTIONS] REPOSITORY

config

Manage configuration and credentials.

github-issue-exporter config [OPTIONS]

--version

Show version information.

github-issue-exporter --version

Requirements

  • Python 3.11+
  • GitHub Personal Access Token (for private repos or higher rate limits)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

github_issue_exporter-0.0.1.tar.gz (39.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

github_issue_exporter-0.0.1-py3-none-any.whl (23.1 kB view details)

Uploaded Python 3

File details

Details for the file github_issue_exporter-0.0.1.tar.gz.

File metadata

  • Download URL: github_issue_exporter-0.0.1.tar.gz
  • Upload date:
  • Size: 39.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for github_issue_exporter-0.0.1.tar.gz
Algorithm Hash digest
SHA256 f0a699cfa3bc1a7270e53e88c1e47023c6c5dc34c44568088139981ae11dd691
MD5 5546bc042bd83e9a32c8b72865ea0a63
BLAKE2b-256 43f6c6cd21a8d7b503102dac7f66d8bba981cc57b2dc61f8db8f8be6b692c801

See more details on using hashes here.

Provenance

The following attestation bundles were made for github_issue_exporter-0.0.1.tar.gz:

Publisher: publish.yml on Beep-Boop-Digital/github-issue-exporter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file github_issue_exporter-0.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for github_issue_exporter-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 17eee423a89c6c295ede2b0d757cff398286ed7edc631e753f46481935805b82
MD5 e4089edcae19b05dafbd6cb3c220a897
BLAKE2b-256 6fc8562ba048c803ba792247d3e5a26ca4152caff546761c71a0cfb31e6bea93

See more details on using hashes here.

Provenance

The following attestation bundles were made for github_issue_exporter-0.0.1-py3-none-any.whl:

Publisher: publish.yml on Beep-Boop-Digital/github-issue-exporter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page