Skip to content

Arconte112/obsidian_api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Obsidian API Bridge

Servicio REST construido con Flask que actúa como puente entre un vault de Obsidian sincronizado en Nextcloud y el ecosistema externo (LLMs, bots, automatizaciones). Permite listar directorios, leer, crear, actualizar y eliminar notas o carpetas de manera segura.

Características

  • Navegación recursiva del vault mediante WebDAV.
  • Lectura y escritura de notas Markdown con limpieza de rutas.
  • Creación de notas y carpetas, y eliminación controlada.
  • Logs estructurados (obsidian_api.log) y manejo extensivo de errores.
  • Protección frente a path traversal (safe_path).

Stack tecnológico

  • Python 3.11
  • Flask 3
  • webdavclient3 para integrarse con Nextcloud.
  • python-dotenv para cargar credenciales.

Endpoints principales

Método Ruta Descripción
GET /vault/structure?path=<opcional> Obtiene el árbol de directorios / archivos.
GET /vault/read?path=nota.md Descarga y devuelve el contenido de una nota.
POST /vault/create Crea una nota o carpeta.
PUT /vault/update Sobrescribe el contenido de una nota existente.
DELETE /vault/delete Elimina una nota o carpeta.

Ver el archivo obsidian_api.py para parámetros exactos.

Configuración

Cree un archivo .env (ver .env.example):

NEXTCLOUD_URL=https://tu-nextcloud.example.com
NEXTCLOUD_USERNAME=usuario
NEXTCLOUD_PASSWORD=clave
VAULT_REMOTE_PATH=Obsidian

Instalación y ejecución

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
flask --app obsidian_api run --host 0.0.0.0 --port 5000

Docker

docker build -t obsidian-api .
docker run --rm -p 5000:5000 \
  -e NEXTCLOUD_URL=... \
  -e NEXTCLOUD_USERNAME=... \
  -e NEXTCLOUD_PASSWORD=... \
  obsidian-api

Monte un volumen si desea persistir logs (/app/obsidian_api.log).

Notas de seguridad

  • Use cuentas de servicio en Nextcloud con permisos limitados.
  • Considere colocar el servicio detrás de un proxy con autenticación (ej. traefik, nginx).
  • Los logs incluyen rutas solicitadas; revise políticas de retención.

Roadmap

  • Cacheo local de notas populares.
  • Difusión de cambios mediante webhooks/SignalR.
  • Soporte para archivos binarios (imágenes, PDFs) en el vault.

Licencia

Distribuido bajo licencia MIT.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published