RSSidian
Conecta fuentes RSS a Obsidian para análisis automatizado de contenido y resúmenes impulsados por IA.
Documentación
RSSidian
RSSidian es una herramienta potente que conecta tus suscripciones de feeds RSS con Obsidian, creando un pipeline automatizado para el análisis de contenido de artículos y la gestión del conocimiento.
Características
- Integración OPML:
- Importa automáticamente suscripciones RSS desde archivos OPML
- Añade feeds directamente mediante línea de comandos (sin necesidad de OPML)
- Gestión inteligente de feeds con capacidades de silenciar/activar
- Organización sencilla de suscripciones y listado de artículos
- Procesamiento de Feeds RSS:
- Recupera y analiza feeds RSS para descubrir nuevos artículos
- Por defecto, procesa solo artículos recientes (últimos 7 días)
- Período de retroceso configurable para contenido más antiguo
- Almacenamiento Inteligente:
- Base de datos SQLite3 para metadatos de artículos y contenido completo
- Índice vectorial Annoy para búsqueda semántica rápida
- Incrustaciones vectoriales para descubrimiento eficiente de contenido
- Seguimiento de estadísticas de feeds (recuento de artículos, calificaciones de calidad)
- Exportación configurable a Markdown de Obsidian
- Análisis Impulsado por IA:
- Utiliza OpenRouter para generar resúmenes e ideas personalizados
- Evaluación inteligente de calidad de contenido (sistema de niveles S/A/B/C/D)
- Análisis de valor con puntuación numérica (1-100)
- Umbrales de calidad configurables para el filtrado de contenido
- Seguimiento de costos para todas las llamadas a la API de IA
- Generación de Resúmenes:
- Crea notas de resumen completas en Obsidian
- Agrupa historias similares o superpuestas para una presentación concisa
- Organiza el contenido por nivel de calidad y relevancia
- Incluye estadísticas de feeds y métricas de procesamiento
- Búsqueda en Lenguaje Natural:
- Búsqueda semántica rápida impulsada por la biblioteca Annoy
- Búsqueda inteligente que comprende el significado de tus consultas
- Encuentra contenido relevante incluso cuando las palabras exactas no coinciden
- Umbral de relevancia configurable para ajustar los resultados
- Resultados agrupados por feed con extractos relevantes
- Integración con Obsidian:
- Genera notas en Markdown con plantillas personalizables
- API de Servicio MCP:
- Expone un servicio de Protocolo de Contexto de Modelo para agentes de IA
Instalación
# Clone the repository
git clone https://github.com/pedramamini/rssidian.git
cd rssidian
# Create and activate virtual environment using uv
uv venv
source .venv/bin/activate
# Install dependencies
uv pip install hatch
uv pip install -e .
# Or if you prefer using regular pip
python -m venv .venv
source .venv/bin/activate
pip install hatch
pip install -e .
Nota: Usamos hatch como nuestro sistema de compilación. El indicador -e instala el paquete en modo editable, lo cual se recomienda para desarrollo.
Problemas de XCode en OSX
Si tienes problemas de compilación, prueba:
sudo xcode-select --reset
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -license
export SDKROOT=$(xcrun --sdk macosx --show-sdk-path)
export CFLAGS="-isysroot $SDKROOT -I$SDKROOT/usr/include"
export CXXFLAGS="$CFLAGS"
export LDFLAGS="-L$SDKROOT/usr/lib"
export PATH="$SDKROOT/usr/bin:$PATH"
rm -rf ~/.cache/uv/builds-v0
uv pip install -e .
Configuración
Inicializa la configuración:
rssidian init
Esto crea un archivo de configuración en ~/.config/rssidian/config.toml
Configura los ajustes:
[obsidian]
# Path to your Obsidian vault
vault_path = "~/Documents/Obsidian"
# Template for generated digest note
# Available variables: {date_range}, {summary_items}, {value_analysis}, {feed_stats}
template = """{date_range}
# Feed Digest
## Top Stories
{summary_items}
## Feed Statistics
{feed_stats}
"""
[search]
# Search configuration options
# Length of context to include in search excerpts (in characters)
excerpt_length = 300
[openrouter]
# OpenRouter API configuration
# API key can also be set via RSSIDIAN_OPENROUTER_API_KEY environment variable
api_key = ""
# Model to use for topic detection and article processing
processing_model = "openai/gpt-4o"
# Sample size in characters for topic detection
topic_sample_size = 4096
# Model to use for summarization
# See https://openrouter.ai/docs for available models
model = "openai/gpt-4o"
# Prompt template for processing articles
# Available variables: {content}
prompt = """Your custom prompt template here.
Available variable: {content}"""
# Enable value analysis in output
# When enabled, each article will include a Value assessment
value_prompt_enabled = true
# Minimum quality tier to include in digest (S, A, B, C, D)
# Articles with lower quality tiers will be discarded
minimum_quality_tier = "B"
[annoy]
# Path to vector index file
index_path = "~/.config/rssidian/annoy.idx"
# Number of trees (more = better accuracy but slower build)
n_trees = 10
# Distance metric (angular = cosine similarity)
metric = "angular"
Uso
# Initialize configuration
rssidian init
# Show configuration and system status
rssidian show-config # Displays config, vector index status, and article stats
# Import and export feeds in OPML format
rssidian opml import path/to/subscriptions.opml # Import feeds from OPML file
rssidian opml export path/to/export.opml # Export all feeds
rssidian opml export path/to/export.opml --exclude-muted # Export only active feeds (exclude muted)
# Manage feed subscriptions
rssidian subscriptions add <feed_url> # Add a new RSS feed subscription
rssidian subscriptions add <feed_url> --title "My Feed" # Add feed with custom title
rssidian subscriptions add <feed_url> --force # Update existing feed metadata
rssidian subscriptions list # List all subscriptions (sorted alphabetically)
rssidian subscriptions list --sort=articles # List all subscriptions (sorted by article count)
rssidian subscriptions list --sort=rating # List all subscriptions (sorted by quality rating)
rssidian subscriptions list --sort=updated # List all subscriptions (sorted by last update date)
rssidian subscriptions mute "Feed Title" # Mute a feed (skip during ingestion)
rssidian subscriptions unmute "Feed Title" # Unmute a feed
# Process new articles (last 7 days by default)
rssidian ingest
# Process articles from last 30 days with debug output
rssidian ingest --lookback 30 --debug
# Search through article content using natural language (default relevance)
rssidian search "impact of blockchain on cybersecurity"
# Search with custom relevance threshold
rssidian search "meditation techniques for beginners" --relevance 75
# Force refresh of search index before searching
rssidian search "blockchain" --refresh
# Start the MCP (Model Context Protocol) service
rssidian mcp --port 8080 # Start in HTTP mode on port 8080
rssidian mcp --stdio # Start in STDIO mode for Claude Desktop integration
Copia de Seguridad de la Base de Datos
RSSidian incluye un sistema robusto de copias de seguridad para ayudarte a proteger tu base de datos de artículos:
- Marca de tiempo automática: Las copias de seguridad se nombran automáticamente con el formato AAAA-MM-DD
- Múltiples copias diarias: El sistema maneja automáticamente múltiples copias de seguridad en el mismo día añadiendo un índice
- Proceso de restauración seguro: Crea una copia de seguridad temporal antes de restaurar en caso de fallos
Comandos:
# Create a new backup
rssidian backup create
# List all backups with sizes and dates
rssidian backup list
# Restore from a specific date
rssidian backup restore 2025-02-24
Al restaurar una copia de seguridad, RSSidian:
- Muestra la diferencia de tamaño entre la base de datos actual y la copia de seguridad
- Muestra la diferencia de tiempo entre la base de datos actual y la copia
- Requiere confirmación explícita antes de continuar
- Crea una copia de seguridad temporal de tu base de datos actual como medida de seguridad
Estado del Sistema
Usa el comando show-config para ver el estado actual de tu instalación de RSSidian:
rssidian show-config
Esto mostrará:
- Ubicación y tamaño del índice vectorial
- Número total de artículos
- Número de artículos con incrustaciones
- Otros ajustes de configuración
Cómo Funciona
Gestión de Feeds:
- Importa URLs de feeds desde archivos OPML
- Exporta feeds a archivos OPML (con opción de incluir/excluir feeds silenciados)
- Almacena datos de suscripción en la base de datos SQLite
- Permite silenciar/activar feeds específicos
Procesamiento de Contenido:
- Obtiene artículos de feeds RSS
- Genera incrustaciones vectoriales
- Actualiza el índice vectorial Annoy
- Almacena en la base de datos SQLite
Procesamiento de IA:
- Genera resúmenes mediante OpenRouter
- Analiza el valor del contenido (niveles S/A/B/C/D)
- Asigna puntuaciones de calidad (1-100)
- Filtra contenido de bajo valor (umbral configurable)
Integración de Conocimiento:
- Crea notas de resumen en Obsidian
- Organiza el contenido por calidad y relevancia
- Incluye estadísticas de feeds y métricas de procesamiento
- Plantillas de nombres de archivo personalizables con variables de fecha (
{from_date},{to_date},{date_range},{date},{datetime}) - Permite búsqueda semántica en todo el contenido
API de Servicio MCP (Protocolo de Contexto de Modelo)
RSSidian proporciona un servicio de Protocolo de Contexto de Modelo (MCP) que permite a agentes de IA como Claude interactuar con tu contenido RSS. El servicio MCP expone una API RESTful que permite acceso integral a tu contenido ingerido de RSS.
Iniciar el Servicio MCP
# Start the MCP service on the default port (8080)
rssidian mcp
# Start the MCP service on a custom port
rssidian mcp --port 9000
Endpoints de la API
# Base URL
http://localhost:8080/api/v1
# Standard API Endpoints
GET /search # Natural language search across articles
GET /articles # List all processed articles
GET /articles/:id # Get article details and content
GET /subscriptions # List all subscriptions with mute state
POST /subscriptions/:title/mute # Mute a feed subscription
POST /subscriptions/:title/unmute # Unmute a feed subscription
# MCP-specific Endpoints
GET /mcp # Discovery endpoint with capabilities and endpoints
GET /mcp/subscriptions # List all feed subscriptions
GET /mcp/articles # List articles with advanced filtering
GET /mcp/articles/:id/content # Get full article content
GET /mcp/search # Semantic search with relevance control
GET /mcp/digest # Get digest of high-value articles
GET /mcp/feed-stats # Get feed statistics
POST /mcp/query # Process natural language queries
Configurar Claude Desktop para Usar RSSidian MCP
RSSidian MCP se puede usar con Claude Desktop de dos maneras: modo HTTP o modo STDIO.
Opción 1: Modo STDIO (Recomendado)
El modo STDIO permite que Claude Desktop inicie y se comunique directamente con el servidor MCP de RSSidian, sin necesidad de un servidor HTTP separado en ejecución.
-
Edita el archivo de configuración de Claude Desktop haciendo clic en el icono de Claude en la barra de menú, seleccionando "Configuración" y luego haciendo clic en "Editar archivo de configuración"
-
Añade una nueva entrada a la sección
mcpServersde la configuración JSON:{ "globalShortcut": "Shift+Space", "mcpServers": { "rssidian": { "command": "/path/to/your/python", "args": [ "-m", "rssidian", "mcp", "--stdio" ] } // other MCP servers... } }Reemplaza
/path/to/your/pythoncon la ruta real a tu ejecutable de Python donde está instalado RSSidian. Puedes encontrarlo ejecutandowhich pythonen la terminal donde normalmente ejecutas RSSidian. -
Guarda el archivo de configuración
Opción 2: Modo HTTP
En modo HTTP, necesitas iniciar el servicio MCP de RSSidian por separado y configurar Claude Desktop para conectarse a él.
-
Inicia el servicio MCP de RSSidian manualmente:
rssidian mcp --port 8080 -
Edita el archivo de configuración de Claude Desktop haciendo clic en el icono de Claude en la barra de menú, seleccionando "Configuración" y luego haciendo clic en "Editar archivo de configuración"
-
Añade una nueva entrada a la sección
mcpServersde la configuración JSON:{ "globalShortcut": "Shift+Space", "mcpServers": { "rssidian-http": { "command": "/path/to/your/python", "args": [ "-m", "rssidian", "mcp", "--port", "8080" ] } // other MCP servers... } } -
Guarda el archivo de configuración
-
Al chatear con Claude, ahora puedes hacer preguntas sobre tu contenido RSS como:
- "¿Cuáles son los artículos más recientes sobre IA?"
- "Encuentra artículos sobre blockchain de la última semana"
- "Resume los artículos de mayor calidad de mis feeds de tecnología"
- "¿Cuáles son los temas de tendencia en mis suscripciones?"
Claude usará automáticamente el servicio MCP de RSSidian para acceder a tu contenido RSS y proporcionar respuestas informadas basadas en tus feeds.
Requisitos
- Python 3.9+
- Acceso a la API de OpenRouter
- Archivo OPML con suscripciones RSS
- Bóveda de Obsidian (opcional)
Desarrollo
# Setup development environment
./scripts/setup_dev.sh
# Activate environment
source .venv/bin/activate
Licencia
Este proyecto es de código abierto y está disponible bajo la Licencia MIT.