Files
fn_registry/python/functions/obsidian/update_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

3.2 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
update_obsidian_note function py obsidian 1.0.0 impure def update_obsidian_note(path: str, body: str = None, set_frontmatter: dict = None, append: str = None) -> str Actualiza una nota Markdown de Obsidian existente. Lee el estado actual con parse_obsidian_frontmatter, hace merge de claves del frontmatter (set_frontmatter), reemplaza el body (body) o concatena texto al final (append), y reescribe con la funcion pura format_obsidian_note. No depende de la app GUI de Obsidian: solo lee y reescribe el archivo .md plano.
obsidian
markdown
frontmatter
update
write
notes
parse_obsidian_frontmatter_py_obsidian
format_obsidian_note_py_obsidian
false error_go_core
os
name desc
path ruta al archivo .md de la nota a actualizar
name desc
body si no es None, reemplaza por completo el cuerpo de la nota
name desc
set_frontmatter dict que se mergea (update de claves) sobre el frontmatter actual; las no mencionadas se conservan
name desc
append texto que se concatena al final del cuerpo (separado por salto de linea); se aplica despues de body
la ruta (str) del archivo actualizado true
merge frontmatter conserva claves previas
reemplazo de body
append concatena al final
body y append combinados
nota inexistente lanza filenotfounderror
directorio lanza isadirectoryerror
python/functions/obsidian/update_obsidian_note_test.py python/functions/obsidian/update_obsidian_note.py

Ejemplo

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

# Marcar como hecha y anadir una linea de log al final
update_obsidian_note(
    "/home/me/vault/Tareas/Revisar PR.md",
    set_frontmatter={"status": "done", "closed": "2026-06-09"},
    append="- Cerrada tras revisar [[PR 42]].",
)

Cuando usarla

Cuando necesites modificar una nota existente sin reescribirla entera: cambiar campos del frontmatter (status, fechas, tags), reemplazar el cuerpo, o ir anadiendo entradas a un log/diario al final. El merge de set_frontmatter permite tocar solo las claves que cambian sin perder el resto.

Gotchas

  • Lee y reescribe en disco (I/O impuro): sobreescribe el archivo completo con el contenido reserializado por format_obsidian_note. El formato/orden del frontmatter puede normalizarse respecto al original escrito a mano.
  • No respeta locks de la app GUI: si Obsidian tiene la nota abierta con cambios sin guardar, esos cambios en memoria se perderan cuando esta funcion reescriba el archivo (la app puede recargarlo o sobreescribirlo de vuelta). Cierra/guarda en Obsidian antes de editar desde codigo.
  • set_frontmatter hace merge superficial (dict.update): claves nuevas se anaden, existentes se reemplazan, las demas se conservan. No borra claves.
  • append se aplica despues de un eventual reemplazo de body, garantizando un salto de linea de separacion.
  • Lanza FileNotFoundError si la nota no existe (no la crea — usa create_obsidian_note para eso).