Files
wiki/scripts/send-newsletter-stats.ts

64 lines
1.7 KiB
TypeScript
Raw Permalink Normal View History

#!/usr/bin/env npx ts-node
/**
* Send weekly stats summary email to developer
*
* Usage:
* npm run newsletter:send:stats
*
* Environment variables (from .env.local):
* - VITE_CONVEX_URL: Convex deployment URL
* - SITE_NAME: Your site name (default: "Newsletter")
*
* Note: AGENTMAIL_API_KEY, AGENTMAIL_INBOX, and AGENTMAIL_CONTACT_EMAIL must be set in Convex dashboard
*/
import { ConvexHttpClient } from "convex/browser";
import { api } from "../convex/_generated/api";
import dotenv from "dotenv";
// Load environment variables
dotenv.config({ path: ".env.local" });
dotenv.config({ path: ".env.production.local" });
async function main() {
const convexUrl = process.env.VITE_CONVEX_URL;
if (!convexUrl) {
console.error(
"Error: VITE_CONVEX_URL not found. Run 'npx convex dev' to create .env.local"
);
process.exit(1);
}
const siteName = process.env.SITE_NAME || "Newsletter";
console.log("Sending weekly stats summary...");
console.log(`Site name: ${siteName}`);
console.log("");
const client = new ConvexHttpClient(convexUrl);
try {
// Call the mutation to schedule the stats summary send
const result = await client.mutation(api.newsletter.scheduleSendStatsSummary, {
siteName,
});
if (result.success) {
console.log("✓ Stats summary scheduled successfully!");
console.log(result.message);
console.log("");
console.log("The email will be sent to AGENTMAIL_INBOX (or AGENTMAIL_CONTACT_EMAIL if set).");
} else {
console.error("✗ Failed to send stats summary:");
console.error(result.message);
process.exit(1);
}
} catch (error) {
console.error("Error:", error);
process.exit(1);
}
}
main();