Claracle is an automated AI-powered site that publishes weekly, monthly, and yearly summaries of tech trends sourced from GitHub. The system crawls trending and newly-created repositories, applies AI analysis to identify signal vs. noise, and publishes curated insights with zero manual intervention.
Claracle solves the information overload problem in open-source development. Each week, millions of repositories are created or gain stars. Claracle:
- Crawls GitHub API for new and trending repositories in a given week
- Analyzes the data with Copilot to identify what's genuinely important vs. hype
- Generates human-readable weekly summaries with signal, noise, and gaps analysis
- Publishes to GitHub Pages with RSS feeds for consumption
- Reskills every 5 runs to improve its own analysis quality
Result: Curated tech trend insights delivered automatically every week.
Claracle uses a 5-stage pipeline executed entirely in GitHub Actions:
Crawl → Analyze → Generate → Deploy → Reskill
↓ ↓ ↓ ↓ ↓
JSON Markdown Hugo Pages Improvements
Stage 1: Crawl (scripts/crawl.py, scripts/techcrunch_crawler.py)
- Queries GitHub API for repos created/trending in the current week
- Fetches configured external RSS feeds from
config/external_news_sources.jsonin parallel as an enrichment signal - Applies heuristic filtering (language, topic, description quality)
- Outputs:
data/raw/YYYY-WNN.json,data/raw/YYYY-WNN-external-news.json,data/snapshots/YYYY-WNN-stars.json
Stage 2: Analyze (Copilot CLI agents, gpt-5.5)
- Two-step AI analysis using dedicated Copilot CLI agents configured in
.github/agents/:- Weekly Synthesis (
weekly-synthesis) — generates a compact industry narrative (~2 000 tokens) from press context and historical signals - Weekly Analysis (
weekly-analysis) — consumes the synthesis plus raw crawl data to produce the full editorial with signal/noise/gaps classification
- Weekly Synthesis (
- Both agents use gpt-5.5 (configured in agent frontmatter) with only
read/writetools - Outputs:
data/analyzed/YYYY-WNN-summary.mdwith quality score,data/analyzed/YYYY-WNN-correlations.json,data/analyzed/YYYY-WNN-press-context.md - Quality gate: Blocks publish if quality_score < 60 or missing required sections
Stage 3: Generate (scripts/generate_content.py)
- Converts analyzed Markdown into Hugo content structure
- Outputs:
content/weekly/YYYY/WNN.mdready for Hugo build
Stage 4: Deploy (Hugo + GitHub Pages)
- Builds static site from Hugo and publishes to GitHub Pages
- Outputs: Live website + RSS feed at
https://www.claracle.com/index.xml
Stage 5: Reskill (every 5th run)
- Every 5th run, Copilot reviews squad history and recent analysis outputs
- Writes observations and improvement recommendations to
.squad/reskill/YYYY-WNN.md - Optional: Can trigger PR with proposed prompt refinements (not auto-merged)
- Static site generator: Hugo (extended, v0.146.0+)
- Theme: PaperMod
- Search: Pagefind (static, client-side)
- Notifications: RSS feeds + GitHub Releases
- Automation: GitHub Actions
- Deployment: GitHub Pages
- Analysis engine: Copilot CLI agents (
weekly-synthesis,weekly-analysis) using gpt-5.5; no GitHub Models/OpenAI fallback
- Visit the site: Claracle: Browse weekly, monthly, yearly summaries
- Subscribe to RSS: Add
https://www.claracle.com/index.xmlto your reader - Check GitHub Releases: New summaries also posted as releases
- Fork this repository
- Configure
COPILOT_GH_TOKENsecret in your repo (fine-grained PAT with Copilot Requests permission) - Enable GitHub Pages (Actions source)
- Test manual run:
gh workflow run crawl-and-publish.yml - Monitor the first automated run
docs/rollout-checklist.md to ensure all prerequisites are in place.
- Install Hugo:
brew install hugo(macOS) or download from hugo releases (v0.146.0 or newer) - Clone with submodules:
git clone --recurse-submodules https://github.com/jmservera/SquadScope.git git submodule update --init --recursive
- Start dev server:
hugo server(default: http://localhost:1313) - Create production build:
hugo --minify(output:public/)
content/weekly/YYYY/WNN.md— immutable weekly summaries (published once, never modified)content/monthly/YYYY/MM.md— monthly rollups with synthesis narrative, SEO editorial titles (max 70 chars), cross-links to weekly/yearly pages, trend-arc sections, and structured frontmatter (themes, gaps, repos)content/yearly/YYYY.md— yearly narrative summaries with SEO titles, ≤155-char meta descriptions, and cross-links to monthly pagesdata/raw/YYYY-WNN.json— GitHub crawler output (JSON object with keys:week,new_repos,trending_repos,signals,metadata)data/raw/YYYY-WNN-external-news.json— external RSS enrichment output from sources configured inconfig/external_news_sources.jsondata/analyzed/YYYY-WNN-summary.md— AI analysis with quality scoredata/snapshots/YYYY-WNN-stars.json— star count snapshots for trending analysis
.github/workflows/crawl-and-publish.yml runs the full weekly automation on a best-effort Sunday schedule at 11:53 UTC:
- Crawl: GitHub API →
data/raw/YYYY-WNN.json; external RSS feeds →data/raw/YYYY-WNN-external-news.json - Analyze: Copilot →
data/analyzed/YYYY-WNN-summary.md - Quality gate: Validates quality_score ≥ 60; blocks publish if failed
- Generate: Markdown →
content/weekly/YYYY/WNN.md - Deploy: Hugo build → GitHub Pages
- Reskill: Every 5th run, review and improve squad state
- Automated schedule: Sunday 11:53 UTC (
53 11 * * 0) on GitHub-hosted runners - Timing expectation: GitHub Actions
scheduleis best-effort on shared runners; this repo has observed multi-hour delays on scheduled starts - Manual trigger:
gh workflow run crawl-and-publish.ymlor GitHub Actions UI - If punctuality matters: trigger the existing
workflow_dispatchfrom an external scheduler; seedocs/operator-guide.md#schedule-latency-and-mitigation-ladder
COPILOT_GH_TOKEN— Fine-grained PAT with Account → Copilot Requests permission for Copilot CLI analysisGITHUB_TOKEN— Built-in; used for crawling, commits, Pages deployment, and issue/notification automationPODCASTER_API_KEY— Optional; used with thePODCASTER_ENDPOINTActions variable for the post-publish Podcaster handoff. The value must never be logged or committed.
signals.top_topicsde-duplicates repositories byfull_nameacross new and trending bucketsdata/snapshots/YYYY-WNN-stars.jsonpreserves the broader pre-filter candidate set for consistent week-over-weekstars_gainedcomparisons- Live runs use open-ended
created:>/pushed:>GitHub search filters --as-ofmode switches to bounded date ranges for deterministic historical backfills
- Standard deploys: Direct pushes to
maintrigger.github/workflows/deploy-site.yml - Weekly automation:
crawl-and-publish.ymlhandles full pipeline and deploys Pages - Deduplication: Deploy workflow skips bot-authored pushes to avoid duplicate Pages runs
docs/operator-guide.md— Complete setup, configuration, and troubleshooting guide for new operatorsdocs/rollout-checklist.md— Step-by-step verification checklist for first-time deploymentsdocs/pipeline-validation.md— Stage checklist, artifact handoffs, success criteria, and known limitationsdocs/analysis-spec.md— Detailed specification for analysis output format and quality gate criteria.squad/decisions.md— Architectural decisions and decision history