This project converts comic chapters into narrated videos using scraping, text-to-speech, and video generation pipelines. It uses a microservice architecture with Redis queues for async job processing.
- Scrape comic chapters and extract text + images
- Generate voiceovers from extracted text
- Stitch images and voice into a video with FFmpeg
- Job queue system using BullMQ + Redis
- Frontend for submitting comic URLs and downloading final videos
- Progress tracking for long-running jobs
Check out a generated sample video here:
Simple web interface to enter comic URLs and generate videos.
Final narrated video created from comic images + voiceover.
-
Backend: Node.js (Express, BullMQ, Redis)
-
Services:
Scrapping-service→ extracts images and chapter texttext-extraction-voice-service→ text-to-speech (Pythonpyttsx3)video-generation-service→ combines assets into final video with FFmpeg
-
Database/Queue: Redis
-
Frontend: HTML, CSS, JavaScript (served from
public/) -
External Tools: FFmpeg
├── Scrapping-service/ # Extracts chapter data
├── text-extraction-voice-service # TTS generation service
├── video-generation-service/ # Video rendering service
├── public/ # Frontend (HTML, CSS, JS)
├── app.js # API Gateway
├── redis.js # Redis connection config
├── .gitignore
├── package.json
└── README.md
git clone https://github.com/AyushSGithub24/WebComic-Narration.git
cd WebComic-NarrationFor all services (root + each microservice):
npm installFor text-to-speech service:
pip install pyttsx3- Linux:
sudo apt install ffmpeg - Mac:
brew install ffmpeg - Windows: Download from ffmpeg.org and add to PATH
docker run --name redis -p 6379:6379 -d redisCreate a .env file in root:
PORT=3000
GEMINI_API_KEY=""
URL="https://manhuatop.org/wp-admin/admin-ajax.php"docker start redisnode app.jsIn separate terminals: Install dependency
cd Scrapping-service && npm i
cd text-extraction-voice-service && npm i
cd video-generation-service && npm i ]Start All services
node ./Scrapping-service/index.js
node ./text-extraction-voice-service/index.js
node ./video-generation-service/index.js- Open
http://localhost:3000 - Enter comic URL / chapter number
- Click Generate Video
- Wait for job completion (status is polled automatically)
- Download / play the generated video
- Job queue: Redis + BullMQ
- API
/api/generate-video→ enqueue job - API
/api/job-status/:id→ check progress - Videos are saved to
output/folder and served via backend
- Temporary images/audio stored locally
- Auto-delete old files (recommended) or clear manually from
/output/
- Authentication (JWT / OAuth)
- WebSocket-based progress updates
- Cloud storage (S3, Cloudinary, Supabase) instead of local
- React frontend for better UX
Developed by AyushSGithub24
