Recettes

Agrégateur d'actualités

Agréger les titres de plusieurs sources d'actualités en deux passes batch

Conception en deux passes : distille la page d'accueil de chaque source pour découvrir les URLs d'articles, puis extrait des enregistrements de titres structurés à partir de ces URLs.

Flux

  1. Passe 1/batch/distill sur la page d'accueil de chaque source avec include: ["links"]
  2. Filtre les liens découverts par motif (par exemple la date du jour, les chemins d'articles)
  3. Passe 2/batch/extract sur les URLs filtrées avec un schema de titre
  4. Le Webhook se déclenche quand les deux passes sont terminées ; ingère dans ton store

JSON Schema

{
  "type": "object",
  "properties": {
    "title":       { "type": "string", "description": "The article headline" },
    "url":         { "type": "string", "description": "Canonical article URL" },
    "publishedAt": { "type": "string", "description": "ISO-8601 publish timestamp" },
    "summary":     { "type": "string", "description": "1-2 sentence summary" }
  },
  "required": ["title", "url"]
}

Esquisse d'implémentation

import httpx

API = "https://openapi.thunderbit.com/openapi/v1"
H = {"Authorization": "Bearer YOUR_API_KEY"}

# Pass 1: distill homepages, collect article URLs
sources = ["https://news.example.com", "https://blog.example.org"]
home_job = httpx.post(f"{API}/batch/distill",
                      headers=H,
                      json={"urls": sources, "include": ["links"]}).json()
# (poll until COMPLETED — see Batch Job Lifecycle guide)

article_urls = []
for r in home_job["data"]["results"]:
    if r["status"] == "SUCCEEDED":
        article_urls += [u for u in r["links"] if "/article/" in u]

# Pass 2: extract structured headlines
extract_job = httpx.post(f"{API}/batch/extract",
                         headers=H,
                         json={"urls": article_urls, "schema": SCHEMA}).json()

Astuces

  • Mets en cache les résultats des pages d'accueil (TTL 5-10 min) pour éviter de brûler des crédits sur les mêmes titres
  • Définis un countryCode si une source localise sa page d'accueil par IP
  • Déduplique par URL canonique ou hash de contenu — un même titre apparaît souvent sur plusieurs sources

Liens

Cette recette est en cours d'extension avec un orchestrateur deux passes complet — repasse bientôt.