How hesperine/herald works
HERALD scans official game-community accounts, turns public posts into deduplicated candidate notices and structured Campaign → Activity → Action facts, then schedules reminders and publishes a static activity site. The README documents the daily scan, pending-extraction retries, digest rules, seven-day reminder snapshots, and optional reachability and media features. The graph uses those documented workflows alongside the sampled source and storage implementations; orchestration details not shown in excerpts are represented only where the README supports them.
Main entry points: runner.py Run orchestration · pipeline.py Observation pipeline · semantic_pipeline.py Semantic processing · site.py Static site builder
Components 25
Collection
- Run orchestration
src/herald/runner.py - Runtime settings
src/herald/config.py - Source registry
src/herald/registry.py - Miyoushe adapter
src/herald/sources/miyoushe.py - Skland adapter
src/herald/sources/skland.py - Weibo adapter
src/herald/sources/weibo.py
Extraction and facts
- Observation pipeline
src/herald/pipeline.py - Source deduplication
src/herald/dedupe.py - Candidate notices
src/herald/candidate_notices.py - AI extraction
src/herald/ai.py - Semantic processing
src/herald/semantic_pipeline.py - Campaign assembly
src/herald/assembly.py - Campaign merging
src/herald/merge.py - Domain facts
src/herald/models.py
State and reminders
- Filesystem state
src/herald/storage.py - Date queue
src/herald/scheduler.py
Publishing and delivery
- Digest and reminders
src/herald/notifications.py - Static site builder
src/herald/site.py - Image caching
src/herald/media.py - Reachability labels
src/herald/reachability.py
Other components
- Daily run
- Official communities
- Configured AI service
- User SMTP
- Published site
Connections 31
- Daily run → Run orchestration: starts run
- Run orchestration → Runtime settings: loads settings
- Run orchestration → Source registry: resolves sources
- Source registry → Miyoushe adapter: selects adapter
- Source registry → Skland adapter: selects adapter
- Source registry → Weibo adapter: optional adapter
- Miyoushe adapter → Official communities: reads timelines
- Skland adapter → Official communities: reads timelines
- Weibo adapter → Official communities: reads timelines
- Run orchestration → Observation pipeline: processes observations
- Observation pipeline → Source deduplication: deduplicates
- Observation pipeline → Candidate notices: registers candidates
- Observation pipeline → Semantic processing: extracts facts
- Semantic processing → AI extraction: requests extraction
- AI extraction → Configured AI service: sends public material
- Semantic processing → Campaign assembly: assembles facts
- Semantic processing → Campaign merging: merges revisions
- Campaign assembly → Domain facts: creates domain facts
- Campaign merging → Domain facts: updates domain facts
- Observation pipeline → Filesystem state: saves observations
- Semantic processing → Filesystem state: reads and writes state
- Run orchestration → Date queue: compiles reminders
- Date queue → Filesystem state: stores date queue
- Run orchestration → Digest and reminders: prepares digest
- Digest and reminders → Filesystem state: reads due work and records receipts
- Digest and reminders → User SMTP: sends digest
- Run orchestration → Static site builder: builds publication
- Static site builder → Filesystem state: reads facts and snapshots reminders
- Static site builder → Image caching: caches visible images
- Static site builder → Reachability labels: classifies locations
- Static site builder → Published site: writes static files