Add exchange changelog monitoring agent - #7
Draft
pcriadoperez wants to merge 6 commits into
Draft
Conversation
Automated daily system that monitors API changelogs for all 110 CCXT exchanges and creates GitHub issues when changes are detected. - Playwright fetches changelog pages (handles JS-rendered + bot blocking) - SHA-256 hashing detects content changes between runs - Claude Haiku interprets diffs and extracts structured API change data - GitHub API creates issues with labels, deduplicating against existing - 81 exchanges have changelog URLs (93 total sources), 12 multi-source - 29 exchanges without URLs trigger "needs review" issues - New CCXT exchanges auto-detected via __init__.py comparison - Daily cron at 08:00 UTC via GitHub Actions
pcriadoperez
force-pushed
the
changelog-agent
branch
from
April 13, 2026 01:21
6afe301 to
fe7b877
Compare
- Async concurrent fetching with Playwright (5 pages at once vs sequential) - Fix agent truncation: both old/new text truncated from head (changelogs prepend) - Increase agent max_tokens to 4000 to prevent truncated JSON responses - Auto-create GitHub labels before issue creation (prevents 422 errors) - Rate limiting on GitHub API calls (2s between calls, avoids 30 req/min cap) - Auto-seed on first run (empty state triggers seed, prevents issue flood) - Truncate state text_snapshot to 20K chars (keeps state.json under 2MB) - Add .gitignore for __pycache__ - Increase workflow timeout to 30 minutes - Remove dead legacy changelog_url fallback code - check command reuses single browser for all sources
- Fix Bybit announcements URL (was returning HTTP2 protocol error) - Deduplicate 9 exchange aliases that shared identical changelog URLs (binancecoinm, binanceusdm, gateio, huobi, krakenfutures, kucoinfutures, myokx, okxus, woofipro) — avoids duplicate fetches - Add pacifica exchange (newly detected in CCXT) - Log when agent finds no actionable changes (was silent before)
- Add retries (3 attempts with backoff) for failed fetches - Use realistic browser User-Agent and headers to avoid bot blocking - Try networkidle first, fall back to domcontentloaded + extra wait - Increase timeout to 45s, add extra wait for JS-rendered pages - Remove fetch-failure GitHub issue creation (just log instead) - Remove broken Bybit announcements URL (site blocks headless browsers) - Fixes modetrade/orderly empty page issue (now succeeds on retry)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Files
exchange-changelog-monitor/monitor.py— Main CLI (run,seed,check)exchange-changelog-monitor/fetcher.py— Playwright-based page fetchingexchange-changelog-monitor/agent.py— Claude Haiku diff interpretationexchange-changelog-monitor/state.py— JSON state persistenceexchange-changelog-monitor/exchanges.yaml— All 110 exchanges with changelog URLs.github/workflows/changelog-monitor.yml— Daily cron at 08:00 UTCTest plan
pip install -r exchange-changelog-monitor/requirements.txt && playwright install chromiumpython exchange-changelog-monitor/monitor.py check binanceto verify fetch + analysis pipelinepython exchange-changelog-monitor/monitor.py seedto establish baseline statepython exchange-changelog-monitor/monitor.py run --dry-runto verify full pipeline without creating issuesdry_run: trueto test in CIdry_run: falsefor production🤖 Generated with Claude Code