
← Atareao con Linux8 oct · 26 min
ATA 838 Deja de escribir Python, doma YAML y JSON con yq y jq
<p>Los metadatos de tus notas son puro oro, y me da la sensación de que todavía no lo sabes. Tienes títulos, fechas de creación, etiquetas... toda esa información del <em>front matter</em> de cada Markdown que, la mayoría de las veces, se queda ahí muerta de risa sin que le saques partido. En los episodios 819 y 821 te conté cómo la extraía con Python para montar un grafo de conocimiento. Funcionaba, pero para cualquier consulta rápida tenías que abrir el script, tocar el código y volver a ejecutarlo. Eso no es ágil.</p><p>En este episodio te presento al <strong>dúo dinámico</strong>: <strong>jq</strong> y <strong>yq</strong>. Dos herramientas que hacen una sola cosa y la hacen de maravilla, esa vieja filosofía UNIX que tanto nos gusta. jq es el procesador de JSON de referencia desde 2012, escrito en C y presente en casi todas las distribuciones. yq es el mismo concepto para YAML, XML, INI, TOML y CSV, escrito en Go por Mike Farah y distribuido como un binario único sin dependencias. Con las dos, y sin escribir ni una línea de Python, vas a extraer, filtrar y conectar los metadatos de tus notas.</p><p>Arrancamos con lo básico de jq, sus <em>filtros</em> y sus cuatro funciones estrella, <strong>select</strong>, <strong>unique</strong>, <strong>map</strong> y <strong>group_by</strong>. Son las que vas a reutilizar una y otra vez. Después pasamos a yq y a su joya de la corona, el soporte nativo de <em>front matter</em>. Con una línea tipo <strong>yq --front-matter=extract '.tags' nota.md</strong> sacas las etiquetas de una nota, y con <strong>-i</strong> la editas <em>in place</em>, algo que jq no permite. Actualizar la fecha de modificación, añadir un tag nuevo o convertir de YAML a JSON y al revés sin salir de la terminal.</p><p>Y luego llega la parte divertida, los <em>pipelines</em>. Encadenando <strong>fd</strong>, <strong>yq</strong> y <strong>jq</strong> consigues una lista limpia de los tags de tu vault, un informe con cuántos documentos usan cada etiqueta o el grafo de conocimiento completo en JSON, con nodos y aristas, sin Python y sin IA. También te enseño a detectar esas notas viudas que no tienen etiqueta y a cerrar el círculo pasando ese JSON a un modelo local con <strong>Ollama</strong>, para que te clasifique las notas y te diga qué conexiones hay entre ellas.</p><p>Terminamos con los errores más habituales, que ya me he encontrado de todo. Que yq solo procesa el primer documento si le pasas varios ficheros, que un front matter sin los