News Search API के साथ एक मॉर्निंग ब्रीफिंग एजेंट बनाएँ

हर फाउंडर, PM और एनालिस्ट सुबह 8 बजे एक ही चीज़ चाहता है: रातभर में क्या बदला, इसका साफ़-सुथरा डाइजेस्ट। एक News Search API, एक LLM और एक HTTP-cron प्लेटफ़ॉर्म के साथ, आप इसे एक ही दोपहर में तैयार कर सकते हैं।
TL;DR
- •आर्किटेक्चर: cron → News Search → आशाजनक स्टोरीज़ के लिए URL Extract → LLM सारांश → Slack/ईमेल पोस्ट।
- •ताज़गी को <code>start_date</code> = आज − 1 से ट्यून करें; locale को <code>country_code</code> से ट्यून करें।
- •समानांतर News Search क्वेरीज़ के साथ ब्रीफिंग को टॉपिक-वार बाँटें; LLM मर्ज करता है और डुप्लिकेट हटाता है।
- •कुल लागत प्रति टॉपिक प्रति दिन ~15 credits है, साथ में LLM tokens। 5-टॉपिक की ब्रीफिंग लिस्ट प्राइस पर < $0.10/दिन है।
एक उपयोगी ब्रीफिंग का स्वरूप
एक मॉर्निंग ब्रीफिंग एजेंट को एक सवाल का जवाब देना चाहिए: 'रातभर में ऐसा क्या बदला जो मुझे जानना ज़रूरी है?' यह जितना आसान लगता है उससे कहीं कठिन कसौटी है। सुर्खियों का ढेर नाकाम हो जाता है — यह RSS जैसा ही है और एक हफ़्ते में म्यूट हो जाता है। जो टिकता है वह है लिंक के साथ 5-बुलेट का डाइजेस्ट, टॉपिक-वार व्यवस्थित, उपयोगकर्ता की आवाज़ में।
यह एक छोटी pipeline में टूट जाता है:
- N टॉपिक्स में हाल की खबरें लाएँ — News Search API।
- जिस भी लिंक को मॉडल उद्धृत करना चाहे उसका मुख्य भाग निकालें — URL Extract API।
- किसी LLM से सारांश + क्लस्टर करें — आपकी पसंद का मॉडल।
- Slack / ईमेल / Notion पर पोस्ट करें — आपका मौजूदा कम्युनिकेशन चैनल।
- एक cron से शेड्यूल करें — Vercel Cron, GitHub Actions, n8n, आदि।
स्टेप 1: अपने टॉपिक्स चुनें
इसे 3–6 टॉपिक्स तक रखें। 12 टॉपिक्स वाली ब्रीफिंग को स्क्रॉल कर के छोड़ दिया जाता है। उदाहरण:
- एक B2B SaaS फाउंडर के लिए: 'AI funding rounds', 'OpenAI / Anthropic news', 'प्रतिस्पर्धियों की चालें'।
- एक फाइनेंशियल एनालिस्ट के लिए: 'FOMC और Treasury', 'सेमीकंडक्टर सप्लाई चेन', 'विशिष्ट tickers'।
- एक हेल्थकेयर PM के लिए: 'FDA अनुमोदन', 'क्लिनिकल-ट्रायल रीडआउट्स', 'रिइम्बर्समेंट में बदलाव'।
स्टेप 2: कच्चा सिग्नल लाएँ
प्रति टॉपिक एक News Search कॉल समानांतर में चलाएँ। ताज़गी सीमित करने के लिए start_date का उपयोग करें:
from datetime import date, timedelta
import asyncio, aiohttp
KEY = "pk_yourkey"
TOPICS = [
"AI agent infrastructure funding",
"OpenAI Anthropic Google new releases",
"RAG and LLM tool calling research",
]
async def fetch_topic(session, q):
yesterday = (date.today() - timedelta(days=1)).isoformat()
async with session.post(
"https://www.apipick.com/api/search/news",
headers={"x-api-key": KEY},
json={"query": q, "start_date": yesterday},
) as r:
return q, await r.json()
async def fetch_all():
async with aiohttp.ClientSession() as s:
return await asyncio.gather(*[fetch_topic(s, q) for q in TOPICS])हर कॉल अधिकतम 5 रैंक की गई सुर्खियाँ लौटाती है (num_results के साथ अधिकतम 10)। 3-टॉपिक ब्रीफिंग के लिए यह प्रति रन 3 × 15 = 45 credits है। $5 / 5,000-credits दर पर, $0.045/दिन। दैनिक लागत पर LLM का दबदबा होता है, News API का नहीं।
स्टेप 3: चुनिंदा रूप से बॉडी निकालें
आपको हर स्टोरी का पूरा कंटेंट नहीं चाहिए — सिर्फ़ उनका जिन्हें मॉडल विस्तार से उद्धृत करना चाहता है। एक सरल heuristic: प्रति टॉपिक टॉप 2 स्टोरीज़ निकालें। API Pick के साथ यह एक ही batch कॉल है:
import requests
urls = [r["url"] for topic, payload in results for r in payload["results"][:2]]
extracted = requests.post(
"https://www.apipick.com/api/extract",
headers={"x-api-key": KEY},
json={"urls": urls, "extract_effort": "auto"},
).json()प्रति URL 2 credits पर, extract स्टेप 3-टॉपिक ब्रीफिंग के लिए ~12 credits/दिन जोड़ता है।
स्टेप 4: समराइज़र प्रॉम्प्ट
प्रॉम्प्ट वहाँ है जहाँ ब्रीफिंग की आवाज़ बसती है। एक शुरुआती ड्राफ़्ट:
You are an assistant that writes a morning briefing in <Sarah's> voice:
direct, no fluff, no marketing language.
Input: a JSON list of {topic, headlines, extracted_bodies}.
Output rules:
- 1 short paragraph per topic, max 60 words.
- Each paragraph ends with up to 3 inline source links.
- If a topic has fewer than 2 substantive stories overnight, omit it.
- If the entire briefing has fewer than 2 substantive topics, output the
literal token SKIP and nothing else.
- Never editorialise. Quote facts and figures verbatim from the sources.
Output format: Slack-flavoured markdown.'कम सिग्नल हो तो SKIP' वाला निर्देश अकेले सबसे ज़्यादा लीवरेज वाला नियम है। यही कारण है कि आपकी ब्रीफिंग म्यूट नहीं होगी।
स्टेप 5: पोस्ट और शेड्यूल करें
Python cron के लिए, पूरी स्क्रिप्ट < 80 लाइनों की है। Slack पोस्ट:
if briefing.strip() == "SKIP":
return
requests.post(
SLACK_WEBHOOK_URL,
json={"text": briefing, "username": "Morning Briefing", "icon_emoji": ":sunrise:"},
)Vercel Cron (vercel.json में), GitHub Actions, AWS EventBridge या n8n से शेड्यूल करें। अपने टाइमज़ोन में सुबह 7:45 पर चलाएँ — लक्ष्य यह है कि जब आप 8 बजे बैठें तो वह इंतज़ार में तैयार हो।
अगर आप no-code पसंद करते हैं तो इसे n8n में करें
- Schedule trigger — रोज़, यूज़र-टाइमज़ोन में 7:45।
- HTTP Request नोड्स (प्रति टॉपिक एक), POST
/api/search/newsकल केstart_dateके साथ। - Merge नोड टॉपिक के परिणामों को जोड़ता है।
- HTTP Request नोड टॉप URLs के साथ
/api/extractको कॉल करता है। - OpenAI / Anthropic नोड समराइज़र प्रॉम्प्ट चलाता है।
- If नोड जाँचता है कि आउटपुट SKIP नहीं है।
- Slack नोड ब्रीफिंग पोस्ट करता है।
प्रोडक्शन में किन बातों का ध्यान रखें
- टॉपिक ड्रिफ़्ट। 6 महीने बाद 'AI agents' बहुत व्यापक हो जाता है — API का इंडेक्स बढ़ता है; आपकी ब्रीफिंग विशिष्ट बनी रहनी चाहिए। हर तिमाही क्वेरीज़ को कसें।
- दिनों के बीच दोहराव। अगर वही स्टोरी बार-बार आती रहे तो मॉडल को पिछले दिन की URLs 'don't re-cover stories from this list' के साथ दें।
- शांत वीकेंड। SKIP नियम इसे पहले ही संभाल लेता है; बस अपनी दैनिक चेक-इन आदत को ब्रीफिंग से न जोड़ें।
इटरेट करें, बना-कर-भूलें नहीं
एक हफ़्ते तक हर सुबह ब्रीफिंग पढ़ें। नोट करें कि मॉडल ने कहाँ झूठ कहा, गलत वर्गीकृत किया या कुछ छोड़ दिया। प्रॉम्प्ट अपडेट करें। एक हफ़्ते की इटरेशन के बाद ब्रीफिंग एक आदत बन जाती है — और आपने लगभग 80 लाइनों के कोड और तीन API कॉल्स के साथ एक काम करता हुआ एजेंट बना लिया है।
अक्सर पूछे जाने वाले प्रश्न
सिर्फ़ Google News या किसी RSS एग्रीगेटर का उपयोग क्यों न करें?
दोनों काम करते हैं — और दोनों उबाऊ हिस्सा आप पर ही छोड़ देते हैं: क्लस्टरिंग, डुप्लिकेट हटाना, सारांश बनाना और असली ब्रीफिंग लिखना। एक एजेंट यह हिस्सा LLM से करता है। RSS आपको सुर्खियाँ देता है; एजेंट आपको एक पैराग्राफ देता है जो बताता है कि क्या मायने रखता है और स्रोतों के लिंक देता है।
News Search API कितनी ताज़ा है?
API प्रमुख आउटलेट्स को लगभग रियल-टाइम में इंडेक्स करता है। पिछले 24 घंटों को कवर करने वाली 8 बजे की ब्रीफिंग के लिए start_date को कल पर सेट करें। हर घंटे चलने वाले ब्रेकिंग-न्यूज़ बॉट्स के लिए start_date को आज पर सेट करें और अपने पिछले रन के विरुद्ध डिडुप्लिकेशन के साथ एजेंट को फिर से चलाएँ।
अगर ब्रीफिंग के पास कहने को कुछ नया न हो तो?
इसे प्रॉम्प्ट में डालें: 'If fewer than 3 substantive stories changed overnight, return SKIP.' आपके cron job को SKIP का सम्मान करना चाहिए और कम-सिग्नल वाली ब्रीफिंग पोस्ट नहीं करनी चाहिए। ब्रीफिंग-थकान किसी Slack चैनल को म्यूट करवाने का सबसे तेज़ रास्ता है।
क्या मैं इसे n8n के बिना चला सकता हूँ?
हाँ। यही फ़्लो cron पर 30-लाइन की Python स्क्रिप्ट के रूप में चलता है — नीचे उदाहरण देखें। n8n विज़ुअल डिबगिंग और Slack इंटीग्रेशन के लिए सुविधाजनक है, लेकिन ज़रूरी नहीं।
मैं एक ही स्टोरी को कई टॉपिक्स में सारांशित होने से कैसे रोकूँ?
मॉडल को उसी रन की पिछली क्वेरीज़ की URLs इस निर्देश के साथ दें: 'do not re-mention any URL already covered.' या एक ही मल्टी-टॉपिक सर्च चलाएँ और मॉडल को पार्टिशन करने दें। दोनों काम करते हैं; दूसरा सस्ता है।
इस लेख में उपयोग की गई APIs
Sarah Choy, API Pick की CEO हैं। वे AI एजेंट्स और LLM वर्कफ़्लो के लिए प्रोडक्शन-रेडी APIs बनाने के बारे में लिखती हैं।