Evolutivo: PokéAPI y multimedia

Estado: fase 2 hecha. Arte oficial (905 + formas), piedras/Balls e iconos de medallas Kanto→Galar, todo en obsidean/assets/ y copiado dentro de Docker. El sitio no llama a PokéAPI en runtime.

Objetivo: ilustrar la wiki (Pokémon, formas, ítems, medallas, regiones, personajes) con material visual, sin hotlinkear en cada visita y sin mezclar datos de Fire Ash con los de los juegos oficiales.

Qué sí da PokéAPI

API: https://pokeapi.co/api/v2/. Sprites reales en el repo PokeAPI/sprites (la API solo devuelve URLs).

RecursoEndpoint / URL típicaUso en esta wiki
Arte oficial.../sprites/pokemon/other/official-artwork/{id}.pngFicha de especie (02-Pokemon/)
Sprite de combate.../sprites/pokemon/{id}.pngTablas de encuentro, listas compactas
Shiny.../official-artwork/shiny/{id}.pngOpcional, callout o alias
Ítemssprites/items/{slug}.pngPiedras, Poké Balls, objetos de evolución
Medallassprites/badges/{n}.png (1–58)Página de medallas y guía; no son ítems de la API
Nombres ESnames[] con language.name = esComplemento de i18n_es.py (no reemplaza el glosario Fire Ash)
Cadenas evoGET /evolution-chain/{id}Referencia visual; el método canónico sigue siendo Helpful Notes

Política de PokéAPI: cachear. No pegarle en el build de Quartz ni desde el navegador de cada lector.

Qué no da (hay que otra fuente)

PedidoPor qué no alcanza PokéAPICamino probable
Mapas de región / rutas de Fire Ash/region es texto (pueblos, generaciones), no PNG del romhackCapturas del juego, o mapas oficiales solo como “así era en main series”
Personajes (Ash, líderes, Jessie, Sync)No hay retratos de NPCSet curado propio, o diferirlo
Formas exclusivas / data de Fire AshLa API es main seriesSeguir generando texto desde Helpful Notes; la imagen es de la especie base o forma regional si existe en la API
Overworld tiles, interiorsFuera de alcanceNo buscarlos en PokéAPI

Cómo encaja en el repo

  1. Fetcher aparte, no en el request de Quartz: scripts/fetch_media.py (nuevo). Baja y guarda en obsidean/assets/ (Quartz ya emite Plugin.Assets()).
  2. Caché local versionada o al menos gitignored + script reproducible. Preferencia: commitear un subconjunto chico (arte oficial ~905 PNG) o documentar el fetch en el Dockerfile.
  3. build_wiki.py solo referencia archivos locales, p. ej. ![](assets/pokemon/025.png) en format_pokemon_page. Si falta el PNG, la ficha queda igual que ahora.
  4. Mapeo nombre Fire Ash → id nacional con el dex que ya sale de Locations (extra["dex"]). Formas: alolan-raichu, mega-venusaur, etc. (GET /pokemon/{slug}).
  5. Ítems / piedras / medallas: ítems con slug kebab (thunder-stone, poke-ball); medallas por índice de sprite (boulder-badgesprites/badges/1.png). Islas Naranja / Ponzoña / Kanto: texto sin icono.
  6. Docker: copiar obsidean/assets en el build; no llamar a la red en runtime nginx.

Hotlink directo a raw.githubusercontent.com queda descartado para el sitio publicado (offline, rate limit, rotura de URLs).

Fases

FaseAlcanceCriterio de listo
1 — PokémonArte oficial en fichas 1–905 + formas con id de APIHecha
2 — ÍtemsPiedras evolutivas, medallas Kanto→Galar, Balls frecuentesHecha
3 — EncuentrosMini-sprite al lado del nombre en tablasRoute 1 se lee con icono + nombre ES
4 — RegionesPortada de cada 01-Guia/{Region}/indexMapa oficial etiquetado como main series, o placeholder “mapa Fire Ash TBD”
5 — PersonajesSolo si hay set de imágenes con licencia claraSin esto, no inventar URLs

No mezclar stats/movimientos de PokéAPI con los de Fire Ash. La API es solo media + nombres auxiliares.

Propiedad intelectual

Sprites y arte son de Nintendo / Game Freak / Creatures. Esta wiki es un vault personal del romhack. No republicar el bundle de imágenes como producto. Si se publica Quartz en un dominio, revisar que siga siendo uso de fan no comercial.

Cómo arrancar (cuando se pida implementar)

python scripts/fetch_media.py
python scripts/build_wiki.py
docker compose -f pokewiki/docker-compose.yml up --build -d

Fase 1–2: arte en fichas, piedras/Balls y medallas. Las fases 3–5 siguen pendientes.