- Python 100%
| systemd | ||
| .env.example | ||
| .gitignore | ||
| bot.py | ||
| LICENSE.txt | ||
| politica-privacidad.md | ||
| README.md | ||
| requirements.txt | ||
Altbot Gemini
Bot de Mastodon para generar propuestas de texto ALT en español usando IA externa.
Qué hace
Altbot responde a menciones en publicaciones con imágenes, GIFs y vídeos, y genera una propuesta de descripción accesible en español.
También puede transcribir de forma aproximada el audio de un vídeo si se le invoca con transcribe o audio.
Cómo funciona
- Recibe menciones en Mastodon
- Detecta imágenes, GIFs o vídeos en la publicación actual o en la publicación padre inmediata
- Pide consentimiento previo antes de enviar archivos a IA externa
- Guarda la decisión del usuario en una base de datos SQLite
- Genera una descripción o transcripción con Gemini
- Responde con una propuesta reutilizable
Importante
Este bot envía archivos a un proveedor externo de IA para generar la descripción. No es un sistema local ni privado por defecto.
Funciones principales
- Soporte para imágenes, GIFs y vídeos
- Modo de transcripción aproximada para vídeos con
transcribeoaudio - Consentimiento previo con respuesta
síono - Almacenamiento local del consentimiento en SQLite
- Comandos de privacidad:
mis_datos,olvidame,privacidad - Detección de duplicados para evitar respuestas repetidas
- Respeto por etiquetas como
#nobot,#noaltboty#noimagebot - Respuesta con la misma visibilidad que la publicación original cuando corresponde
- Uso del archivo adjunto del toot actual o del toot padre inmediato
Requisitos
- Python 3.11 o superior
- Cuenta de Mastodon para el bot
- Token de acceso de Mastodon
- Clave API de Gemini
Variables de entorno
Crea un archivo .env con este contenido:
MASTODON_BASE_URL=https://tu-instancia.example
MASTODON_ACCESS_TOKEN=tu_token
GEMINI_API_KEY=tu_clave
PRIVACY_URL=https://tu-web.example/politica-privacidad
Si no defines PRIVACY_URL, el bot seguirá funcionando, pero el comando privacidad no podrá enlazar una página externa.
Instalación
git clone <repo>
cd altbot-gemini
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Ejecución manual
source venv/bin/activate
python bot.py
Servicio systemd
Puedes usar como referencia el archivo:
systemd/altbot.service.example
Ejemplo:
[Unit]
Description=Altbot Gemini Mastodon Bot
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=elenamusk
WorkingDirectory=/home/elenamusk/altbot-gemini
ExecStart=/home/elenamusk/altbot-gemini/venv/bin/python /home/elenamusk/altbot-gemini/bot.py
Restart=always
RestartSec=5
UMask=0077
NoNewPrivileges=true
PrivateTmp=true
[Install]
WantedBy=multi-user.target
Uso
Descripción de imágenes, GIFs y vídeos
- Menciona al bot en una publicación con imagen, GIF o vídeo.
- O responde con una mención a una publicación cuyo padre inmediato tenga ese archivo adjunto.
- La primera vez, el bot pedirá consentimiento antes de enviar el archivo a IA externa.
- Tras aceptar, vuelve a mencionarlo en la publicación que quieras describir.
Transcripción de audio en vídeo
Menciona al bot con una palabra como:
@altbot transcribe
o
@altbot audio
en una publicación con vídeo o en respuesta directa a una publicación cuyo padre inmediato tenga vídeo.
Comandos
| Comando | Descripción |
|---|---|
ayuda |
Muestra información de uso |
mis_datos |
Consulta tu consentimiento guardado |
olvidame |
Borra tu consentimiento de la base de datos |
privacidad |
Enlaza a la política de privacidad |
transcribe / audio |
Activa el modo transcripción en vídeos |
Privacidad
El bot pide consentimiento antes de procesar archivos y guarda la decisión del usuario en una base de datos local SQLite.
Consulta politica-privacidad.md para más detalles.
Limitaciones
- Las descripciones y transcripciones son automáticas y pueden contener errores
- Conviene revisar el resultado antes de usarlo como ALT definitivo
- El bot depende de un proveedor externo para generar las descripciones
- Los vídeos tienen un límite de tamaño configurado en el código
- El bot solo usa el archivo adjunto del toot actual o del toot padre inmediato
Estado del proyecto
Proyecto funcional en beta pública, con mejoras en curso.
Licencia
Este proyecto se distribuye bajo licencia AGPL-3.0.
Consulta el archivo LICENSE.