News Search API ile sabah brifing ajanı oluşturma

Her kurucu, PM ve analist sabah 8'de aynı şeyi ister: gece boyu nelerin değiştiğine dair temiz bir özet. Bir News Search API, bir LLM ve HTTP-cron platformu ile bunu bir öğleden sonrada hazırlayabilirsiniz.
Özet
- •Mimari: cron → News Search → umut vadeden haberler için URL Extract → LLM özeti → Slack/e-posta gönderimi.
- •Tazeliği <code>start_date</code> = bugün − 1 ile ayarlayın; locale'i <code>country_code</code> ile ayarlayın.
- •Brifingi paralel News Search sorgularıyla konu konu bölün; LLM birleştirir ve yinelenenleri ayıklar.
- •Toplam maliyet konu başına günde ~15 credit, artı LLM token'ları. 5 konuluk bir brifing liste fiyatıyla < $0,10/gün.
Faydalı bir brifingin biçimi
Bir sabah brifing ajanı tek bir soruyu yanıtlamalıdır: 'gece boyu bilmem gereken ne değişti?' Çıta göründüğünden daha yüksek. Başlık yığını başarısız olur — RSS ile aynı şeydir ve bir hafta içinde sessize alınır. Hayatta kalan şey, kullanıcının diliyle, konu konu düzenlenmiş, bağlantılı 5 maddelik bir özettir.
Bu, küçük bir pipeline'a ayrılır:
- N konuda güncel haberleri çek — News Search API.
- Modelin alıntılamak istediği herhangi bir bağlantının gövdesini çıkar — URL Extract API.
- Bir LLM ile özetle + kümele — tercih ettiğiniz model.
- Slack / e-posta / Notion'a gönder — mevcut iletişim kanalınız.
- Bir cron ile zamanla — Vercel Cron, GitHub Actions, n8n vb.
1. Adım: konularınızı seçin
3–6 konuyla sınırlı tutun. 12 konulu brifingler kaydırılarak geçilir. Örnekler:
- Bir B2B SaaS kurucusu için: 'AI funding turları', 'OpenAI / Anthropic haberleri', 'rakip hamleleri'.
- Bir finansal analist için: 'FOMC ve Treasury', 'yarı iletken tedarik zinciri', 'belirli tickerlar'.
- Bir sağlık PM'i için: 'FDA onayları', 'klinik deneme sonuçları', 'geri ödeme değişiklikleri'.
2. Adım: ham sinyali çekin
Konu başına bir News Search çağrısını paralel olarak çalıştırın. Tazeliği sınırlamak için start_date kullanın:
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])Her çağrı en fazla 5 sıralı başlık döndürür (num_results ile en fazla 10). 3 konuluk bir brifing için bu, çalıştırma başına 3 × 15 = 45 credit eder. $5 / 5.000 credit oranında, $0,045/gün. Günlük maliyete News API değil, LLM hâkimdir.
3. Adım: gövdeleri seçici biçimde çıkarın
Her haberin tam içeriğine ihtiyacınız yok — yalnızca modelin ayrıntılı alıntılamak istediklerine. Basit bir sezgisel kural: konu başına en iyi 2 haberi çıkarın. API Pick ile bu tek bir toplu çağrıdır:
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 başına 2 credit ile, çıkarma adımı 3 konuluk bir brifing için günde ~12 credit ekler.
4. Adım: özetleyici prompt'u
Brifingin dili prompt'ta yaşar. Bir başlangıç noktası:
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.'Sinyal düşükse SKIP' talimatı tek başına en yüksek kaldıraçlı kuraldır. Brifinginizin sessize alınmamasının nedeni budur.
5. Adım: gönderin ve zamanlayın
Bir Python cron için tüm betik < 80 satırdır. Slack gönderimi:
if briefing.strip() == "SKIP":
return
requests.post(
SLACK_WEBHOOK_URL,
json={"text": briefing, "username": "Morning Briefing", "icon_emoji": ":sunrise:"},
)Vercel Cron (vercel.json içinde), GitHub Actions, AWS EventBridge veya n8n ile zamanlayın. Kendi saat diliminizde 07:45'te çalıştırın — amaç, saat 8'de masaya oturduğunuzda sizi bekliyor olması.
No-code tercih ediyorsanız n8n'de yapma
- Schedule trigger — günlük, kullanıcı saat diliminde 07:45.
- HTTP Request düğümleri (konu başına bir tane), dünden
start_dateile/api/search/newsPOST'u. - Merge düğümü konu sonuçlarını birleştirir.
- HTTP Request düğümü en üst URL'lerle
/api/extract'i çağırır. - OpenAI / Anthropic düğümü özetleyici prompt'u çalıştırır.
- If düğümü çıktının SKIP olmadığını denetler.
- Slack düğümü brifingi gönderir.
Üretimde nelere dikkat etmeli
- Konu kayması. 'AI agents' 6 ay sonra fazla geniş hale gelir — API'nin dizini büyür; brifinginiz özgül kalmalı. Sorguları her çeyrekte daraltın.
- Günler arası tekrar. Aynı haber sürekli çıkıyorsa, modele bir önceki günün URL'lerini 'don't re-cover stories from this list' ile verin.
- Sessiz hafta sonları. SKIP kuralı bunu zaten halleder; yalnızca günlük kontrol alışkanlığınızı brifinge bağlamayın.
Yineleyin, kurup unutmayın
Bir hafta boyunca her sabah brifingi okuyun. Modelin nerede yalan söylediğini, yanlış sınıflandırdığını veya bir şeyi atladığını not edin. Prompt'u güncelleyin. Bir haftalık yinelemeden sonra brifing bir alışkanlığa dönüşür — ve yaklaşık 80 satır kod ile üç API çağrısı kullanarak çalışan bir ajan inşa etmiş olursunuz.
Sıkça Sorulan Sorular
Neden sadece Google News ya da bir RSS toplayıcı kullanmıyorum?
İkisi de işe yarar — ve ikisi de sıkıcı kısmı size bırakır: kümeleme, yinelenenleri temizleme, özetleme ve asıl brifingi yazma. Bir ajan bu kısmı LLM ile yapar. RSS size başlıkları verir; ajan ise neyin önemli olduğunu söyleyen ve kaynaklara bağlantı veren bir paragraf verir.
News Search API ne kadar taze?
API büyük yayın kuruluşlarını neredeyse gerçek zamanlı dizinler. Önceki 24 saati kapsayan sabah 8 brifingi için start_date değerini düne ayarlayın. Saatte bir çalışan son dakika botları için start_date değerini bugüne ayarlayın ve son çalıştırmanıza göre yinelenenleri ayıklayarak ajanı yeniden çalıştırın.
Brifingin söyleyecek yeni bir şeyi yoksa ne olur?
Bunu prompt'a yerleştirin: 'If fewer than 3 substantive stories changed overnight, return SKIP.' Cron job'unuz SKIP'e uymalı ve düşük sinyalli bir brifing göndermemelidir. Brifing yorgunluğu, bir Slack kanalını sessize aldırmanın en hızlı yoludur.
Bunu n8n olmadan çalıştırabilir miyim?
Evet. Aynı akış cron üzerinde 30 satırlık bir Python betiği olarak çalışır — aşağıdaki örneğe bakın. n8n görsel hata ayıklama ve Slack entegrasyonu için kullanışlıdır ama zorunlu değildir.
Aynı haberin birden çok konuda özetlenmesini nasıl önlerim?
Modele aynı çalıştırmadaki önceki sorgulara ait URL'leri şu talimatla verin: 'do not re-mention any URL already covered.' Ya da tek bir çok konulu arama çalıştırın ve bölümlemeyi modele bırakın. İkisi de işe yarar; ikincisi daha ucuzdur.
Bu makalede kullanılan API'ler
Sarah Choy, API Pick'in CEO'sudur. Yapay zeka ajanları ve LLM iş akışları için üretime hazır API'ler geliştirme üzerine yazılar yazar.