Skip to content

Morning digest

Not every event at night is worth waking the owner. Better a single tidy digest — build it into your routine.

import os, datetime, requests, sqlite3
def handler(event, context):
db = sqlite3.connect("/state/digest.db")
yesterday = (datetime.date.today() - datetime.timedelta(days=1)).isoformat()
rows = db.execute("""SELECT category, COUNT(*), SUM(severity)
FROM events
WHERE day = ? GROUP BY category""", (yesterday,)).fetchall()
body = "\n".join(f"• {cat}: {cnt} ({'⚠️' * min(int(sev), 3)})"
for cat, cnt, sev in rows) or "тишина и порядок"
cost = db.execute("SELECT SUM(usd) FROM llm_spend WHERE day=?", (yesterday,)).fetchone()[0] or 0
body += f"\n\n💵 LLM-spend: ${cost:.2f}"
push(f"☀️ Дайджест {yesterday}", body, priority=3)
return {"statusCode": 200}
def push(t, m, p):
requests.post(f"{os.environ['NOTIFLY_URL']}/message",
params={"token": os.environ["NOTIFLY_TOKEN"]},
json={"title": t, "message": m, "priority": p}, timeout=5)

Set a timer-trigger 0 9 * * ? * (or cron-tz for your time zone).

The digest works great with priority: 3 — the push arrives but doesn’t “ring”.