A modern, open-source recipe repository inspired by HowToCook. This project aims to create a comprehensive, structured, and accessible collection of global recipes—enriched with metadata, automation, and AI-ready features. Includes CI/CD workflows, community-driven contributions, and support for advanced search and AI applications. Recetario automatizado y enriquecido, con flujos CI/CD, integración para IA y comunidad bilingüe. Inspirado en HowToCook.
-
Todas las recetas principales estandarizadas y enriquecidas (YAML, sensorial, nutricional, imágenes, fuentes, licencia)
-
En proceso de revisión y enriquecimiento de recetas secundarias y nuevas adiciones
-
Sincronización de índices, enlaces y documentación
-
Preparación para integración con agentes de IA, búsqueda semántica y vectorización
Este repositorio integra:
-
Recetas colombianas estandarizadas con YAML Front Matter, imágenes libres, fuentes y licencia open source.
-
Automatización CI/CD: generación automática de metadatos (
recipes_metadata.json
) tras cada push a main. -
Scripts y workflows para vectorización de recetas, listos para IA/RAG (ChromaDB, Qdrant, etc).
-
Documentos de comunidad en español e inglés.
-
Rama
main
protegida con checks automáticos.
Para una guía completa sobre el flujo CI/CD, el sistema de pre-commit, la vectorización para IA y cómo contribuir, consulta la nueva documentación en la carpeta docs/
:
-
Linting: Valida la calidad y el formato de las recetas (
ci.yml
). -
Extracción de metadatos: Genera automáticamente
recipes_metadata.json
con los metadatos de todas las recetas (metadata.yml
). -
Vectorización IA: Script para generar vectores de recetas (
.github/scripts/vectorize_recipes.py
).
Para asegurar la calidad y consistencia del código desde el momento de su creación, el proyecto utiliza hooks de pre-commit automáticos.
-
Husky: Gestiona los hooks de Git, permitiendo ejecutar scripts en diferentes etapas del ciclo de vida de Git (como
pre-commit
). -
lint-staged: Ejecuta linters (como
markdownlint
) únicamente sobre los archivos que están en el "staging area" de Git (git add
). Esto hace que el proceso sea rápido y eficiente. ¿Cómo funciona?
-
Cuando ejecutas
git commit
, Husky se activa. -
Husky ejecuta la configuración de
lint-staged
definida enpackage.json
. -
lint-staged
revisa los archivos.md
que vas a guardar y les aplicamarkdownlint --fix
para corregir errores de formato automáticamente. -
Si no hay errores, el commit se completa. Este flujo garantiza que todo el contenido Markdown que llega al repositorio cumple con las reglas de estilo, evitando errores en el CI/CD y manteniendo la legibilidad.
-
Extracción y generación automática de metadatos:
- Cada vez que se realiza un push a
main
o se abre un Pull Request, el workflowmetadata.yml
ejecuta el script de extracción de metadatos. - Si hay cambios en
recipes_metadata.json
, se crea automáticamente un Pull Request con la actualización.
- Cada vez que se realiza un push a
-
Pull Request automático y automerge:
- El Pull Request generado por el workflow se etiqueta y habilita para "automerge".
- El PR solo se fusiona cuando todos los checks de CI/CD (lint, build, etc.) pasan correctamente.
- Este proceso es compatible con las reglas de protección de rama más estrictas y no requiere intervención manual.
-
Validación obligatoria:
- Todos los cambios (manuales o automáticos) deben pasar los workflows de CI/CD antes de ser fusionados a
main
. - No se permite push directo a
main
si hay reglas de protección activas. - La integración continua asegura calidad y consistencia en toda la base de recetas.
- Todos los cambios (manuales o automáticos) deben pasar los workflows de CI/CD antes de ser fusionados a
-
Un colaborador o workflow genera cambios en recetas.
-
Se actualiza
recipes_metadata.json
automáticamente. -
Se abre un Pull Request automático con los cambios de metadatos.
-
Los workflows de CI/CD validan el PR.
-
Si todo es correcto, el PR se fusiona automáticamente a
main
.
-
Todas las recetas deben tener YAML Front Matter completo y cumplir la metodología.
-
Corrección de lints obligatoria (Markdown).
-
Los workflows deben pasar antes de aceptar un Pull Request.
-
Consulta la sección "Automatización" para entender cómo se integran los cambios de metadatos y cómo se revisan de forma automática.
-
Ejecuta el script
.github/scripts/vectorize_recipes.py
tras actualizar los metadatos. -
El archivo
recipes_vectors.jsonl
estará listo para importar en ChromaDB, Qdrant o motores RAG. -
Puedes adaptar los campos a vectorizar según necesidades de tu app o agente.
-
Crea una rama desde main.
-
Usa la plantilla de receta y sigue la metodología documentada.
-
Agrega fuentes, imágenes libres y licencia.
-
Haz Pull Request y espera que los checks CI/CD pasen.
-
Puedes contribuir en español o inglés. Consulta
CONTRIBUTING.md
yCONTRIBUTING.es.md
.
-
Solo se puede mergear a main si todos los checks CI/CD pasan.
-
No se permite force-push ni borrado accidental de main.
-
Los administradores pueden ajustar las reglas en Settings > Branches.
MIT. Todo el contenido es open source y reutilizable.
Inspirado por HowToCook y la comunidad de cocina y tecnología.
Cada receta debe comenzar con un bloque YAML Front Matter que contenga los metadatos clave. Esto permite búsquedas, filtrados y procesamiento automático por agentes inteligentes y facilita la interoperabilidad.
---
title: "Chuzo Colombiano"
region: "Nacional"
categories: ["Snack", "Comida callejera", "Plato fuerte"]
sensory:
flavor: ["Umami", "Ahumado"]
texture: ["Jugoso", "Dorado por fuera"]
aroma: ["Ahumado", "Especiado"]
presentation: "Se sirve en brocheta, acompañado de papa y arepa. Ideal para compartir en fiestas y eventos nocturnos."
main_ingredients:
- Carne de res
- Pollo
- Papa salada
- Arepa
difficulty: "★★☆☆☆"
prep_time: "40 minutos"
servings: 6
images:
- url: "https://pixabay.com/es/photos/chorizo-parrilla-barbacoa-2314640/"
description: "Chuzo colombiano en parrilla (Pixabay)"
sources:
- "https://www.recetasdecolombia.com/chuzo"
- "https://www.youtube.com/results?search_query=chuzo+colombiano"
license: "MIT"
---
Cada receta debe incluir un bloque YAML Front Matter al inicio, con los siguientes campos:
-
title
: Nombre completo del plato. -
region
: Región o categoría principal (ejemplo: Andina, Caribe, Nacional). -
categories
: Lista de categorías de uso (ejemplo: Snack, Plato fuerte, Comida callejera). -
sensory
: Objeto con subcampos paraflavor
(sabores dominantes),texture
(texturas principales),aroma
(aromas destacados) ypresentation
(descripción de presentación y experiencia). -
main_ingredients
: Ingredientes principales o diferenciadores. -
difficulty
: Dificultad estimada (puede ser en estrellas o texto). -
prep_time
: Tiempo estimado de preparación total. -
servings
: Porciones aproximadas. -
images
: Lista de objetos conurl
ydescription
de imágenes libres de uso. -
sources
: Lista de enlaces a fuentes, recetas, videos, artículos o entrevistas. -
license
: Licencia de uso del contenido (ejemplo: MIT, CC BY 4.0). Consulta ejemplos y plantillas en los archivos de cada región y enCOLOMBIAN_RECIPES_PLAN.md
. -
region
: Región o categoría principal (ejemplo: Andina, Caribe, Nacional). -
categories
: Lista de categorías de uso (ejemplo: Snack, Plato fuerte, Comida callejera). -
sensory
: Objeto con subcampos paraflavor
(sabores dominantes),texture
(texturas principales),aroma
(aromas destacados) ypresentation
(descripción de presentación y experiencia). -
main_ingredients
: Ingredientes principales o diferenciadores. -
difficulty
: Dificultad estimada (puede ser en estrellas o texto). -
prep_time
: Tiempo estimado de preparación total. -
servings
: Porciones aproximadas. -
images
: Lista de objetos conurl
ydescription
de imágenes libres de uso. -
sources
: Lista de enlaces a fuentes, recetas, videos, artículos o entrevistas. -
license
: Licencia de uso del contenido (ejemplo: MIT, CC BY 4.0). Consulta ejemplos y plantillas en los archivos de cada región y enCOLOMBIAN_RECIPES_PLAN.md
.
-
Crea tus recetas siguiendo la plantilla YAML Front Matter y el estándar de enriquecimiento sensorial/nutricional.
-
Haz un Pull Request. Solo se aceptarán cambios que cumplan con la estructura y pasen la validación automática.
-
Consulta el archivo
.github/PULL_REQUEST_TEMPLATE.md
y la documentación para detalles. -
Crea tus recetas siguiendo la plantilla YAML Front Matter y el estándar de enriquecimiento sensorial/nutricional.
-
Haz un Pull Request. Solo se aceptarán cambios que cumplan con la estructura y pasen la validación automática.
-
Consulta el archivo
.github/PULL_REQUEST_TEMPLATE.md
y la documentación para detalles.
Este proyecto es open source bajo la licencia MIT. Consulta el archivo LICENSE
para más detalles.
-
COLOMBIAN_RECIPES_PLAN.md: Plan y metodología detallada
-
PLAN_SABORES_LATINOS.md: Plan para otras cocinas latinoamericanas
-
plan_enriquecimiento_recetas.md: Metodología de enriquecimiento sensorial y nutricional
-
Carpetas por región y categoría en
dishes/colombian/
-
COLOMBIAN_RECIPES_PLAN.md: Plan y metodología detallada
-
PLAN_SABORES_LATINOS.md: Plan para otras cocinas latinoamericanas
-
plan_enriquecimiento_recetas.md: Metodología de enriquecimiento sensorial y nutricional
-
Carpetas por región y categoría en
dishes/colombian/
La estandarización y enriquecimiento de recetas se basa en:
-
Investigación en fuentes académicas, colectivas y restaurantes reconocidos
-
Análisis sensorial y nutricional por ingrediente
-
Inclusión de imágenes libres y enlaces verificados
-
Documentación abierta y colaborativa Para detalles, consulta los archivos de metodología y el plan general. Inspirado en HowToCook y adaptado para IA, conocimiento abierto y la cocina colombiana.
{{ ... }}
-
Perca al vapor con aceite de cebollín (pendiente de traducir)
-
Langostinos rojos argentinos a la plancha (pendiente de traducir)
-
Cabeza de pescado estofada en salsa roja (pendiente de traducir)
-
Langostinos salteados con mantequilla (pendiente de traducir)
-
Langostinos con mantequilla y mostaza (pendiente de traducir)
Si ya has hecho muchas de las recetas anteriores, has entrado en el mundo de la cocina y quieres aprender técnicas más avanzadas, sigue leyendo:
Este repositorio proporciona datos de recetas estructurados en dos formatos:
recipes_metadata.json
: Contiene metadatos para todas las recetas en el repositorio, incluyendo título, descripción, ingredientes y otros campos.recipes_vectors.jsonl
: Contiene embeddings vectoriales para cada receta, que se pueden utilizar para búsqueda semántica y recuperación.
Los agentes de IA pueden utilizar estos archivos para:
- Recuperar información de recetas por ID o título
- Realizar búsqueda semántica utilizando embeddings vectoriales
- Construir sistemas de recomendación
// recipes_metadata.json es un arreglo de objetos de recetas
[
{
"nombre": "Nombre de la receta",
"descripcion": "Descripción de la receta",
...
}
]
El archivo recipes_vectors.jsonl
está en formato JSON Lines. Cada línea es un objeto JSON con:
- Los metadatos de la receta
- Un campo
vector
que contiene el arreglo de embeddings
Los agentes pueden cargar los embeddings en una base de datos vectorial como ChromaDB o Qdrant para búsqueda de similitud eficiente.
Estos archivos se actualizan automáticamente mediante GitHub Actions cuando se realizan cambios en la rama main
. Los archivos actualizados se comprometen en el repositorio y están disponibles para su uso.
import { ChromaClient } from 'chromadb';
const client = new ChromaClient();
const collection = await client.getCollection('recipes');
// Consulta para recetas similares
const results = await collection.query({
queryEmbeddings: [/* tu vector de embeddings de consulta */],
nResults: 5
});
// Los resultados contendrán las 5 recetas más similares
console.log(results);
Para generar los archivos recipes_metadata.json
y recipes_vectors.jsonl
, puedes ejecutar los scripts:
npx markdownlint "**/*.md" --fix --ignore node_modules && npx ts-node .github/scripts_ts/extract_metadata.ts && npx ts-node .github/scripts_ts/vectorize_recipes.ts