¿Qué hace qmd?
Búsqueda híbrida local para notas y documentos en markdown. Útil al buscar notas, encontrar contenido relacionado o recuperar documentos de colecciones indexadas.
Características
- Búsqueda híbrida: Combina búsqueda semántica (embeddings) y por palabras clave (TF-IDF) para obtener resultados precisos.
- Almacenamiento local: Todo el índice y los datos se almacenan localmente, sin necesidad de servicios en la nube.
- Soporte para múltiples colecciones: Organiza tus notas en colecciones separadas (por ejemplo, proyectos, temas, áreas de conocimiento).
- Rápido y eficiente: Optimizado para cargas de trabajo de búsqueda en tiempo real.
- Integración con agentes de IA: Funciona con Claude Code, Cursor, Codex y otras herramientas de agente de IA.
Uso
Para usar este skill, proporciona una consulta en lenguaje natural y (opcionalmente) especifica una colección:
``` Buscar: "arquitectura de microservicios" en colección: "notas-de-proyecto" ```
O simplemente:
``` Encuentra notas relacionadas con "patrones de diseño React" ```
Requisitos
- Node.js 18 o superior
- Directorio de notas markdown con estructura consistente
Instalación
-
Clona este repositorio: ```bash git clone https://github.com/levineam/qmd.git cd qmd ```
-
Instala las dependencias: ```bash npm install ```
-
Configura las variables de entorno (opcional):
QMD_NOTES_DIR: Ruta al directorio de notas (por defecto:./notes)QMD_PORT: Puerto del servidor (por defecto:3000)
API
POST /search
Busca documentos por consulta.
Cuerpo de la solicitud:
```json { "query": "término de búsqueda", "collection": "nombre-colección", "limit": 10 } ```
Respuesta:
```json { "results": [ { "path": "ruta/al/documento.md", "score": 0.95, "title": "Título del documento", "snippet": "Fragmento relevante del contenido..." } ] } ```
POST /index
Indexa (o reindexa) una colección.
Cuerpo de la solicitud:
```json { "collection": "nombre-colección" } ```
Estructura del Directorio de Notas
Se espera una estructura de archivos markdown, por ejemplo:
``` notas/ ├── proyecto-a/ │ ├── nota1.md │ └── nota2.md ├── proyecto-b/ │ └── documentacion.md └── general/ └── ideas.md ```
Cada archivo markdown debe tener un frontmatter YAML opcional (delimitado por ---) con metadatos como título, etiquetas, etc.
Personalización
Puedes ajustar los siguientes parámetros en tu archivo de configuración o variables de entorno:
QMD_EMBEDDING_MODEL: Modelo para embeddings semánticos (por defecto:all-MiniLM-L6-v2)QMD_TFIDF_WEIGHT: Peso de la búsqueda TF-IDF en la combinación híbrida (por defecto:0.5)QMD_SEMANTIC_WEIGHT: Peso de la búsqueda semántica (por defecto:0.5)
Licencia
MIT