{"id":31144235,"url":"https://github.com/raupulus/python_social_post_publisher","last_synced_at":"2025-10-03T23:59:10.799Z","repository":{"id":303262440,"uuid":"1014641033","full_name":"raupulus/python_social_post_publisher","owner":"raupulus","description":null,"archived":false,"fork":false,"pushed_at":"2025-07-16T12:27:09.000Z","size":42,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-18T14:57:48.038Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/raupulus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-06T05:48:46.000Z","updated_at":"2025-07-16T12:27:12.000Z","dependencies_parsed_at":"2025-07-06T17:41:37.898Z","dependency_job_id":"d075ecad-b853-4937-bc22-afea78c1ffb3","html_url":"https://github.com/raupulus/python_social_post_publisher","commit_stats":null,"previous_names":["raupulus/python_social_post_publisher"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/raupulus/python_social_post_publisher","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raupulus%2Fpython_social_post_publisher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raupulus%2Fpython_social_post_publisher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raupulus%2Fpython_social_post_publisher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raupulus%2Fpython_social_post_publisher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/raupulus","download_url":"https://codeload.github.com/raupulus/python_social_post_publisher/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raupulus%2Fpython_social_post_publisher/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278245388,"owners_count":25955016,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-03T02:00:06.070Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-09-18T14:37:43.569Z","updated_at":"2025-10-03T23:59:10.768Z","avatar_url":"https://github.com/raupulus.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Python Social Post Publisher\n\nHerramienta para publicar contenido en múltiples redes sociales (Mastodon, \nTwitter, Telegram, Bluesky) con soporte para múltiples perfiles. \n\nEste servicio está diseñado para ser consumido por otras aplicaciones en un \nentorno local, proporcionando un endpoint API simple para publicar contenido en \nvarias redes sociales simultáneamente.\n\nEl proyecto permite configurar diferentes perfiles para diferentes proyectos, \ncada uno con sus propias credenciales y configuraciones para las redes sociales. \nEsto facilita la gestión de múltiples cuentas y la publicación selectiva en \ndiferentes plataformas según las necesidades de cada proyecto.\n\n## Características\n\n- Publicación simultánea en múltiples redes sociales:\n  - Mastodon\n  - Twitter (X)\n  - Telegram\n  - Bluesky\n- Soporte para múltiples perfiles/proyectos\n- Procesamiento de hashtags\n- Soporte para imágenes (hasta 4 por publicación)\n- API REST simple para integración con otras aplicaciones\n- Despliegue fácil con Docker y Docker Compose\n\n## Requisitos\n\n- Python 3.13 o superior\n- Docker y Docker Compose (para despliegue en contenedor)\n- Credenciales para las redes sociales que deseas utilizar\n\n## Instalación\n\n### Usando venv (entorno virtual)\n\n1. Clona el repositorio:\n   ```bash\n   git clone https://github.com/tu-usuario/python_social_post_publisher.git\n   cd python_social_post_publisher\n   ```\n\n2. Crea un entorno virtual:\n   ```bash\n   python -m venv .venv\n   source .venv/bin/activate\n   ```\n\n3. Instala las dependencias:\n   ```bash\n   pip install -r requirements.txt\n   ```\n\n4. Configura tus perfiles en el directorio `data/profiles/`:\n   ```bash\n   mkdir -p data/profiles\n   # Crea un archivo .env para cada proyecto, por ejemplo:\n   # data/profiles/proyecto1.env\n   # data/profiles/proyecto2.env\n   # data/profiles/proyecto3.env\n   # Ten en cuenta que ese nombre lo pasarás luego a la api en el campo \"project\"\n   ```\n\n5. Ejecuta la aplicación:\n   ```bash\n   python app/app.py\n   ```\n\n### Usando Docker\n\n1. Clona el repositorio:\n   ```bash\n   git clone https://github.com/raupulus/python_social_post_publisher.git\n   cd python_social_post_publisher\n   ```\n\n2. Configura tus perfiles en el directorio `data/profiles/`:\n   ```bash\n   mkdir -p data/profiles\n   # Crea un archivo .env para cada proyecto, por ejemplo:\n   # data/profiles/proyecto1.env\n   # data/profiles/proyecto2.env\n   # data/profiles/proyecto3.env\n   # Ten en cuenta que ese nombre lo pasarás luego a la api en el campo \"project\"\n   ```\n\n3. Construye y ejecuta el contenedor:\n   ```bash\n   docker-compose up -d\n   ```\n\n## Uso\n\n### Endpoint API\n\nLa API expone un único endpoint:\n\n- **URL**: `/publish`\n- **Método**: `POST`\n- **Cuerpo de la solicitud (JSON)**:\n  ```json\n  {\n    \"content\": \"Contenido a publicar\",\n    \"title\": \"Título opcional\",\n    \"hashtags\": [\"tag1\", \"tag2\", \"tag3\"],\n    \"project\": \"nombre_del_proyecto\",\n    \"images\": [\"url_imagen1\", \"url_imagen2\", \"data:image/jpeg;base64,base64_encoded_image\"]\n  }\n  ```\n\n- **Respuesta (JSON)**:\n  ```json\n  {\n    \"success\": true,\n    \"results\": [\n      {\n        \"network\": \"Mastodon\",\n        \"success\": true,\n        \"result\": { ... }\n      },\n      {\n        \"network\": \"Twitter\",\n        \"success\": true,\n        \"result\": { ... }\n      }\n    ]\n  }\n  ```\n\n### Ejemplo de uso con curl\n\n```bash\ncurl -X POST http://localhost:8080/publish \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"content\": \"Este es un mensaje de prueba\",\n    \"hashtags\": [\"test\", \"ejemplo\"],\n    \"project\": \"proyecto1\",\n    \"images\": [\"https://ejemplo.com/imagen.jpg\"]\n  }'\n```\n\n## Configuración\n\nCada 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`.\n\nConsulta la documentación específica para cada red social en el directorio `docs/` para obtener instrucciones detalladas sobre cómo configurar cada plataforma.\n\n## Documentación\n\n- [Configuración de Mastodon](docs/mastodon.md)\n- [Configuración de Twitter](docs/twitter.md)\n- [Configuración de Telegram](docs/telegram.md)\n- [Configuración de Bluesky](docs/bluesky.md)\n\n## Licencia\n\nEste proyecto está licenciado bajo la [GNU General Public License v3.0](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraupulus%2Fpython_social_post_publisher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fraupulus%2Fpython_social_post_publisher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraupulus%2Fpython_social_post_publisher/lists"}