Una herramienta completa para resubir automáticamente tus TikToks a YouTube Shorts e Instagram Reels, manteniendo la calidad original, sin marca de agua y con soporte para las nuevas duraciones extendidas de 2025.
- 🎥 Descarga sin marca de agua: Videos limpios usando yt-dlp optimizado
- 📱 Soporte multiplataforma: YouTube Shorts e Instagram Reels
- 🎬 Calidad preservada: Sin pérdida de calidad, formato MP4 optimizado
- ⏰ Duraciones extendidas 2025: Hasta 3 minutos en ambas plataformas
- 🏷️ Hashtags optimizados: Descripción automática adaptada por plataforma
- 🖼️ Miniatura conservada: Mantiene la miniatura original del video
- 🔄 Procesamiento automático: Subida a múltiples plataformas simultáneamente
- 💻 Interfaz moderna: Web UI responsive y fácil de usar
- 📊 Seguimiento en tiempo real: Progreso detallado del procesamiento
- Creadores de contenido que quieren maximizar su alcance
- Marcas que necesitan distribuir contenido en múltiples plataformas
- Agencias de marketing que gestionan múltiples cuentas
- Influencers que quieren automatizar su workflow de contenido
- Python 3.8 o superior
- FFmpeg (para procesamiento de video)
- Redis (para colas de tareas, opcional)
- YouTube Data API v3: Para subir a YouTube Shorts
- Facebook Graph API: Para subir a Instagram Reels
git clone https://github.com/tu-usuario/tiktok-uploader.git
cd tiktok-uploader
python -m venv venv
# Windows
venv\Scripts\activate
# Linux/macOS
source venv/bin/activate
pip install -r requirements.txt
# Con chocolatey
choco install ffmpeg
# O descargar desde https://ffmpeg.org/download.html
sudo apt update
sudo apt install ffmpeg
# Con Homebrew
brew install ffmpeg
# Copiar archivo de ejemplo
cp .env.example .env
# Editar con tus credenciales
nano .env
python app.py
La aplicación estará disponible en: http://localhost:5000
- Ve a Google Cloud Console
- Crea un nuevo proyecto o selecciona uno existente
- Habilita la YouTube Data API v3
- Crea credenciales (OAuth 2.0)
- Descarga el archivo
credentials.json
- Agrega las credenciales a tu archivo
.env
:
YOUTUBE_CLIENT_ID=tu_client_id_aqui
YOUTUBE_CLIENT_SECRET=tu_client_secret_aqui
YOUTUBE_REFRESH_TOKEN=tu_refresh_token_aqui
- Ve a Facebook for Developers
- Crea una aplicación
- Configura Instagram Basic Display
- Obtén el Access Token y User ID
- Agrega las credenciales a tu archivo
.env
:
INSTAGRAM_ACCESS_TOKEN=tu_access_token_aqui
INSTAGRAM_USER_ID=tu_user_id_aqui
# YouTube API Configuration
YOUTUBE_CLIENT_ID=your_youtube_client_id
YOUTUBE_CLIENT_SECRET=your_youtube_client_secret
YOUTUBE_REFRESH_TOKEN=your_youtube_refresh_token
# Instagram API Configuration
INSTAGRAM_ACCESS_TOKEN=your_instagram_access_token
INSTAGRAM_USER_ID=your_instagram_user_id
# General Configuration
DEBUG=True
SECRET_KEY=your_secret_key_here
MAX_VIDEO_SIZE_MB=500
MAX_VIDEO_DURATION_SECONDS=600
# Proxy Configuration (opcional)
HTTP_PROXY=
HTTPS_PROXY=
# Redis Configuration (para colas)
REDIS_URL=redis://localhost:6379/0
# Telegram Bot (opcional, para notificaciones)
TELEGRAM_BOT_TOKEN=
TELEGRAM_CHAT_ID=
- Abre
http://localhost:5000
en tu navegador - Pega la URL de tu TikTok
- Selecciona las plataformas destino (YouTube Shorts, Instagram Reels)
- Opcionalmente, personaliza la descripción
- Haz clic en "Procesar y Subir"
- Observa el progreso en tiempo real
- ¡Recibe los enlaces de tus videos subidos!
La aplicación también proporciona una API REST para integración:
curl -X POST http://localhost:5000/api/process \
-H "Content-Type: application/json" \
-d '{
"url": "https://www.tiktok.com/@usuario/video/1234567890",
"platforms": ["youtube", "instagram"],
"description": "Mi descripción personalizada"
}'
curl -X POST http://localhost:5000/api/download \
-H "Content-Type: application/json" \
-d '{
"url": "https://www.tiktok.com/@usuario/video/1234567890"
}'
curl http://localhost:5000/api/task/{task_id}
{
"task_id": "uuid-de-la-tarea",
"status": "started",
"message": "Procesamiento iniciado"
}
{
"status": "completed",
"progress": 100,
"message": "Procesamiento completado exitosamente",
"video_info": {
"title": "Título del video",
"creator": "@usuario",
"duration": 45.2,
"width": 1080,
"height": 1920
},
"uploads": {
"youtube": {
"success": true,
"video_id": "abc123",
"video_url": "https://www.youtube.com/watch?v=abc123",
"shorts_url": "https://www.youtube.com/shorts/abc123"
},
"instagram": {
"success": true,
"reel_id": "def456",
"reel_url": "https://www.instagram.com/reel/def456/"
}
}
}
La aplicación utiliza configuraciones optimizadas para cada plataforma:
platform_configs = {
'youtube_shorts': {
'max_duration': 180, # 3 minutos en 2025
'resolution': {'width': 1080, 'height': 1920}, # 9:16
'bitrate': '8000k', # Alta calidad
'fps': 30,
'audio_bitrate': '128k'
},
'instagram_reels': {
'max_duration': 180, # 3 minutos en 2025
'resolution': {'width': 1080, 'height': 1920}, # 9:16
'bitrate': '6000k',
'fps': 30,
'audio_bitrate': '128k'
}
}
Puedes personalizar los hashtags por defecto editando services/metadata_processor.py
:
self.default_hashtags = {
'youtube': ['#Shorts', '#YouTubeShorts', '#Viral', '#Trending'],
'instagram': ['#reels', '#instagram', '#viral', '#fyp', '#parati']
}
# Dockerfile incluido
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "app.py"]
# Construir imagen
docker build -t tiktok-uploader .
# Ejecutar contenedor
docker run -p 5000:5000 -v $(pwd)/.env:/app/.env tiktok-uploader
- Nunca commits credenciales: Usa variables de entorno
- Limita el acceso: Considera autenticación para uso en producción
- Monitorea el uso: Las APIs tienen límites de rate
- Mantén actualizado: Actualiza dependencias regularmente
La aplicación incluye logging detallado:
import logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler('uploader.log'),
logging.StreamHandler()
]
)
pip install -r requirements.txt --upgrade
- Revisa el
CHANGELOG.md
para cambios importantes - Actualiza las configuraciones de API si es necesario
- Prueba en entorno de desarrollo antes de producción
# Instalar FFmpeg
sudo apt install ffmpeg # Linux
brew install ffmpeg # macOS
- Verifica que las credenciales OAuth estén correctas
- Asegúrate de que el refresh token sea válido
- Revisa que la YouTube Data API esté habilitada
- Confirma que el access token sea válido
- Verifica que la aplicación tenga permisos de Instagram
- Revisa el tamaño y formato del video
- Los videos se recortan automáticamente a 3 minutos
- Verifica la configuración de duración máxima
Para habilitar logs detallados:
export DEBUG=True
python app.py
¡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
- Sigue PEP 8 para el código Python
- Agrega tests para nuevas funcionalidades
- Actualiza la documentación
- Prueba en múltiples plataformas
Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para detalles.
- yt-dlp - Para descarga de videos
- FFmpeg - Para procesamiento de video
- Flask - Framework web
- Google APIs - YouTube integration
- Facebook for Developers - Instagram integration
- 📧 Email: soporte@tiktok-uploader.com
- 💬 Discord: Únete a nuestro servidor
- 📖 Wiki: Documentación completa
- 🐛 Reportar bugs: Issues
- Soporte para TikTok Stories
- Integración con Twitter/X
- Programación de subidas
- Dashboard de analytics
- API webhooks
- Procesamiento por lotes
- Integración con Zapier
- App móvil
¿Te gusta el proyecto? ⭐ ¡Danos una estrella en GitHub y compártelo con otros creadores!
Creado con ❤️ para la comunidad de creadores de contenido en 2025