Files
fn_registry/python/functions/obsidian/read_obsidian_note.md
T
egutierrez eb8dbf66a1 feat(infra): auto-commit con 88 cambios
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-11 00:16:46 +02:00

2.6 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
read_obsidian_note function py obsidian 1.0.0 impure def read_obsidian_note(path: str) -> dict Lee una nota Markdown de Obsidian desde disco y la descompone en frontmatter YAML, body, wikilinks ... y tags normalizados. Compone las funciones puras parse_obsidian_frontmatter y extract_obsidian_wikilinks. No depende de la app GUI de Obsidian: solo lee el archivo .md plano.
obsidian
markdown
frontmatter
wikilinks
read
notes
parse_obsidian_frontmatter_py_obsidian
extract_obsidian_wikilinks_py_obsidian
false error_go_core
os
name desc
path ruta al archivo .md de la nota a leer
dict con path (str), frontmatter (dict), body (str), wikilinks (list de destinos ...) y tags (list normalizada desde frontmatter['tags'], acepta CSV o lista) true
lee nota con frontmatter y wikilinks
normaliza tags csv a lista
nota sin frontmatter
archivo inexistente lanza filenotfounderror
directorio lanza isadirectoryerror
python/functions/obsidian/read_obsidian_note_test.py python/functions/obsidian/read_obsidian_note.py

Ejemplo

import sys, os
sys.path.insert(0, os.path.join("python", "functions"))
from obsidian import read_obsidian_note

note = read_obsidian_note("/home/me/vault/Proyectos/Idea.md")
print(note["frontmatter"])   # {'title': 'Idea', 'tags': ['proyecto', 'wip']}
print(note["tags"])          # ['proyecto', 'wip']
print(note["wikilinks"])     # ['Nota Relacionada', 'Otra Idea']
print(note["body"][:80])     # primeras lineas del cuerpo Markdown

Cuando usarla

Cuando necesites cargar el contenido de una nota de Obsidian de forma estructurada: leer su frontmatter, su cuerpo, los wikilinks que apunta o sus tags. Es el primer paso natural antes de actualizar una nota (update_obsidian_note) o de construir un grafo de enlaces a partir de los wikilinks.

Gotchas

  • Lee de disco (I/O impuro): el resultado refleja el estado del archivo en ese instante.
  • No respeta locks de la app GUI: si Obsidian esta abierto y tiene la nota con cambios sin guardar, leeras la version persistida en disco, no la del editor en memoria.
  • Lanza FileNotFoundError si el path no existe e IsADirectoryError si apunta a un directorio.
  • tags se normaliza siempre a lista: acepta tanto tags: proyecto, wip (CSV) como tags: [proyecto, wip] (lista YAML). Otros tipos se convierten a string en un unico tag.