Skip to main content

Organize GitHub starred repos into Star Lists — free heuristic categorization, optional LLM

Project description

GitHub Stars Organizer

MIT License Python 3.12+ CI

Organize 300+ GitHub stars into lists in minutes — free, no AI required.

GitHub's official API can star/unstar repos, but cannot create or manage Star Lists. This CLI:

  1. Fetches your starred repos (public GitHub API)
  2. Categorizes them by name, description, language, and topics
  3. Creates lists and assigns repos via your browser session

Why this tool?

Tool Drawback This project
github-star-organizer Requires paid LLM API Free heuristic by default
ghstars Manual category files only Auto-plan + custom rules + optional LLM
starred AI-first, complex Simple: plan → review → apply

Install

# From source
git clone https://github.com/nishal21/github-stars-organizer.git
cd github-stars-organizer
uv sync

# Or from PyPI (after v0.2.0 release)
pip install github-stars-organizer

Requires Python 3.12+ and uv (recommended).

Windows note: If pip install says scripts are not on PATH, either add
%APPDATA%\Python\Python313\Scripts to your PATH, or run:

python -m stars_organizer init

From the project folder you can also use: uv run organize-stars init

Quick start

1. Build a plan (no credentials needed)

organize-stars plan --username YOUR_USERNAME

Review categorization-plan.json. Edit assignments or add custom rules:

cp categories.example.toml categories.toml
# edit categories.toml
organize-stars plan --username YOUR_USERNAME --categories categories.toml

2. Configure credentials

organize-stars init

Or copy and edit manually:

cp config.example.toml config.toml
Field How to get it
username Your GitHub username
token GitHub token settings (classic; public_repo if you star private repos)
cookies See Getting your cookie below

3. Preview and apply

organize-stars apply --dry-run
organize-stars apply

View result: https://github.com/YOUR_USERNAME?tab=stars

If interrupted, resume with:

organize-stars apply --resume

Getting your browser cookie

GitHub Star Lists have no public API — applying lists uses your browser session.

  1. Log into github.com in Chrome or Edge
  2. Press F12 to open DevTools
  3. Open the Network tab
  4. Refresh the page
  5. Click any request to github.com
  6. Under Headers, find Cookie
  7. Copy the entire cookie string into config.toml[github.session]cookies

Cookies expire every few weeks. Refresh from DevTools if you get CSRF or 403 errors.

CLI reference

organize-stars init [--config config.toml] [--force]
organize-stars status [--config config.toml]
organize-stars lists [--config config.toml]

organize-stars plan --username USER [--categories categories.toml] [--output plan.json]
organize-stars plan --config config.toml [--categories categories.toml]
organize-stars plan --config config.toml --llm          # optional AI mode

organize-stars apply [--config config.toml] [--plan plan.json] [--dry-run] [--yes] [--resume]

Optional AI mode (multi-provider)

Install the LLM extra:

uv sync --extra llm
organize-stars providers    # list all supported providers

Add to config.toml (see config.example.toml):

[llm]
provider = "mistral"
preferences = "I'm a web designer, gamer, and anime fan."

[llm.providers.mistral]
api_key = "your-mistral-key"

[llm.providers.openai]
api_key = "sk-..."

[llm.providers.groq]
api_key = "gsk_..."

Supported providers: openai, mistral, groq, openrouter, google, deepseek, together, fireworks, cerebras.

API keys can also be set via env vars (MISTRAL_API_KEY, OPENAI_API_KEY, GROQ_API_KEY, etc.).

organize-stars plan --config config.toml --llm
organize-stars plan --config config.toml --llm --provider groq

Heuristic mode (no API key) remains the default without --llm.

Default categories

  • AI & LLM
  • Web Dev & Frontend
  • Mobile & Android
  • Backend & APIs
  • Dev Tools & CLI
  • Self-hosting & DevOps
  • Security & Privacy
  • Media & Creative
  • Gaming & Entertainment
  • Go & Systems
  • Learning & Inspiration
  • Misc & Tools

Customize via categories.toml or edit the plan JSON before applying.

Troubleshooting

Problem Fix
CSRF / 403 error Refresh browser cookie in config.toml
Rate limited Wait a few minutes; reduce concurrency in config
More than 32 lists GitHub hard limit — merge categories in plan or categories.toml
Apply interrupted Run organize-stars apply --resume
config.toml not found Run organize-stars init

Check setup anytime:

organize-stars status

Privacy and security

  • Token and cookies stay in local config.toml (gitignored) — never commit them
  • Plan mode reads only public repo metadata
  • LLM mode (optional) sends metadata to your configured provider
  • See SECURITY.md

Development

uv sync --dev
uv run pytest
uv run ruff check .

See CONTRIBUTING.md.

Attribution

Web client adapted from luoling8192/github-star-organizer (MIT). See ATTRIBUTION.md.

License

MIT — see LICENSE.

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_stars_organizer-0.2.4.tar.gz (51.4 kB view details)

Uploaded Source

Built Distribution

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

github_stars_organizer-0.2.4-py3-none-any.whl (27.4 kB view details)

Uploaded Python 3

File details

Details for the file github_stars_organizer-0.2.4.tar.gz.

File metadata

  • Download URL: github_stars_organizer-0.2.4.tar.gz
  • Upload date:
  • Size: 51.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for github_stars_organizer-0.2.4.tar.gz
Algorithm Hash digest
SHA256 97f73555dec571c67fb7afd8613a5bb4bb928fd547fe7bdaa02e56272e6e28bc
MD5 3b059c8306e1a0cabeeaf7010f8ece4b
BLAKE2b-256 8c622aca1daec60749b6df503a89baeaebff12860712b2a51f3c4805f08e2ef1

See more details on using hashes here.

File details

Details for the file github_stars_organizer-0.2.4-py3-none-any.whl.

File metadata

File hashes

Hashes for github_stars_organizer-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 ca664c8a0274855a1818363bfc2149bda76445b778b994eb0eb5df6168b6d774
MD5 04e88be002a3a7bbd43c99ddc5a12093
BLAKE2b-256 92d00a1504a581ed4466c6610a16f81608a4ed2c555dd9fe1a0816f3b8a6b003

See more details on using hashes here.

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