eb8dbf66a1
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.6 KiB
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. |
|
|
false | error_go_core |
|
|
dict con path (str), frontmatter (dict), body (str), wikilinks (list de destinos ...) y tags (list normalizada desde frontmatter['tags'], acepta CSV o lista) | true |
|
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
FileNotFoundErrorsi el path no existe eIsADirectoryErrorsi apunta a un directorio. tagsse normaliza siempre a lista: acepta tantotags: proyecto, wip(CSV) comotags: [proyecto, wip](lista YAML). Otros tipos se convierten a string en un unico tag.