Los paneles de Google Knowledge Graph aparecen en la parte superior de los resultados de búsqueda de entidades como marcas, personas, lugares y productos. Contienen información estructurada que incluye descripciones, enlaces a sitios web oficiales, perfiles sociales y atributos clave. La API de Scavio incluye el campo Knowledge_graph en su respuesta SERP cuando hay un panel disponible. Este tutorial muestra cómo consultar una entidad, extraer el objeto Knowledge_graph y usarlo para crear un perfil de entidad estructurado sin raspar la pantalla.
Requisitos previos
- Python 3.8 o superior
- solicita biblioteca instalada
- Una clave API de Scavio
- Comprensión básica del análisis JSON
Guia paso a paso
Paso 1: Consulta de una entidad que tiene un Panel de Conocimiento
Los paneles de conocimiento aparecen para entidades conocidas. Busque una marca, persona o lugar por nombre. Google muestra un panel cuando tiene confianza en la entidad.
def get_serp(entity: str) -> dict:
response = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"query": entity, "country_code": "us"}
)
response.raise_for_status()
return response.json()Paso 2: Extraiga el campo Knowledge_graph
Busque la clave Knowledge_graph en la respuesta. Será Ninguno si Google no muestra un panel para la consulta.
data = get_serp("OpenAI")
kg = data.get("knowledge_graph")
if kg:
print(kg)
else:
print("No knowledge graph found for this query")Paso 3: Analizar atributos de entidad
El objeto Knowledge_graph contiene campos como título, tipo, descripción, sitio web y una lista de atributos. Extraerlos por clave.
if kg:
print("Title:", kg.get("title"))
print("Type:", kg.get("type"))
print("Description:", kg.get("description"))
print("Website:", kg.get("website"))
for attr in kg.get("attributes", []):
print(f" {attr['name']}: {attr['value']}")Paso 4: Crear un perfil de entidad estructurado
Combine los campos del gráfico de conocimiento en un diccionario que se pueda almacenar o introducir en una canalización posterior.
def build_profile(kg: dict) -> dict:
return {
"name": kg.get("title"),
"entity_type": kg.get("type"),
"description": kg.get("description"),
"website": kg.get("website"),
"attributes": {a["name"]: a["value"] for a in kg.get("attributes", [])},
}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_knowledge_graph(entity: str) -> dict | None:
r = requests.post(ENDPOINT, headers={"x-api-key": API_KEY},
json={"query": entity, "country_code": "us"})
r.raise_for_status()
return r.json().get("knowledge_graph")
def build_profile(kg: dict) -> dict:
return {
"name": kg.get("title"),
"type": kg.get("type"),
"description": kg.get("description"),
"website": kg.get("website"),
"attributes": {a["name"]: a["value"] for a in kg.get("attributes", [])},
}
if __name__ == "__main__":
entities = ["OpenAI", "Stripe", "Cloudflare"]
for name in entities:
kg = get_knowledge_graph(name)
if kg:
profile = build_profile(kg)
print(profile)
else:
print(f"No KG for {name}")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 getKnowledgeGraph(entity) {
const res = await fetch(ENDPOINT, {
method: "POST",
headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ query: entity, country_code: "us" })
});
const data = await res.json();
return data.knowledge_graph || null;
}
function buildProfile(kg) {
return {
name: kg.title,
type: kg.type,
description: kg.description,
website: kg.website,
attributes: Object.fromEntries((kg.attributes || []).map(a => [a.name, a.value]))
};
}
async function main() {
const kg = await getKnowledgeGraph("OpenAI");
if (kg) console.log(JSON.stringify(buildProfile(kg), null, 2));
}
main().catch(console.error);Salida esperada
{
"knowledge_graph": {
"title": "OpenAI",
"type": "Research laboratory",
"description": "American artificial intelligence research laboratory...",
"website": "https://openai.com",
"founded": "December 11, 2015",
"headquarters": "San Francisco, California",
"attributes": [
{ "name": "Founded", "value": "December 11, 2015" },
{ "name": "CEO", "value": "Sam Altman" }
]
}
}