— Datos abiertos · Metodología
Cómo elaboro cada dataset, qué fuentes uso y qué hago cuando me equivoco.
Esta página existe para que cualquiera pueda revisar, criticar o replicar lo que publico en /datos/. Cada dataset tiene su script reproducible, sus fuentes primarias enlazadas y su licencia explícita. Cuando me equivoco — y a veces me he equivocado — lo registro aquí abajo en el changelog público. No tengo redacción, ni patrocinadores, ni intermediarios entre el dato original y lo que aparece en la pieza. Eso es lo que intento documentar aquí.
Los 6 principios transversales
1 · Fuente primaria, siempre
Cuando publico una cifra, viene del organismo que la produce — no de un agregador, ni de un titular de prensa, ni de "según fuentes del sector". Si el dato es PVPC, viene de la API oficial de Red Eléctrica de España. Si es beneficiarios del bono social, del dataset oficial CNMC. Si es producción solar esperada por capital, del PVGIS de la Comisión Europea. Cuando una afirmación necesita una cifra que no encuentro en fuente primaria, la marco como "estimación" en el propio texto o la omito.
2 · Script reproducible
Cada dataset se construye mediante un script Node.js público en
scripts/build-XXX.mjs
del repositorio. Quien quiera puede clonar, ejecutar
npm run build:XXX
y obtener el mismo CSV que publico aquí. Los scripts dejan caché
local reanudable cuando la fuente es lenta (PVGIS, REE histórico)
para que la regeneración trimestral sea rápida.
3 · CSV abierto bajo CC-BY 4.0
Todos los datasets que genero se distribuyen bajo Creative Commons Atribución 4.0 Internacional. La excepción es el dataset del bono social, que hereda CC-BY-SA 4.0 de CNMC (la licencia de la fuente original obliga a mantenerla en cualquier redistribución). En todos los casos la atribución es obligatoria y aparece como cabecera o nota en el propio CSV y en la pieza editorial correspondiente. Reutilización libre incluso comercial; lo único que pido es que la atribución se mantenga.
4 · Validación zod + auditoría cruzada antes de publicar
Antes de cada deploy, el script
npm run prebuild
ejecuta 6 capas de validación con zod sobre los datos JSON
(mojibake, longitud meta tags, presencia de fuentes, conteo
CCAA canónicas, integridad calculadoras, trazabilidad). Además,
desde mayo de 2026 cada pieza nueva pasa por una auditoría
cruzada con un agente Explore que coteja cifras de prosa con
el dataset base — esta auditoría me salvó de publicar dos cifras
incorrectas en la pieza de recarga VE (ver changelog).
5 · Atribución obligatoria al reutilizar
La fórmula básica es: "Datos: [fuente original]. Procesado por guiaenergia.online, CC-BY 4.0". Para citas concretas:
- PVPC histórico → "Datos: Red Eléctrica de España (apidatos.ree.es), procesado por guiaenergia.online, CC-BY 4.0"
- Bono social → "Datos: CNMC dataset bono social, CC-BY-SA 4.0. Reformat: guiaenergia.online"
- Payback solar → "Datos primarios: PVGIS v5.3 (Comisión Europea). Cálculo: guiaenergia.online sobre precios sector 2026 + MOVES III, CC-BY 4.0"
6 · Changelog público de errores
Si publico un dato mal, lo corrijo y lo registro abajo con la fecha exacta, la pieza afectada, qué decía mal y qué dice ahora. No edito a posteriori sin marca. Esto es lo más cercano que puedo ofrecer al "fact-check público" en un sitio sin equipo de redacción.
El flujo, paso a paso
| Paso | Qué hago | Salida |
|---|---|---|
| 1 · Identificar la fuente primaria | Busco el organismo que produce el dato (REE / CNMC / IDAE / BOE / Eurostat / JRC) y confirmo que tiene API o publicación abierta. | URL fuente + tipo de acceso |
| 2 · Escribir el script de descarga | Node ESM en scripts/. Cache reanudable cuando hace falta. Pausa cortés entre requests para no saturar. | scripts/build-XXX.mjs |
| 3 · Procesar y agregar | Reformat de separadores, normalización de unidades, cálculos derivados explícitos en el script. | src/data/XXX.ts + CSV |
| 4 · Validar con zod | npm run prebuild: mojibake, longitud SEO, integridad CCAA, fuentes obligatorias. | Verde o rojo en CLI |
| 5 · Redactar pieza editorial | Import del módulo TS, prosa que comenta los datos, FAQ, schemas Article + Breadcrumb + FAQ. | src/pages/datos/X.astro |
| 6 · Auditoría cruzada | Agente Explore lee la pieza, el dataset y las 4 piezas previas. Reporta contradicciones, fuentes flojas o cifras inventadas. Aplico fixes en bloque. | Reporte [ERROR]/[WARN]/[OK] |
| 7 · Deploy + IndexNow | Build estático Astro + FTP a Banahosting. IndexNow específico de la URL nueva + sitemap re-submit a GSC. | URL en producción |
Las 5 piezas activas y sus pipelines
Para cada dataset publicado, esta tabla resume fuente primaria, script generador, CSV final, licencia y cadencia de actualización:
| Pieza | Fuente primaria | Script | Licencia | Actualización |
|---|---|---|---|---|
| PVPC histórico 2019-2026 | apidatos.ree.es (Red Eléctrica de España) | scripts/build-pvpc-historico.mjs | CC-BY 4.0 | mensual (automático) |
| Bono social no cobrado | CNMC + EsadeEcPol-Oxfam + IIT Comillas | scripts/build-bono-social-data.mjs | CC-BY-SA 4.0 (heredada CNMC) | trimestral manual |
| Recarga VE × PVPC × CCAA | derivado de PVPC histórico + AEAT + RACE/MITECO | scripts/build-recarga-ve-data.mjs | CC-BY 4.0 | trimestral (recálculo régimen fiscal) |
| Payback solar PVGIS × 53 capitales | PVGIS v5.3 (JRC Comisión Europea) + sector + MOVES + REE | scripts/build-payback-solar-data.mjs | CC-BY 4.0 | trimestral (recálculo PVPC promedio) |
| BOE eléctrico + sanciones CNMC | BOE + CNMC (sede electrónica + notas prensa) | scripts/build-boe-cnmc-csv.mjs | CC-BY 4.0 | trimestral manual (monitorización CNMC + BOE) |
Lo que NO hago
- No publico datos sin fuente primaria identificable. Si me piden citar una cifra que circula en titulares pero no encuentro en fuente oficial, la dejo fuera o la marco como "estimación" con el origen exacto.
- No tengo patrocinadores ni acuerdos comerciales con comercializadoras. Los enlaces afiliados que aparecen en otras secciones del sitio (calculadoras, comparativas) están marcados como "afiliado" en cumplimiento de la Ley 34/2002. Los datasets de /datos/ son completamente independientes y no enlazan a comercializadoras.
- No edito a posteriori sin dejar rastro. Cuando corrijo un error, lo registro en el changelog público abajo.
- No genero datos sintéticos a partir de "lo que el mercado dice". Si un dato no existe públicamente, simplemente no lo calculo. Por eso la serie PVPC arranca en 2021 (es cuando REE empezó a publicarlo en API), no en 2019, aunque mi serie de spot sí cubre 2019-2026.
Changelog público de errores corregidos
Cada vez que detecto un dato mal publicado, lo corrijo en la pieza y lo registro aquí con fecha de detección, descripción y origen de la corrección. La idea es que un lector que vea una cifra que le sorprenda pueda comprobar si ya estaba en mi radar.
| Fecha | Pieza | Qué decía mal | Cómo se corrigió | Detección |
|---|---|---|---|---|
| 2026-05-16 | /datos/recarga-coche-electrico-pvpc-2026/ | Cifras 2025 incorrectas (3,93 vs 2,55 €/100 km) y ahorro 2022 exagerado (65 %). | Corregido a 4,09 vs 2,26 €/100 km (datos reales del dataset) y 55 % peninsular / 60 % Canarias. | auditoría cruzada Explore agent pre-deploy |
Por qué quité 76 páginas en mayo de 2026
Hasta abril de 2026 el sitio tenía 76 páginas de tipo
/[silo]/[ccaa]/
(precio de la luz por comunidad autónoma, autoconsumo por
comunidad autónoma, etc.) generadas a partir de una plantilla
compartida. Cada instancia tenía algunos datos específicos
(radiación solar local, importes de ayudas autonómicas), pero la
mayoría del HTML era idéntico entre comunidades — entre el 90 % y
el 99 % de similitud según mi propio análisis.
En mayo de 2026 decidí desindexarlas y redirigirlas mediante 301 a las cuatro páginas territoriales consolidadas: el /tarifas/, /autoconsumo/, /coche-electrico/ y /factura-luz/. La razón es honesta: aquella estructura cumplía técnicamente con SEO programático pero no con el estándar editorial que quiero mantener aquí. Un revisor humano leyendo dos comunidades consecutivas debería ver análisis distintos, no plantillas rellenas. Si no puedo hacer eso bien para 17 + 2 territorios, prefiero no hacerlo.
Esta decisión es la que abrió espacio para la sección de /datos/ actual: el tiempo de redacción que antes iba a 76 plantillas se ha reasignado a 5 datasets propios con investigación real. El contador del sitio bajó de 270 URLs a 208 — pero la mediana de palabras y de tiempo de redacción por URL subió drásticamente. Lo registro aquí porque cualquiera que vea el git log o el changelog GSC encontrará rastro y merece la explicación: no oculto el cambio, lo asumo como aprendizaje.
Cómo reportarme un error
Si encuentras una cifra que crees que está mal — incluso si solo tienes una sospecha — escríbeme. Es la forma más útil de mejorar el sitio.
- Email: contacto@guiaenergia.online
- Formulario: /contacto/
- Pull request: el código y los datasets están en GitHub público.
Si la corrección procede, aparecerá en el changelog público mencionando tu reporte (con tu permiso) en un plazo máximo de 7 días.