Offline tooling to scrape GrandChase community sources, normalize hero rankings, score the meta in SQLite, and analyze the results in Jupyter.
- A Python package under
src/grandchase_meta_analyzer/. - Scrapers for StrategyWiki, NamuWiki, and Fandom.
- SQLite database build with hero, mode, score, trait, and skill tables.
- Optional local-LLM skill tagging through an OpenAI-compatible endpoint.
- VS Code tasks, settings, extension recommendations, and Copilot workspace instructions.
- Bootstrap the local environment:
bash scripts/bootstrap.sh- Run the full unattended pipeline:
bash scripts/run_pipeline.sh- Verify the setup or rerun pieces individually:
bash scripts/verify_setup.sh
.venv/bin/python -m grandchase_meta_analyzer.cli scrape --source strategywiki
.venv/bin/python -m grandchase_meta_analyzer.cli normalize- Open the notebook:
.venv/bin/python -m jupyter notebook notebooks/analysis.ipynb- Open the local browser app:
bash scripts/run_explorer.shmake bootstrap
make pipeline
make pages
make explorer
make lint
make testIf you just want to search heroes, cooldowns, coefficients, patch notes, and skill text without digging through notebook cells, use the local browser app:
bash scripts/run_explorer.shYou can also launch it through the package entrypoint:
.venv/bin/python -m grandchase_meta_analyzer.cli explorerThe browser reads from data/processed/grandchase.db and the current stored Namu captures only. It does not trigger live scraping.
By default, the explorer now uses the configured port in config/config.json: 8506. It will reuse an existing GrandChase Atlas server on that port and fail clearly if something else is already occupying it.
There are now two free hosted paths in the repo.
This is the path if you want a phone-friendly site on GitHub Pages with no server running on your Mac.
- Commit
data/processed/grandchase.dbwhenever you want the hosted site refreshed. - Build the static site locally if you want to preview it:
make pages- Push to GitHub.
- In the repository settings, enable GitHub Pages and choose the GitHub Actions source.
- The workflow in
.github/workflows/pages.ymlwill builddocs/data/atlas.jsonand publish the static site.
The GitHub Pages atlas keeps the overview, search, and hero dossier views. It does not yet mirror the full Streamlit comparisons workspace.
If you want the fuller Streamlit app instead of the static Pages export:
- Push the repository to GitHub.
- Keep
data/processed/grandchase.dbcommitted whenever you want the hosted app refreshed. - In Streamlit Community Cloud, create a new app from the repo.
- Set the main file path to
streamlit_app.py. - Deploy.
No secrets are required for either hosted path. Both use the checked-in SQLite database.
data/raw/strategywiki_heroes.csvdata/raw/namuwiki_heroes.csvdata/raw/fandom_chaser_traits.csvdata/raw/fandom_skills.csvdata/processed/grandchase.dbdata/processed/hero_leaderboard.csvdata/processed/skill_tags.csvwhen LLM tagging is enabled
The repo supports optional skill tagging through a local OpenAI-compatible endpoint.
- Update
.envif your endpoint or model differs. - Set
ENABLE_LLM_TAGGING=1. - Run either
bash scripts/run_pipeline.shor.venv/bin/python -m grandchase_meta_analyzer.cli tag-skills.
.
├── config/
├── data/
├── logs/
├── notebooks/
├── scripts/
├── src/grandchase_meta_analyzer/
├── tests/
├── Makefile
├── pyproject.toml
└── requirements.txt