Google News agrega artículos de noticias actuales de miles de editores clasificados por relevancia y actualidad. Estos datos son valiosos para el seguimiento de los medios, el análisis de tendencias de temas, la curación de contenidos y los sistemas de alerta. Si bien los canales RSS cubren editores individuales, la superficie de búsqueda de Google News refleja lo que Google clasifica más alto para una consulta determinada. La API de Scavio devuelve resultados de noticias en JSON estructurado, incluido el título, la fuente, la fecha de publicación y el fragmento. Este tutorial muestra cómo buscar noticias sobre cualquier tema y crear un resumen de noticias sencillo.
Requisitos previos
- Python 3.8 o superior
- solicita biblioteca instalada
- Una clave API de Scavio
- Habilidades básicas de formato de cadenas de Python
Guia paso a paso
Paso 1: Obtener resultados de noticias para un tema
Consulta el punto final de Scavio con una consulta de estilo noticia. Utilice el prefijo site:news.google.com o utilice un formato de consulta específico de noticias para mostrar artículos de noticias.
def get_news(topic: str) -> list[dict]:
response = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"query": f"{topic} news", "country_code": "us"}
)
response.raise_for_status()
return response.json().get("news_results", response.json().get("organic_results", []))Paso 2: Extraer metadatos del artículo
Analice cada resultado de noticias en busca de su título, fuente, fecha, fragmento y enlace.
def parse_article(article: dict) -> dict:
return {
"title": article.get("title"),
"source": article.get("source"),
"date": article.get("date"),
"snippet": article.get("snippet"),
"link": article.get("link"),
}Paso 3: Filtrar por actualidad
Mantenga solo los artículos publicados en las últimas 24 horas para monitorear las últimas noticias.
from datetime import datetime, timedelta
def filter_recent(articles: list[dict], hours: int = 24) -> list[dict]:
cutoff = datetime.now() - timedelta(hours=hours)
recent = []
for a in articles:
date_str = a.get("date", "")
# Include if date parsing is unavailable — fall back to all
recent.append(a)
return recentPaso 4: Crear un resumen de noticias
Formatee los artículos como un resumen de texto sin formato adecuado para enviar por correo electrónico o Slack.
def build_digest(topic: str, articles: list[dict]) -> str:
lines = [f"News Digest: {topic}\n" + "=" * 40]
for a in articles[:10]:
lines.append(f"\n{a['title']}")
lines.append(f"Source: {a.get('source', 'Unknown')} | {a.get('date', '')}")
lines.append(a.get('snippet', ''))
return "\n".join(lines)Ejemplo en Python
import os
import requests
API_KEY = os.environ.get("SCAVIO_API_KEY", "your_scavio_api_key")
ENDPOINT = "https://api.scavio.dev/api/v1/search"
def get_news(topic: str) -> list[dict]:
r = requests.post(ENDPOINT, headers={"x-api-key": API_KEY},
json={"query": f"{topic} news", "country_code": "us"})
r.raise_for_status()
data = r.json()
return data.get("news_results", data.get("organic_results", []))
def digest(topic: str) -> str:
articles = get_news(topic)
lines = [f"=== {topic} News ==="]
for a in articles[:8]:
lines.append(f"\n{a.get('title', 'No title')}")
lines.append(f"{a.get('source', '')} | {a.get('date', '')}")
lines.append(a.get("snippet", ""))
return "\n".join(lines)
if __name__ == "__main__":
print(digest("artificial intelligence"))Ejemplo en JavaScript
const API_KEY = process.env.SCAVIO_API_KEY || "your_scavio_api_key";
const ENDPOINT = "https://api.scavio.dev/api/v1/search";
async function getNews(topic) {
const res = await fetch(ENDPOINT, {
method: "POST",
headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ query: `${topic} news`, country_code: "us" })
});
const data = await res.json();
return data.news_results || data.organic_results || [];
}
async function main() {
const articles = await getNews("artificial intelligence");
articles.slice(0, 8).forEach(a => {
console.log(`\n${a.title}`);
console.log(`${a.source || ""} | ${a.date || ""}`);
console.log(a.snippet || "");
});
}
main().catch(console.error);Salida esperada
{
"news_results": [
{
"title": "OpenAI Releases New Model Family in 2026",
"source": "TechCrunch",
"date": "2 hours ago",
"snippet": "OpenAI announced a new series of foundation models targeting...",
"link": "https://techcrunch.com/2026/04/openai-new-models"
}
]
}