cloudflare-email-delivery
Deliver Hermes AI Topics reports via Cloudflare Email Service. Setup, cron config, and troubleshooting for email channel.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Deliver Hermes AI Topics reports via Cloudflare Email Service. Setup, cron config, and troubleshooting for email channel.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Comprehensive wiki health checking, maintenance, and remediation — duplicate detection, entity dedup/disambiguation, link auditing/fixing, page splitting, source-linking lint, wikilink remediation, tag taxonomy audit and normalization, pre-commit enforcement, language enforcement (JP→EN bulk translation, detection regex, cron-assisted migration), and decision-matrix-driven cleanup.
Comprehensive wiki maintenance: daily structural health checks (index reconciliation, log separator fixes, pipeline watchdog alerts), comparison page updates (adding items to multi-section comparison tables), and page relocation (moving/renaming pages while maintaining link integrity).
Pre-flight checklist and procedures for archiving, deleting, or migrating Hermes skills. Prevents accidental removal of cron-referenced skills. Covers the 3-layer skill structure and config.yaml management. Includes skill inventory management, promotion workflows, and archival conventions.
Karpathy's LLM Wiki: build/query interlinked markdown KB.
Deep analysis of blog authors' recent thoughts, philosophy, and positions. Goes beyond entity page creation to extract cited ideological positions, track thought evolution, and enable ongoing RSS monitoring for thought updates.
Query the blogwatcher-cli SQLite database for RSS scan results. Use pre-verified column names and query templates to avoid errors.
| name | cloudflare-email-delivery |
| description | Deliver Hermes AI Topics reports via Cloudflare Email Service. Setup, cron config, and troubleshooting for email channel. |
| version | 1.0.0 |
Add email as a delivery channel for Hermes AI Topics hot-posts reports, using Cloudflare Email Service (REST API).
Slack cron (5e91a0b47c32)
└── generates Japanese hot-posts report → Slack channel
└── output saved to ~/.hermes/cron/output/5e91a0b47c32/
└── (15min offset) Email relay (new cron job)
└── no_agent script reads latest Slack output
└── sends HTML email via Cloudflare Email Service
Mirrors Discord relay pattern but uses Cloudflare Email API instead of Discord webhook.
Before the cron job can work, the user must:
report.kusari.cc (isolates reputation from main domain)Email Sending — Write~/.hermes/.env:
CF_ACCOUNT_ID=<your-cloudflare-account-id>
CF_EMAIL_API_TOKEN=<token-with-email_sending_write>
CF_EMAIL_FROM=Hermes Agent <hermes@report.kusari.cc>
CF_EMAIL_TO=<recipient-email>
CF_EMAIL_SUBJECT_PREFIX=[Hermes Report]
After user provides env vars:
Test with dry run:
python3 ~/ai-topics/scripts/cloudflare_email.py --subject "Test" --text "Hello from Hermes" --dry-run
Send test email:
python3 ~/ai-topics/scripts/cloudflare_email.py --subject "Hermes Test" --text "This is a test email from Hermes Agent via Cloudflare Email Service."
Test relay script:
python3 ~/.hermes/scripts/email_report_relay.py
Create cron job (see below)
cronjob(
action="create",
name="ai-topics-email-hot-posts",
schedule="45 0,4,8,12,16,20",
script="email_report_relay.py",
no_agent=True,
deliver="local", # or specific email/platform target
)
| File | Location | Purpose |
|---|---|---|
| Core module | ~/ai-topics/scripts/cloudflare_email.py | send_email_via_cloudflare() function + CLI |
| Core module (cron copy) | ~/.hermes/scripts/cloudflare_email.py | Copy for cron execution |
| Relay script | ~/.hermes/scripts/email_report_relay.py | Reads Slack output → emails via Cloudflare |
The relay generates a clean HTML email:
| Symptom | Likely Cause | Fix |
|---|---|---|
CF_ACCOUNT_ID not set | Env vars not loaded | Check ~/.hermes/.env has all 4 CF_EMAIL_* vars |
HTTP 403 | Token missing email_sending:write scope | Recreate token with correct permission |
HTTP 400 | Domain not onboarded | Onboard sender domain in Cloudflare Dashboard |
No Slack output files found | Slack job hasn't run yet | Run Slack job manually first: cronjob(action='run', job_id='5e91a0b47c32') |
Latest output is Xh old — skipping | Slack job failed earlier | Check Slack cron status, re-run if needed |
permanent_bounces for all recipients | Recipient email not valid / blocked | Check recipient address, check Cloudflare suppression list |
wiki-ingestion-pipelines — Hot-posts reporting pipeline (Slack + Discord sections)cron-job-management — Cron job lifecycle management