Flujo
scripts/build-search-index.tsescanea docs y datasets JSON de contenido bajoassets/content/<locale>/pokemon/yassets/content/<locale>/moves/.- Genera:
build/search-index.jsonpara fallback local de busqueda combinadabuild/search-indices.jsonpara sincronizacion remota de multiples indicesbuild/content/en/pokemon-manifest.jsonybuild/content/es/pokemon-manifest.jsonpara listado y navegacion rapida de Pokemon en frontendbuild/content/en/moves-manifest.jsonybuild/content/es/moves-manifest.jsonpara listado y navegacion rapida de moves en frontendbuild/content/en/move-learners-manifest.jsonybuild/content/es/move-learners-manifest.jsonpara busqueda rapida de aprendices por move
- Si
MEILISEARCH_URLyMEILISEARCH_KEYestan definidos, el script publica cada payload de indice (wiki-docs,wiki-pokemonywiki-moves) directamente en el indice correspondiente de Meilisearch. .github/workflows/search-index.ymlejecuta el script enmainy de forma nocturna, sube los payloads de busqueda generados y los manifiestos de contenido del frontend como artifacts del workflow, y luego envia el payload JSON multi-indice al endpoint protegido de sync del backend del sitio para mantener privado Meilisearch.
Configuracion requerida
| Variable | Descripcion |
|---|---|
MEILISEARCH_URL | URL base de la instancia autohospedada de Meilisearch |
MEILISEARCH_KEY | Clave de admin o documents con permisos de escritura |
Configuracion opcional de CI
| Secret | Descripcion |
|---|---|
WIKI_SEARCH_SYNC_URL | URL HTTPS publica opcional del endpoint de sync del backend |
WIKI_SEARCH_SYNC_TOKEN | Token bearer compartido opcional validado por el backend antes de importar documentos |
Cuando ambos secrets estan configurados, el workflow sincroniza
build/search-indices.json con el backend del sitio. Cuando falta alguno, el
workflow igual construye los payloads de busqueda y sube los artifacts generados
para que la ejecucion siga siendo depurable.
Ejecucion local
MEILISEARCH_URL=https://search.pokebedrock.com \
MEILISEARCH_KEY=<docs-key> \
npm run build:search
El comando escribe payloads de busqueda y manifiestos del frontend, y publica los tres indices remotos cuando las variables de entorno estan definidas.
Endpoint de sync en produccion
El flujo de produccion por defecto no expone Meilisearch publicamente:
- GitHub Actions construye
build/search-index.json,build/search-indices.jsony los manifiestos de contenido del frontend bajobuild/content/<locale>/(pokemon-manifest.json,moves-manifest.json,move-learners-manifest.json). Todos estos se suben como artifacts del workflow. - Si
WIKI_SEARCH_SYNC_URLyWIKI_SEARCH_SYNC_TOKENestan configurados, el workflow hacePOSTdebuild/search-indices.jsonal backend del sitio. - Cuando esos secrets todavia no estan configurados, el workflow omite el paso de sync del backend y aun asi sube los artifacts generados.
- Si el sync se ejecuta, el backend valida
WIKI_SEARCH_SYNC_TOKEN. - Luego el backend se conecta a
http://meilisearch:7700dentro del cluster y reemplaza:wiki-docswiki-pokemonwiki-moves
Schema del documento
{
"id": "guides/getting-started",
"slug": "guides/getting-started",
"title": "Comenzando",
"description": "Resumen corto...",
"tags": ["guia", "onboarding"],
"lastUpdated": "2025-11-21",
"status": "stable",
"lang": "en",
"order": 3,
"body": "Contenido Markdown sin frontmatter"
}
Manten descripciones de hasta 180 caracteres para evitar truncamiento en UIs de busqueda.