Alejandro Rioja.
AI Agents Growth

AI एजेंट से अपना न्यूज़लेटर कैसे ऑटोमेट करें

Alejandro Rioja
Alejandro Rioja
5 मिनट पढ़ें
TL;DR

Claude एजेंट मेरी कंटेंट क्यू पढ़ता है, सप्ताह का सबसे मज़बूत एंगल चुनता है, मेरी आवाज़ में न्यूज़लेटर का ड्राफ्ट बनाता है, एंगेजमेंट टियर के अनुसार लिस्ट सेगमेंट करता है, और Kit API के ज़रिए भेजने का शेड्यूल बनाता है — बिना मेरे एडिटर खोले। मैं एक रेंडर किया हुआ प्रीव्यू देखता हूँ और अप्रूव दबाता हूँ। कठिन क्रिएटिव काम मेरा है; मैकेनिकल एग्जीक्यूशन एजेंट का।

मुफ़्त न्यूज़लेटर

हर बुधवार। 28,400+ पाठक। बिना फालतू बात।

विषय सूची

जून 2026 में अपडेट किया गया।

TL;DR: Claude एजेंट मेरी कंटेंट क्यू पढ़ता है, सप्ताह का सबसे मज़बूत एंगल चुनता है, मेरी आवाज़ में न्यूज़लेटर का ड्राफ्ट बनाता है, एंगेजमेंट टियर के अनुसार लिस्ट सेगमेंट करता है, और Kit API के ज़रिए भेजने का शेड्यूल बनाता है — बिना मेरे एडिटर खोले। मैं एक रेंडर किया हुआ प्रीव्यू देखता हूँ और अप्रूव दबाता हूँ। कठिन क्रिएटिव काम मेरा है; मैकेनिकल एग्जीक्यूशन एजेंट का।

[ऑपरेटर नोट] जो न्यूज़लेटर लगातार भेजी जाती है, वह उससे बेहतर है जो “बेहतर” है लेकिन इंस्पिरेशन आने पर ही भेजी जाती है। बाधा एग्जीक्यूशन का ओवरहेड था, विचार नहीं। मेरे पास विचार थे; हर हफ्ते उन्हें फॉर्मेट, शेड्यूल और सेगमेंट करने की बैंडविड्थ नहीं थी। एजेंट ने वह गैप खत्म कर दिया।

अधिकतर न्यूज़लेटर वर्कफ्लो में असली बॉटलनेक

न्यूज़लेटर ऑटोमेशन की अधिकतर सलाह गलत चीज़ पर फोकस करती है: वेलकम सीक्वेंस, ऑटोमेशन, टैगिंग लॉजिक। यह ठीक है, लेकिन हफ्ते-दर-हफ्ते कंटेंट बनाने की समस्या नहीं सुलझाती।

असली रुकावट यह है: आप जानते हैं क्या कहना है, लेकिन बैठकर उसे फॉर्मेट करना, सब्जेक्ट लाइन के वेरिएंट लिखना, सही सेगमेंट चुनना, और सही समय पर शेड्यूल करना हर हफ्ते 2-3 घंटे का कॉन्टेक्स्ट-स्विचिंग खर्च करता है। 52 हफ्तों से गुणा करें तो आपने पूरा एक कार्य-सप्ताह सिर्फ न्यूज़लेटर भेजने में बिताया।

एजेंट “मुझे पता है इस हफ्ते का एंगल क्या है” के बाद हर कदम संभालता है।

मैं जो स्टैक यूज़ कर रहा हूँ

अगर आप Kit पर नहीं हैं, तो वही पैटर्न किसी भी प्लेटफ़ॉर्म के साथ काम करता है जिसके पास ब्रॉडकास्ट बनाने और शेड्यूल करने के लिए REST API हो।

स्टेप 1: कंटेंट क्यू

एजेंट को “हम किस बारे में लिख रहे हैं” के लिए एक सच्चे स्रोत की ज़रूरत है। मेरी Airtable टेबल है जिसमें कॉलम हैं:

हर हफ्ते, मैं क्यू में 2-3 टॉपिक जोड़ने में 10 मिनट बिताता हूँ। यही मेरा क्रिएटिव इनपुट है। बाकी एजेंट का काम है।

स्टेप 2: ड्राफ्ट एजेंट

typescript
// workers/newsletter-agent/index.ts
import Anthropic from "@anthropic-ai/sdk";
import Airtable from "airtable";

const client = new Anthropic();

const VOICE_SYSTEM = `You are writing a weekly newsletter for Alejandro Rioja's subscribers.
His audience: founders and operators interested in AI agents, SEO, and growing a one-person business.
Voice: direct, first-person, practitioner. No hype, no "exciting times," no excessive bullet lists.
Structure every newsletter as:
1. One-sentence hook (the problem or observation)
2. The core insight (3–5 paragraphs, no headers, conversational)
3. One concrete action the reader can take this week
4. A short sign-off (2 sentences max)
Subject line: specific, outcome-oriented, under 50 chars. No clickbait.
Return JSON: { "subject": "...", "preheader": "...", "body": "..." }`;

async function getNextTopic(): Promise<{ id: string; topic: string; notes: string; tier: string }> {
  const base = new Airtable({ apiKey: process.env.AIRTABLE_API_KEY }).base(process.env.AIRTABLE_BASE_ID!);
  const records = await base("Newsletter Queue")
    .select({ filterByFormula: "{Status} = 'Queue'", sort: [{ field: "Created", direction: "asc" }], maxRecords: 1 })
    .firstPage();
  if (!records.length) throw new Error("Queue is empty. Add topics.");
  const r = records[0];
  return { id: r.id, topic: r.get("Topic") as string, notes: (r.get("Notes") as string) ?? "", tier: (r.get("Tier") as string) ?? "all" };
}

async function draftNewsletter(topic: string, notes: string): Promise<{ subject: string; preheader: string; body: string }> {
  const msg = await client.messages.create({
    model: "claude-sonnet-4-6",
    max_tokens: 2048,
    system: VOICE_SYSTEM,
    messages: [{ role: "user", content: `Write this week's newsletter on: "${topic}". Additional notes: ${notes || "none"}` }],
  });
  const text = (msg.content[0] as any).text.replace(/```json\n?/, "").replace(/```/, "").trim();
  return JSON.parse(text);
}

async function scheduleWithKit(draft: { subject: string; preheader: string; body: string }, tier: string): Promise<string> {
  const segmentId = tier === "engaged" ? process.env.KIT_ENGAGED_SEGMENT_ID : null;
  const sendAt = new Date();
  sendAt.setDate(sendAt.getDate() + ((4 - sendAt.getDay() + 7) % 7)); // next Thursday
  sendAt.setHours(9, 0, 0, 0); // 9am CT

  const payload: any = {
    broadcast: {
      subject: draft.subject,
      content: draft.body,
      description: draft.preheader,
      send_at: sendAt.toISOString(),
      email_layout_template: "minimal",
    },
  };
  if (segmentId) payload.broadcast.segment_id = segmentId;

  const res = await fetch("https://api.kit.com/v4/broadcasts", {
    method: "POST",
    headers: { "Content-Type": "application/json", "X-Kit-Api-Key": process.env.KIT_API_KEY! },
    body: JSON.stringify(payload),
  });
  const data = await res.json();
  return data.broadcast?.id ?? "";
}

export default {
  async scheduled(_event: ScheduledEvent, env: Env) {
    // Inject env vars
    Object.assign(process.env, env);
    const { id, topic, notes, tier } = await getNextTopic();
    const draft = await draftNewsletter(topic, notes);
    const broadcastId = await scheduleWithKit(draft, tier);

    // Mark as Approved in Airtable (not Sent — human reviews the Kit preview before confirm)
    const base = new Airtable({ apiKey: env.AIRTABLE_API_KEY }).base(env.AIRTABLE_BASE_ID);
    await base("Newsletter Queue").update(id, { Status: "Approved", KitBroadcastId: broadcastId });

    console.log(`Scheduled broadcast ${broadcastId} for topic: ${topic}`);
  },
};

स्टेप 3: अप्रूवल स्टेप

एजेंट Kit के ड्राफ्ट स्टेट में ब्रॉडकास्ट बनाता है और Airtable रिकॉर्ड को “Approved” मार्क करता है। Kit मुझे प्रीव्यू लिंक के साथ नोटिफिकेशन भेजता है। मैं उस पर क्लिक करता हूँ, पढ़ता हूँ, और अगर सही लगे तो भेजने की पुष्टि करता हूँ। अगर बदलाव चाहूँ, तो Kit में सीधे एडिट करता हूँ।

यही वह गेट है जो एजेंट को आउटबाउंड ईमेल में पूरी तरह ऑटोनॉमस होने से रोकता है। मैं ड्राफ्ट पर लगभग 90% समय भरोसा करता हूँ। रिव्यू में जो 10% पकड़ता हूँ — थोड़ा गलत टोन, एक स्टैट जिसे वेरिफाई करना हो, एक लिंक जोड़ना हो — वह 3 मिनट की रिव्यू की कीमत पर है।

एजेंट जो संभालता है जो मैं दोबारा नहीं करना चाहता

मेरे पास जो अभी भी है

आइडिया। क्यू में टॉपिक मेरा है। एंगल मेरा है। एजेंट एक स्पष्ट ब्रीफ का शानदार एग्जीक्यूटर है; यह स्ट्रैटेजी लेयर नहीं है। अगर मैंने क्यू में बुरा टॉपिक डाला, तो मुझे बुरे टॉपिक के बारे में अच्छी तरह लिखी न्यूज़लेटर मिलेगी।

इसके अलावा: पहले रिव्यू का गेट। हर भेजने से पहले मेरी नज़र उस पर जाती है। यह नहीं बदलेगा।

ऑपरेटर की बॉटम लाइन

अगर आप न्यूज़लेटर मैकेनिक्स पर हफ्ते में एक घंटे से ज़्यादा खर्च कर रहे हैं — फॉर्मेटिंग, शेड्यूलिंग, सेगमेंटिंग — तो आपको इसे ऑटोमेट करना चाहिए। Kit API क्लीन है, Worker cron ट्रिगर रॉक-सॉलिड है, और Claude ड्राफ्ट क्वालिटी इतनी ऊँची है कि मैं ~90% पहले ड्राफ्ट बिना बदलाव के अप्रूव कर देता हूँ। Airtable में क्यू बनाएं, Worker कनेक्ट करें, और भेजने की जगह आइडिया बनाने पर वापस आएं।

पढ़ते रहें

AI प्लेबुक अपने इनबॉक्स में पाएं

हर बुधवार। 28,400+ पाठक। बिना फालतू बात।

↵ सभी परिणाम देखें esc esc बंद करें