Package Exports
- auto-publisher
- auto-publisher/src/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (auto-publisher) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
📝 Auto Publisher - Publicador Automático Multi-Plataforma
Publica automáticamente tus artículos en múltiples plataformas de blogging con una sola acción.
✨ Características
- 🚀 Publicación simultánea en múltiples plataformas
- 📄 Soporte para archivos Markdown con frontmatter
- 📚 Publicación masiva desde carpetas
- 🎨 Interfaz de línea de comandos interactiva
- 🔒 Gestión segura de API keys mediante variables de entorno
📊 Plataformas Soportadas
| Plataforma | API | Plan Gratuito | Límites |
|---|---|---|---|
| DEV.to | ✅ REST | Completo | 10 req/30s |
| Hashnode | ✅ GraphQL | Completo | 20k queries/min |
| WordPress.com | ✅ REST | Sí | Sin límites específicos |
| Ghost | ✅ REST | Self-hosted gratis | Sin límites |
| GitHub Gist | ✅ REST | Completo | 5000 req/hora |
| Blogger | ✅ REST | Completo | 100 req/100s |
| Tumblr | ✅ REST | Completo | 300 req/hora |
⚠️ Plataformas con Limitaciones
- Medium: API sin mantenimiento, prohíbe contenido automatizado
- Substack: No tiene API pública
- HackMD: API limitada, requiere configuración especial
- Stack Overflow: Solo para Q&A, requiere monitoreo activo
- Vercel: Para deploy de sitios estáticos, no blogging directo
🛠️ Instalación
# Clonar el repositorio o crear la carpeta
cd auto-publisher
# Instalar dependencias
npm install
# Copiar archivo de configuración
cp .env.example .env
# Configurar tus API keys en el archivo .env🔑 Configuración
1. Obtener API Keys
DEV.to
- Ve a https://dev.to/settings/extensions
- Genera una nueva API Key
- Copia la key en
DEVTO_API_KEY
Hashnode
- Ve a https://hashnode.com/settings/developer
- Genera un Personal Access Token
- Copia el token en
HASHNODE_TOKEN - Obtén tu Publication ID desde tu dashboard
WordPress.com
- Ve a https://developer.wordpress.com/apps/
- Crea una nueva aplicación
- Configura OAuth2 y obtén tu token
- Agrega
WORDPRESS_TOKENyWORDPRESS_SITE_ID
GitHub Gist
- Ve a https://github.com/settings/tokens
- Genera un Personal Access Token con scope
gist - Copia el token en
GITHUB_GIST_TOKEN
Blogger
- Ve a https://console.cloud.google.com/apis/credentials
- Crea un proyecto y habilita la Blogger API v3
- Genera una API Key o configura OAuth2
- Obtén tu Blog ID desde tu dashboard de Blogger
- Agrega
BLOGGER_API_KEYyBLOGGER_BLOG_ID
Tumblr
- Ve a https://www.tumblr.com/oauth/apps
- Registra una nueva aplicación
- Obtén Consumer Key y Consumer Secret
- Genera Access Token y Access Token Secret
- Agrega todas las credenciales y el nombre de tu blog
2. Archivo .env
# DEV.to
DEVTO_API_KEY=tu_api_key_aqui
# Hashnode
HASHNODE_TOKEN=tu_token_aqui
HASHNODE_PUBLICATION_ID=tu_publication_id
# WordPress
WORDPRESS_TOKEN=tu_token_aqui
WORDPRESS_SITE_ID=tu_site_id
# GitHub Gist
GITHUB_GIST_TOKEN=tu_token_aqui
# Ghost (opcional)
GHOST_URL=https://tu-sitio-ghost.com
GHOST_ADMIN_KEY=tu_admin_key
# Blogger
BLOGGER_API_KEY=tu_api_key_aqui
BLOGGER_BLOG_ID=tu_blog_id_aqui
# Tumblr
TUMBLR_CONSUMER_KEY=tu_consumer_key
TUMBLR_CONSUMER_SECRET=tu_consumer_secret
TUMBLR_TOKEN=tu_token
TUMBLR_TOKEN_SECRET=tu_token_secret
TUMBLR_BLOG_NAME=tu-blog-name🚀 Uso
Ejecutar la aplicación
npm run devOpciones del menú
- 📄 Publicar nuevo artículo: Crea y publica un artículo desde cero
- 📁 Publicar desde archivo Markdown: Publica un archivo .md existente
- 📚 Publicación masiva: Publica todos los archivos .md de una carpeta
Formato de archivos Markdown
Con frontmatter (recomendado)
---
title: Mi Artículo Increíble
description: Una descripción breve del artículo
tags: javascript, nodejs, api
published: true
---
# Contenido del artículo
Tu contenido aquí...Sin frontmatter
# Mi Artículo Increíble
Tu contenido aquí...📁 Estructura del Proyecto
auto-publisher/
├── src/
│ ├── config/
│ │ └── platforms.js # Configuración de plataformas
│ ├── publishers/
│ │ ├── devto.js # Publisher para DEV.to
│ │ ├── hashnode.js # Publisher para Hashnode
│ │ ├── wordpress.js # Publisher para WordPress
│ │ ├── github-gist.js # Publisher para GitHub Gist
│ │ ├── blogger.js # Publisher para Blogger
│ │ ├── tumblr.js # Publisher para Tumblr
│ │ └── index.js # Orquestador de publishers
│ ├── cli.js # Interfaz de línea de comandos
│ └── index.js # Punto de entrada
├── .env.example # Plantilla de configuración
├── package.json # Dependencias y scripts
└── README.md # Este archivo🤝 Contribuir
Las contribuciones son bienvenidas. Por favor:
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
📝 Notas Importantes
- Rate Limiting: Respeta los límites de cada plataforma
- Contenido: Asegúrate de que tu contenido cumple con las políticas de cada plataforma
- Autenticación: Mantén tus API keys seguras y nunca las subas a repositorios públicos
- Markdown: El contenido debe estar en formato Markdown
🐛 Solución de Problemas
Las plataformas no aparecen disponibles
- Verifica que hayas configurado las API keys en el archivo
.env - Asegúrate de que el archivo
.envesté en la raíz del proyecto
Error de autenticación
- Verifica que tus API keys sean válidas
- Revisa que tengas los permisos necesarios en cada plataforma
Error al publicar
- Verifica los límites de rate limiting
- Asegúrate de que el formato del contenido sea válido
- Revisa los logs de error para más detalles
📄 Licencia
MIT
🙏 Agradecimientos
Creado para facilitar la publicación de contenido técnico en múltiples plataformas de manera eficiente.