Erstellt: 2026-07-21 Status: Draft (nicht production-ready) Ziel: Späteres Wiederaufgreifen ohne bei Null anzfangen
event_id in state.json.
draft oder scheduled, nicht published.sovgrid-nostr-daily.py schreibt erst bei publish_scheduled() event_ids.engagement_fetcher.py sucht nur nach Posts mit event_ids.sovgrid-nostr-daily.py --publish-scheduled veröffentlichte Posts
bekommen event_ids.state.json/data/scripts/blog/nostr-state/state.jsonposts[], reposts[], replies[], liked_events[]status, event_id, published_at, article_slugstatus=draft/scheduled und event_id=(none)generate_nostr_stats.py/data/scripts/blog/generate_nostr_stats.pystate.json + nsm-stats.json, generiert nostr-stats.jsonnostr-stats.json mit followers, engagement, statsstate.json, nicht von Relaysengagement_fetcher.py/data/scripts/blog/engagement_fetcher.pyevent_id in state.jsonpublish_scheduled() laufeninsights.astro (modifiziert)follower-grid, follower-card/api/nostr-stats.json für live DatenCaddyfile (modifiziert)handle /api/nostr-stats.json mit rewrite * /nostr-stats.jsonroot * /srv, file_server, JSON headers0 3 * * * /usr/bin/python3 /data/scripts/blog/generate_nostr_stats.py /tmp/nostr-stats.json && scp /tmp/nostr-stats.json floki:/home/cipherfox/sovereign-blog/srv/nostr-stats.json && ssh floki 'docker restart sovereign-caddy'
generate_nostr_stats.py generiert korrekte nostr-stats.json/api/nostr-stats.jsonnostr-stats.json wird von Floki via Docker-Volume gemountetRelay-Follower-Zählung:
nostr-tools oder @nostr/tools installierenkind-10001 (follow events) pro Accountstate.json schreibengenerate_nostr_stats.py liest follower counts aus state.jsonEvent-ID-Workflow:
state.json eintragenengagement_fetcher.py sucht nach Blog-URLs auf Relayspublish_scheduled() für neue Posts nutzenIntegration:
state.json mit event_ids füllen (alte Posts manuell oder neue via status machine)curl https://sovgrid.org/api/nostr-stats.jsonnpm run build && deploy.shsovgrid-nostr-daily.py: Status-Machine (draft → scheduled → published)engagement_fetcher.py: Relay-Query für replies/likes/repostsgenerate_nostr_stats.py: Generiert nostr-stats.json aus state.jsonCaddyfile: Served /api/nostr-stats.json von /srv/nostr-stats.json