Cómo analizar y extraer datos de selección de fuentes de ChatGPT

Desarrollado por Yel Martínez · Digital Strategist & Technologist

Selección de fuentes de ChatGPT: acceso al JSON, estructura de datos y extracción con Python

Guía técnica para programadores junior sobre cómo interceptar el JSON que devuelve ChatGPT con browsing activado, entender su estructura de campos (search_results, sources_footnotes, safe_urls, blocked_urls) y automatizar el análisis con Python.

ChatGPT · Browsing · JSON DevTools · Network · XHR Python · Extracción de datos SEO IA · Autoridad · Fuentes
ChatGPT · JSON · Python · Fuentes { "search_results": [...], "sources_footnotes": [...], "supporting_websites": [...], "safe_urls": [...], "blocked_urls": [...] } XHR search?q=... 200
01 DevTools Network · XHR
02 JSON Estructura de campos
03 Python Análisis automático
04 SEO IA Autoridad · Relevancia
Introducción

Por qué analizar cómo ChatGPT selecciona sus fuentes: lo que el JSON revela

Cuando ChatGPT responde con browsing activado, realiza búsquedas externas y selecciona fuentes según criterios de autoridad y relevancia. Ese proceso genera un JSON accesible desde las herramientas de desarrollo del navegador que documenta exactamente qué URLs fueron recuperadas, cuáles se citaron, cuáles se descartaron y cuáles fueron bloqueadas.

Entender esta estructura es útil para dos cosas: optimizar contenido propio para que ChatGPT lo seleccione (perspectiva SEO), y construir pipelines de extracción de datos que filtren fuentes con los mismos criterios que usa la IA (perspectiva de desarrollo).

5 campos clave en el JSON: search_results, sources_footnotes, supporting_websites, safe_urls, blocked_urls
8 pasos para acceder al JSON desde la consola de red del navegador sin herramientas adicionales
0€ coste — el JSON es accesible desde DevTools con cualquier navegador moderno
Python script para cargar, filtrar y analizar el JSON extraído con la librería estándar json
Paso a paso

Acceso al JSON desde la consola: ocho pasos desde el navegador

No hace falta instalar nada. Las herramientas de desarrollo del navegador permiten interceptar la petición que devuelve el JSON de fuentes directamente.

Paso 1 — Abrir ChatGPT con browsing activado
Acceder a ChatGPT en el navegador y verificar que el modo de navegación web esté habilitado. Sin browsing, ChatGPT no realiza búsquedas externas y no se genera el JSON de fuentes.
Paso 2 — Abrir herramientas de desarrollo
Pulsar F12 o clic derecho en la página → Inspeccionar. Navegar a la pestaña Network (Red). Mantenerla abierta antes de hacer la consulta para capturar todas las peticiones.
Paso 3 — Filtrar por XHR o fetch
En la barra de filtros de la pestaña Network, seleccionar XHR o Fetch para mostrar solo las peticiones de datos. Esto elimina el ruido de imágenes, CSS y scripts y deja visibles las llamadas a APIs.
Paso 4 — Hacer una consulta que active el browsing
Escribir una pregunta en ChatGPT que requiera información externa reciente (noticias, datos actuales, precios). ChatGPT activará el browsing y se generarán peticiones de red visibles en el panel.
Paso 5 a 8 — Localizar y copiar el JSON
Buscar la petición cuyo nombre esté relacionado con la consulta o contenga "search". Hacer clic en ella, ir a la pestaña Response y copiar el contenido JSON completo. Pegar en un archivo .json para analizarlo con Python u otras herramientas.
Estructura de los datos

Los cinco campos del JSON: qué contiene cada uno y para qué sirve

search_results Todas las URLs recuperadas
Lista completa de resultados de búsqueda

Array con todas las URLs obtenidas en la búsqueda externa. Incluye url, title y snippet para cada resultado. Es el universo total de fuentes antes de cualquier filtrado.

sources_footnotes Fuentes citadas en la respuesta
Las URLs que aparecen en la respuesta final

Array con las URLs que ChatGPT consideró suficientemente relevantes y fiables para citar explícitamente en su respuesta. Es el subconjunto más valioso para análisis de autoridad.

supporting_websites Sitios de apoyo secundarios
Fuentes consultadas no citadas directamente

URLs usadas para contextualizar la respuesta pero no citadas como fuentes principales. Útil para entender qué contenidos influyen en la respuesta sin aparecer explícitamente.

safe_urls URLs consideradas seguras
Aprobadas por los filtros de seguridad

URLs que superaron los filtros de seguridad del sistema. La mayoría de search_results debería estar aquí. Las URLs ausentes de este campo pero presentes en los resultados pueden haber sido descartadas por razones de contenido.

blocked_urls URLs bloqueadas o inaccesibles
Descartadas por seguridad o accesibilidad

URLs que el sistema bloqueó por razones de seguridad o que resultaron inaccesibles durante la búsqueda. Analizar este campo ayuda a identificar patrones de bloqueo y qué tipos de dominios evita ChatGPT.

Ejemplo de estructura JSON simplificada

{ "search_results": [ {"url": "https://ejemplo.com/articulo1", "title": "Artículo 1", "snippet": "Resumen..."}, {"url": "https://ejemplo.com/articulo2", "title": "Artículo 2", "snippet": "Resumen..."} ], "sources_footnotes": [ "https://ejemplo.com/articulo1" ], "supporting_websites": [ "https://soporte.com" ], "safe_urls": [ "https://ejemplo.com/articulo1", "https://soporte.com" ], "blocked_urls": [ "https://bloqueado.com" ] }

Automatización con Python

Script para cargar y analizar el JSON extraído: listo para copiar

Una vez copiado el JSON en un archivo local, este script carga los datos y muestra las fuentes citadas, las URLs seguras y las bloqueadas.

Python — análisis básico del JSON de ChatGPT

import json # Cargar el archivo JSON copiado desde DevTools with open('resultados_chatgpt.json', 'r', encoding='utf-8') as f: data = json.load(f) # Fuentes citadas en la respuesta print("Fuentes citadas (sources_footnotes):") for url in data.get('sources_footnotes', []): print(f" {url}") # URLs que superaron los filtros de seguridad print("\nURLs seguras (safe_urls):") for url in data.get('safe_urls', []): print(f" {url}") # URLs bloqueadas o inaccesibles print("\nURLs bloqueadas (blocked_urls):") for url in data.get('blocked_urls', []): print(f" {url}") # Resumen del universo total de resultados total = len(data.get('search_results', [])) citadas = len(data.get('sources_footnotes', [])) bloqueadas = len(data.get('blocked_urls', [])) print(f"\nResumen: {total} resultados, {citadas} citados, {bloqueadas} bloqueados")

Por qué ChatGPT elige unas fuentes y no otras

Dos criterios principales: autoridad y relevancia

Entender los criterios de selección permite optimizar contenido propio para que aparezca en sources_footnotes — no en blocked_urls ni ignorado en search_results.

Autoridad — reputación verificable

Señales que ChatGPT asocia con autoridad: menciones en medios de referencia, backlinks de calidad, participación en comunidades expertas y consistencia de marca a lo largo del tiempo. No se trata de métricas de dominio — se trata de si el sitio es reconocido como referente en su área.

E-E-A-T
Relevancia — pertinencia y actualización

El contenido debe responder directamente a la intención de búsqueda, con profundidad suficiente y actualización reciente. ChatGPT tiende a realizar búsquedas con long-tail queries específicas — el contenido genérico raramente aparece en sources_footnotes.

Contenido
Alianzas editoriales — efecto indirecto

Las alianzas editoriales no generan priorización directa en la selección de fuentes — ChatGPT no filtra por acuerdos comerciales. Su efecto es indirecto: mejoran la reputación y visibilidad de los medios participantes, lo que sí influye en los criterios de autoridad.

Indirecto
Buenas prácticas

Seis recomendaciones para extracción y análisis de fuentes de IA

Monitoriza las URLs que aparecen en resultados de ChatGPT
Herramientas como Peec AI están especializadas en rastrear la presencia de dominios en las respuestas de modelos de lenguaje. Combinadas con el análisis manual del JSON, permiten hacer seguimiento sistemático de la visibilidad en IA.
Optimiza para long-tail queries específicas
ChatGPT realiza búsquedas orientadas a la intención del usuario, no búsquedas genéricas. El contenido que responde con precisión a preguntas concretas tiene más probabilidad de aparecer en sources_footnotes que el contenido de cobertura amplia sin profundidad.
Automatiza el filtrado por relevancia, autoridad y actualización
En pipelines de extracción de datos, aplicar los mismos criterios que usa ChatGPT: descartar fuentes sin fecha de actualización reciente, priorizar dominios con presencia editorial verificable y eliminar URLs que aparecen consistentemente en blocked_urls.
Solicita fuentes explícitas en tus prompts
Pedir a la IA que incluya las URLs de sus fuentes en la respuesta facilita la verificación sin necesidad de acceder al JSON directamente. Útil para flujos de trabajo donde no se tiene acceso a las herramientas de desarrollo.
Valida cruzando varias fuentes antes de usar los datos
Un campo sources_footnotes no es una garantía de exactitud — es una señal de que ChatGPT consideró esa fuente relevante. Siempre verificar la información en la fuente original antes de incorporarla a un análisis o decisión.
Limpia y deduplica antes del análisis final
El JSON puede contener duplicados entre search_results y safe_urls, o URLs con parámetros de tracking que apuntan al mismo contenido. Normalizar las URLs y eliminar duplicados antes del análisis evita sesgos en los resultados.
Guía desarrollada por Yel Martínez

Yel Martínez, Digital Strategist & Technologist — especialista en SEO técnico, extracción y análisis de datos y estrategia de visibilidad en IA. Para proyectos de análisis de presencia en IA, SEO técnico o desarrollo Python: contacto.

Scroll al inicio