Claves de API

Richfolio usa hasta 5 servicios externos, todos con planes gratuitos generosos. Solo Resend y un correo destinatario son requeridos — todo lo demás es opcional.

Agrega cada clave como Secret del repositorio: Settings → Secrets and variables → Actions → pestaña Secrets. Agrega RECIPIENT_EMAIL como Variable (más fácil de ver/editar).

GitHub Actions Secrets


Resend (correo) — Requerido

Resend entrega los reportes de correo HTML.

  1. Ve a resend.com y regístrate
  2. Navega a API Keys en el dashboard
  3. Haz clic en Create API Key, ponle un nombre y copia la clave
  4. Agrégala como GitHub Secret — nombre: RESEND_API_KEY, valor: la clave que acabas de copiar

Plan gratuito: 3,000 correos/mes. Envía desde onboarding@resend.dev por defecto. Solo puede enviar a tu correo de propietario de cuenta a menos que verifiques un dominio personalizado (Dashboard → Domains → Add Domain → agregar registros DNS).


Correo destinatario — Requerido

Agrégalo como Variable de GitHub (no Secret): nombre: RECIPIENT_EMAIL, valor: tu dirección de correo.

Debe coincidir con el correo de tu cuenta Resend a menos que hayas verificado un dominio personalizado.


NewsAPI (headlines) — Opcional

Provee los top headlines por ticker para el resumen diario.

  1. Ve a newsapi.org y regístrate
  2. Tu clave API se muestra en el dashboard inmediatamente
  3. Agrégala como GitHub Secret — nombre: NEWS_API_KEY, valor: la clave del dashboard

Plan gratuito: 100 requests/día. Richfolio usa ~4 requests por corrida vía batching. Headlines solo de las últimas 24 horas. Si no está configurada, el resumen corre sin noticias.


Proveedores de IA — al menos uno requerido para recomendaciones con IA

Richfolio soporta tres proveedores de IA: Google Gemini, Anthropic Claude y Mistral. Configura al menos uno para obtener recomendaciones con IA. Configura dos o más para correrlos en paralelo — los scores se promedian y se muestra un desglose por IA junto a cada recomendación. Si ninguno está configurado, Richfolio cae a recomendaciones basadas en brechas (sin IA).

Modo Configuración Salida
Sin IA Ninguna clave configurada Solo recomendaciones basadas en brechas
IA única Una clave configurada Idéntico a hoy — un solo conjunto de acción + confianza por ticker
Multi-IA Dos o más claves configuradas Acción de consenso por ticker + confianza promediada; desglose por IA debajo de cada recomendación; STRONG BUY limitado por distancia del desacuerdo

Google Gemini — Opcional

Impulsa las recomendaciones de compra con IA con Gemini 2.5 Flash.

  1. Ve a aistudio.google.com/apikey
  2. Haz clic en Create API Key, selecciona un proyecto de Google Cloud (o crea uno)
  3. Copia la clave y agrégala como GitHub Secret — nombre: GEMINI_API_KEY, valor: la clave que acabas de copiar

Plan gratuito: a partir de agosto de 2026, un 429 real para gemini-2.5-flash reportó una cuota de ~20 requests/día (documentado aquí anteriormente como 250/día — Google cambia estos límites sin previo aviso, así que trata aistudio.google.com/rate-limit como la fuente canónica). Richfolio usa 2 requests por corrida (Stage 1 Observe + Stage 2 Decide), más 1 por ticker STRONG BUY para análisis detallado, más 1 para el filtro diario de relevancia de noticias. A lo largo del horario completo de 6 corridas diarias (1 diaria + 5 intradía) eso son 13+ requests en un día tranquilo, así que Gemini a menudo agotará su cuota y quedará fuera de corridas posteriores — el resumen igual se envía, con un badge ⚠ n/n AI marcando al proveedor degradado. Las claves nuevas pueden tardar unos minutos en activar su cuota (podrías ver errores 429 inicialmente).

Las claves recién creadas no pueden usar gemini-2.5-flash. Google retira modelos primero para las claves de API nuevas: una clave creada en agosto de 2026 devuelve 404 ... no longer available to new users, mientras que una clave antigua con el mismo modelo sigue funcionando. Define la variable de entorno GEMINI_MODEL con un modelo actual, como gemini-flash-latest, un alias que siempre apunta al Flash más reciente. El valor por defecto se deja en gemini-2.5-flash para no afectar a las claves existentes. El workflow de cripto ya lo hace.

Una segunda clave para el calendario de cripto: si usas watchingCrypto, crea una clave de Gemini aparte y añádela como GEMINI_API_KEY_CRYPTO. El workflow de cripto se ejecuta 8 veces al día con 2 peticiones cada vez — 16 diarias por sí solo — así que compartir una clave con el calendario de acciones agotaría ambas antes de media tarde. El workflow la mapea a GEMINI_API_KEY a nivel de step, así que el código no nota diferencia. Además fija AI_DETAILED_PROVIDER=mistral para que la llamada de análisis detallado por cada STRONG BUY no consuma el margen restante. Si Gemini sigue agotándose con frecuencia, amplía el cron de crypto-monitor.yml de 0 */3 * * * a 0 */4 * * * (6 ejecuciones = 12 peticiones).

Una nota sobre los niveles de modelo de Gemini

La página de precios de Google indica que Gemini 2.5 Pro es “Free of charge” tanto para tokens de entrada como de salida. En la práctica, sin embargo, los requests Pro del plan gratuito frecuentemente chocan con errores 429 RESOURCE_EXHAUSTED — incluso con uso mínimo. Google no publica los límites reales de RPD (requests por día) para el plan gratuito; fuentes de terceros sugieren que Pro puede estar limitado a ~100 RPD, pero el número real parece variar por cuenta y no está garantizado.

Richfolio usa Gemini 2.5 Flash por defecto porque Flash tiene una cuota de plan gratuito más generosa y confiable. La diferencia de calidad para texto de análisis financiero es despreciable.


Anthropic Claude — Opcional

Impulsa las recomendaciones de compra con IA usando Claude (Sonnet 4.6 por defecto). Hay dos formas de autenticarse, y Richfolio usa la que hayas configurado.

Opción 1 — Suscripción Claude Pro/Max (sin costo por token)

Si ya pagas por Claude Pro o Max, Richfolio puede correr con la asignación de tu suscripción existente en lugar de comprar créditos de API.

  1. Instala Claude Code e inicia sesión con la cuenta que tiene tu suscripción
  2. Corre claude setup-token localmente y copia el token que imprime
  3. Agrégalo como GitHub Secret — nombre: CLAUDE_CODE_OAUTH_TOKEN, valor: el token

Deja ANTHROPIC_API_KEY sin configurar cuando uses esto. Dentro de Claude Code, una clave de API tiene prioridad sobre el token de suscripción, así que configurar ambas facturaría silenciosamente a tu cuenta de API — justo lo que esta opción existe para evitar. Richfolio prefiere el token de suscripción y elimina la clave de API del subproceso, pero la configuración más limpia es tener solo uno de los dos.

Vigencia: aproximadamente un año, sin auto-renovación. A diferencia del token de Threads, no hay un workflow de refresco — vuelve a correr claude setup-token cada año. Cuando expira, Claude queda fuera de la corrida. En una configuración multi-proveedor (Claude junto con Gemini y/o Mistral), el/los proveedor(es) sobreviviente(s) continúan y el resumen se marca como ⚠ n/n AI en lugar de fallar — pero ese badge solo aparece cuando hay 2+ proveedores configurados. Si Claude es tu único proveedor, no hay sobreviviente al cual asignarle un badge: el resumen cae silenciosamente a recomendaciones basadas en brechas en su lugar.

Opción 2 — Clave de API (pago por uso)

  1. Ve a console.anthropic.com y regístrate
  2. Navega a API KeysCreate Key, ponle un nombre y copia la clave
  3. Agrégala como GitHub Secret — nombre: ANTHROPIC_API_KEY, valor: la clave que acabas de copiar

Precios: Anthropic no tiene un plan gratuito permanente como Gemini, pero las cuentas nuevas reciben un pequeño crédito inicial y el uso de Sonnet para la carga de Richfolio suele costar centavos por día. Para minimizar el costo, configura CLAUDE_MODEL=claude-haiku-4-5-20251001 (el nivel Haiku es significativamente más barato y maneja esta carga muy bien).


Mistral — Opcional

Genera las recomendaciones de compra con IA usando Mistral Large (mistral-large-latest por defecto).

  1. Ve a console.mistral.ai y regístrate
  2. Navega a API KeysCreate new key y copia la clave
  3. Agrégala como GitHub Secret — nombre: MISTRAL_API_KEY, valor: la clave que acabas de copiar

Plan gratuito: el nivel Experiment es gratuito y permanente — alrededor de 1.000 millones de tokens al mes, frente a los ~7 millones que consume Richfolio. Está limitado por tasa de peticiones, no por créditos, así que si lo fuerzas verás errores 429 (no fallos de facturación) y esos se reintentan automáticamente. Configura MISTRAL_MODEL=mistral-medium-latest para tener más margen y corridas más rápidas a cambio de algo de calidad.

Mistral funciona bien como segundo proveedor precisamente porque es un linaje de modelos independiente de Gemini: un segundo modelo solo aporta información cuando su desacuerdo refleja los datos y no la debilidad del modelo.


Modo multi-IA

Si dos o más de GEMINI_API_KEY, Claude (CLAUDE_CODE_OAUTH_TOKEN o ANTHROPIC_API_KEY) y MISTRAL_API_KEY están configurados, Richfolio corre esos proveedores concurrentemente en cada análisis y agrega los resultados:

  • Acción de consenso por ticker mediante voto mayoritario (con desempate por suma de confianza)
  • Confianza promediada mostrada de forma prominente; scores por IA mostrados debajo
  • STRONG BUY limitado por distancia del desacuerdo — un STRONG BUY sobrevive mientras todos los disidentes estén a un peldaño de distancia (un BUY disidente coincide en la dirección), y se limita a BUY en cuanto uno queda más lejos (HOLD/WAIT). SB + SB + BUY se mantiene; SB + SB + HOLD se limita
  • Etiqueta de acuerdo (unánime / mayoría / dividido) mostrada como badge junto a la acción

La acción agregada es un resumen, no una compuerta. La acción, la confianza y el razonamiento de cada proveedor se muestran justo debajo, y cualquier ticker que un proveedor haya llamado STRONG BUY conserva su página de análisis detallado, su enlace “More Details”, su precio límite y su línea de técnicos — limitado o no. Ves los votos y decides.

Para exigir unanimidad en su lugar — que cualquier desacuerdo baje STRONG BUY a BUY — configura "ai": { "strongBuyRequiresAllProviders": true } en config.json.

Si un proveedor falla a mitad de corrida (rate limit, cuota agotada, error de red), los demás continúan sin él. Esa corrida queda marcada como degradada: cada recomendación lleva un badge del tipo ⚠ 1/2 AI en el correo (una etiqueta en Telegram), porque el voto de un único proveedor no debería leerse como uno verificado de forma cruzada. La acción en sí se deja intacta por defecto — un proveedor que nunca respondió no es un disidente a ninguna distancia — salvo que strongBuyRequiresAllProviders esté activo, que también limita un STRONG BUY degradado. Esto no aplica cuando solo hay un proveedor configurado: esa configuración nunca prometió una comparación.

Elegir qué proveedor genera la página de análisis detallado de STRONG BUY

Cuando hay varios proveedores activos, la página de análisis por STRONG BUY (el enlace “More Details”) es generada por un solo proveedor — por defecto el primero disponible en orden de registro (Gemini, luego Claude, luego Mistral). Sobrescribe con:

Variable de entorno Valor Efecto
AI_DETAILED_PROVIDER gemini Forzar Gemini para análisis detallado (debe tener GEMINI_API_KEY configurada)
AI_DETAILED_PROVIDER claude Forzar Claude para análisis detallado (debe tener CLAUDE_CODE_OAUTH_TOKEN o ANTHROPIC_API_KEY configurada)
AI_DETAILED_PROVIDER mistral Forzar Mistral para análisis detallado (debe tener MISTRAL_API_KEY configurada)
MISTRAL_MODEL mistral-medium-latest Modelo de Mistral más barato/rápido (por defecto: mistral-large-latest)
CLAUDE_MODEL p. ej. claude-haiku-4-5-20251001 Sobrescribir el modelo de Claude (por defecto: claude-sonnet-4-6)

Un AI_DETAILED_PROVIDER que nombre un proveedor sin clave configurada (o un nombre desconocido) se registra en el log y se ignora, volviendo al orden de registro — fijar un proveedor sin API key haría fallar todos los tickers.


Bot de Telegram — Opcional

Entrega resúmenes condensados a tu cuenta de Telegram.

Crear el bot

  1. Abre Telegram y busca @BotFather
  2. Envía /newbot
  3. Elige un nombre (p. ej., “Richfolio Brief”) y un username (debe terminar en bot, p. ej., richfolio_brief_bot)
  4. BotFather responde con tu token de bot — cópialo

Obtener tu chat ID

  1. Busca @userinfobot en Telegram e inícialo
  2. Te responde con tu ID numérico de usuario — este es tu chat ID

Importante: Envía cualquier mensaje a tu nuevo bot (p. ej., “hi”) antes de correr Richfolio — esto es necesario antes de que el bot pueda enviarte mensajes.

Agrega ambos como GitHub Secrets:

  • Nombre: TELEGRAM_BOT_TOKEN, valor: el token de BotFather
  • Nombre: TELEGRAM_CHAT_ID, valor: tu ID numérico de usuario

Notas: Si no están configurados, el resumen salta Telegram. Los mensajes son resúmenes condensados (no HTML completo). Límite de 4,096 caracteres por mensaje — las noticias se truncan si es necesario.


Publicación en redes sociales — Opcional

Richfolio puede publicar señales de compra genéricas en cuentas públicas de X, Facebook, Threads y LinkedIn. Cada plataforma es opcional y permanece desactivada hasta que se configure. Secrets requeridos por plataforma:

  • Facebook: FACEBOOK_PAGE_ID, FACEBOOK_PAGE_TOKEN
  • Threads: THREADS_USER_ID, THREADS_ACCESS_TOKEN (+ opcional THREADS_TOKEN_PAT para refrescar automáticamente el token de ~60 días)
  • LinkedIn: LINKEDIN_ACCESS_TOKEN, LINKEDIN_ORG_URN
  • X/Twitter: X_API_KEY, X_API_SECRET, X_ACCESS_TOKEN, X_ACCESS_TOKEN_SECRET

Notas: Las publicaciones son genéricas — no se divulgan tenencias ni asignaciones. Si no está configurada, la publicación en redes sociales se omite. Ver Publicación en redes sociales para la configuración paso a paso de cada plataforma.


Resumen

Clave Requerido Servicio
RESEND_API_KEY Entrega de correo
RECIPIENT_EMAIL Tu dirección de correo
NEWS_API_KEY No Headlines de noticias
GEMINI_API_KEY No Proveedor de IA (Google Gemini)
GEMINI_API_KEY_CRYPTO No Segunda clave de Gemini, usada solo por el workflow de cripto para que su cadencia de 8×/día tenga su propia cuota
CLAUDE_CODE_OAUTH_TOKEN No Proveedor de IA (Anthropic Claude vía suscripción Pro/Max)
ANTHROPIC_API_KEY No Proveedor de IA (Anthropic Claude vía clave de API de pago por uso)
MISTRAL_API_KEY No Proveedor de IA (Mistral — nivel Experiment gratuito)
TELEGRAM_BOT_TOKEN No Entrega Telegram
TELEGRAM_CHAT_ID No Entrega Telegram
FACEBOOK_PAGE_ID / FACEBOOK_PAGE_TOKEN No Publicación en Página de Facebook
THREADS_USER_ID / THREADS_ACCESS_TOKEN No Publicación en Threads
THREADS_TOKEN_PAT No Refrescar automáticamente el token de Threads (PAT con escritura de Secrets)
LINKEDIN_ACCESS_TOKEN / LINKEDIN_ORG_URN No Publicación en Página de LinkedIn
X_API_KEY / X_API_SECRET / X_ACCESS_TOKEN / X_ACCESS_TOKEN_SECRET No Publicación en X/Twitter
CLAUDE_MODEL No Sobrescribir el modelo de Claude (por defecto: claude-sonnet-4-6)
MISTRAL_MODEL No Sobrescribir el modelo de Mistral (por defecto: mistral-large-latest)
AI_DETAILED_PROVIDER No Forzar gemini, claude o mistral para la página de análisis de STRONG BUY

Richfolio — free, open-source portfolio monitoring. · Privacy Policy

This site uses Just the Docs, a documentation theme for Jekyll.