feat(infra): auto-commit con 88 cambios

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-11 00:16:46 +02:00
parent 6bc97df5c0
commit eb8dbf66a1
126 changed files with 10933 additions and 287 deletions
@@ -0,0 +1,65 @@
---
name: extract_obsidian_embeds
kind: function
lang: py
domain: obsidian
version: "1.0.0"
purity: pure
signature: "def extract_obsidian_embeds(body: str) -> list"
description: "Extrae SOLO los embeds ![[...]] (attachments incrustados: imagenes, pdf, otras notas) del cuerpo de una nota de Obsidian, ignorando los wikilinks normales [[...]]. Para cada embed devuelve el target tal cual (nombre de archivo), quitando alias (|...) y anclas (#...). Deduplica preservando orden de aparicion. Pura, sin I/O. Util para detectar que attachments arrastra una nota al migrar un subgrafo."
tags: [obsidian, embed, attachment, image, markdown, extract, migrate]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: ["re"]
params:
- name: body
desc: "Cuerpo Markdown de una nota de Obsidian (idealmente sin frontmatter). Puede mezclar wikilinks [[...]] y embeds ![[...]] con alias (|) o ancla (#)."
output: "Lista de strings con los nombres de los attachments embebidos (el target de cada ![[...]]), unicos y en orden de aparicion. Solo embeds: los wikilinks normales [[...]] se ignoran. Lista vacia si no hay embeds."
tested: true
tests:
- "solo embeds ignora wikilinks"
- "varios embeds orden y dedup"
- "quita alias y ancla"
- "nombre con espacios y parentesis"
- "sin embeds solo wikilinks"
- "body vacio"
test_file_path: "python/functions/obsidian/extract_obsidian_embeds_test.py"
file_path: "python/functions/obsidian/extract_obsidian_embeds.py"
---
## Ejemplo
```python
body = (
"Texto con [[Nota normal]] y un embed ![[imagen.jpg]]. "
"Luego ![[doc.pdf]] y otra vez ![[imagen.jpg]]."
)
extract_obsidian_embeds(body)
# ["imagen.jpg", "doc.pdf"]
extract_obsidian_embeds("![[dni enmanuel (2).jpg]]")
# ["dni enmanuel (2).jpg"]
```
## Cuando usarla
Usala cuando migres o extraigas un subgrafo de notas y necesites saber QUE
attachments hay que copiar junto a cada nota. A diferencia de
`extract_obsidian_wikilinks` (que devuelve todos los enlaces, incluidos los
embeds), esta funcion aisla solo los `![[...]]`, que son los archivos fisicos
incrustados. Combinala con `resolve_obsidian_embed` para localizar el path real
de cada attachment dentro del vault.
## Gotchas
- Devuelve el nombre del attachment tal cual aparece en el embed (p.ej.
`dni enmanuel (2).jpg`), NO un path. Obsidian resuelve embeds por nombre de
archivo unico; para obtener la ruta real usa `resolve_obsidian_embed`.
- Quita deliberadamente el alias (`|300`, util para dimensionar imagenes) y el
ancla (`#Seccion`, util para embeber un trozo de otra nota). Si necesitas esos
modificadores, parsea el body tu mismo.
- Solo reconoce embeds con doble corchete `![[...]]`. Los embeds Markdown
estandar de imagen `![alt](ruta)` NO se detectan.