const SHOAL_API_KEY = process.env.SHOAL_API_KEY;
const TG_TOKEN = process.env.TELEGRAM_BOT_KEY;
const TG_CHAT = process.env.TELEGRAM_CHANNEL_ID;
async function sendDigest() {
// Fetch today's top signal events
const since = new Date(Date.now() - 24 * 3600_000).toISOString();
const res = await fetch(
`https://api.shoal.xyz/v1/signal/all?since=${encodeURIComponent(since)}&limit=10`,
{ headers: { Authorization: `Bearer ${SHOAL_API_KEY}` } }
);
const { data: events } = await res.json();
if (!events?.length) return;
// Sort by signal score descending
events.sort((a, b) => (b.signal ?? 0) - (a.signal ?? 0));
const today = new Date().toLocaleDateString("en-US", {
month: "short", day: "numeric", year: "numeric",
});
let msg = `🐚 *Shoal Daily Digest — ${today}*\n─────\n\n🔥 *Top Signal Events*\n`;
events.forEach((e, i) => {
const orgs = (e.eventOwner || []).map((o) => o.label).join(", ");
msg += `\n*${i + 1}. ${e.title}* (signal: ${e.signal ?? "—"})\n`;
msg += `${e.globalSummary}\n`;
});
// Send to Telegram
await fetch(`https://api.telegram.org/bot${TG_TOKEN}/sendMessage`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
chat_id: TG_CHAT,
text: msg,
parse_mode: "Markdown",
}),
});
}
sendDigest();