Herramienta para publicar contenido en múltiples redes sociales (Mastodon, Twitter, Telegram, Bluesky) con soporte para múltiples perfiles.
Este servicio está diseñado para ser consumido por otras aplicaciones en un entorno local, proporcionando un endpoint API simple para publicar contenido en varias redes sociales simultáneamente.
El proyecto permite configurar diferentes perfiles para diferentes proyectos, cada uno con sus propias credenciales y configuraciones para las redes sociales. Esto facilita la gestión de múltiples cuentas y la publicación selectiva en diferentes plataformas según las necesidades de cada proyecto.
- Publicación simultánea en múltiples redes sociales:
- Mastodon
- Twitter (X)
- Telegram
- Bluesky
- Soporte para múltiples perfiles/proyectos
- Procesamiento de hashtags
- Soporte para imágenes (hasta 4 por publicación)
- API REST simple para integración con otras aplicaciones
- Despliegue fácil con Docker y Docker Compose
- Python 3.13 o superior
- Docker y Docker Compose (para despliegue en contenedor)
- Credenciales para las redes sociales que deseas utilizar
-
Clona el repositorio:
git clone https://github.com/tu-usuario/python_social_post_publisher.git cd python_social_post_publisher -
Crea un entorno virtual:
python -m venv .venv source .venv/bin/activate -
Instala las dependencias:
pip install -r requirements.txt
-
Configura tus perfiles en el directorio
data/profiles/:mkdir -p data/profiles # Crea un archivo .env para cada proyecto, por ejemplo: # data/profiles/proyecto1.env # data/profiles/proyecto2.env # data/profiles/proyecto3.env # Ten en cuenta que ese nombre lo pasarás luego a la api en el campo "project"
-
Ejecuta la aplicación:
python app/app.py
-
Clona el repositorio:
git clone https://github.com/raupulus/python_social_post_publisher.git cd python_social_post_publisher -
Configura tus perfiles en el directorio
data/profiles/:mkdir -p data/profiles # Crea un archivo .env para cada proyecto, por ejemplo: # data/profiles/proyecto1.env # data/profiles/proyecto2.env # data/profiles/proyecto3.env # Ten en cuenta que ese nombre lo pasarás luego a la api en el campo "project"
-
Construye y ejecuta el contenedor:
docker-compose up -d
La API expone un único endpoint:
-
URL:
/publish -
Método:
POST -
Cuerpo de la solicitud (JSON):
{ "content": "Contenido a publicar", "title": "Título opcional", "hashtags": ["tag1", "tag2", "tag3"], "project": "nombre_del_proyecto", "images": ["url_imagen1", "url_imagen2", "data:image/jpeg;base64,base64_encoded_image"] } -
Respuesta (JSON):
{ "success": true, "results": [ { "network": "Mastodon", "success": true, "result": { ... } }, { "network": "Twitter", "success": true, "result": { ... } } ] }
curl -X POST http://localhost:8080/publish \
-H "Content-Type: application/json" \
-d '{
"content": "Este es un mensaje de prueba",
"hashtags": ["test", "ejemplo"],
"project": "proyecto1",
"images": ["https://ejemplo.com/imagen.jpg"]
}'Cada proyecto debe tener su propio archivo .env en el directorio data/profiles/. Por ejemplo, para un proyecto llamado "proyecto1", el archivo sería data/profiles/proyecto1.env.
Consulta la documentación específica para cada red social en el directorio docs/ para obtener instrucciones detalladas sobre cómo configurar cada plataforma.
- Configuración de Mastodon
- Configuración de Twitter
- Configuración de Telegram
- Configuración de Bluesky
Este proyecto está licenciado bajo la GNU General Public License v3.0.