Files
fn_registry/python/functions/obsidian/create_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.1 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
create_obsidian_note function py obsidian 1.0.0 impure def create_obsidian_note(vault_dir: str, rel_path: str, body: str = '', frontmatter: dict = None, overwrite: bool = False) -> str Crea una nota Markdown nueva en un vault de Obsidian. Anade extension .md si falta, crea directorios padre, serializa frontmatter YAML + body con la funcion pura format_obsidian_note. Falla si la nota existe salvo overwrite=True. No depende de la app GUI de Obsidian: solo escribe un archivo .md plano en disco.
obsidian
markdown
frontmatter
create
write
notes
format_obsidian_note_py_obsidian
false error_go_core
os
name desc
vault_dir directorio raiz del vault de Obsidian donde se crea la nota
name desc
rel_path ruta relativa de la nota dentro del vault; se le anade .md si no lo trae
name desc
body cuerpo Markdown de la nota sin frontmatter (default cadena vacia)
name desc
frontmatter dict con el frontmatter YAML a escribir; None se trata como {}
name desc
overwrite si False (default) y la nota existe lanza FileExistsError; True sobreescribe
ruta absoluta (str) del archivo .md escrito true
crea nota con frontmatter y body
anade extension md si falta
crea directorios padre
existente sin overwrite lanza fileexistserror
overwrite true sobreescribe
destino directorio lanza isadirectoryerror
python/functions/obsidian/create_obsidian_note_test.py python/functions/obsidian/create_obsidian_note.py

Ejemplo

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

path = create_obsidian_note(
    vault_dir="/home/me/vault",
    rel_path="Inbox/Idea rapida",          # se convierte en Inbox/Idea rapida.md
    body="Primer apunte. Ver [[Proyecto X]].",
    frontmatter={"title": "Idea rapida", "tags": ["inbox", "wip"]},
)
print(path)   # /home/me/vault/Inbox/Idea rapida.md

Cuando usarla

Cuando quieras crear una nota nueva en un vault de Obsidian desde codigo o un agente: capturar una idea en el Inbox, generar notas a partir de datos, o materializar plantillas. Crea automaticamente los directorios padre, asi que sirve para sembrar estructuras de carpetas nuevas.

Gotchas

  • Escribe en disco (I/O impuro): crea el archivo y los directorios padre que falten (os.makedirs(..., exist_ok=True)).
  • No respeta locks de la app GUI: si Obsidian esta abierto, el archivo nuevo aparecera en el vault, pero crear una nota cuyo nombre choque con una abierta y sin guardar puede provocar conflictos de version en el editor.
  • Por defecto no sobreescribe: lanza FileExistsError si la nota ya existe. Pasa overwrite=True para reemplazar.
  • Lanza IsADirectoryError si el destino resuelto es un directorio existente.
  • El nombre de archivo se respeta tal cual (incluidos espacios); Obsidian admite espacios en nombres de nota.