Automated AI-Powered News-to-Video Content Creation System
Transform trending news articles into engaging short-form videos and automatically publish them across YouTube, TikTok, and Instagram.
β οΈ Notice: This is proprietary software shared for portfolio/demonstration purposes. Commercial use, copying, or distribution without permission is prohibited. See LICENSE for full terms.
- Overview
- Live Examples
- Features
- Tech Stack
- Architecture
- Requirements
- Installation
- Configuration
- Usage
- Project Structure
- Development
- Contributing
- License
QuickByteFacts is an enterprise-grade Laravel application that automates the entire content creation pipelineβfrom news aggregation to video production and multi-platform distribution. The system uses cutting-edge AI technologies to classify news, generate scripts, create video assets, and intelligently schedule uploads across major social media platforms.
- π Automated News Aggregation: Fetches trending news from multiple sources (NewsAPI, GNews)
- π€ AI-Powered Classification: Uses OpenAI GPT-4 to categorize and filter news content
- π Smart Content Filtering: Vector embeddings with Pinecone to eliminate duplicate content
- βοΈ Script Generation: AI-generated video scripts optimized for short-form content
- π¨ Asset Creation: Automatic generation of visuals and voiceovers for each scene
- π¬ Video Assembly: Professional video composition with transitions, subtitles, and background music
- π Intelligent Scheduling: Optimized posting times based on platform best practices
- π Multi-Platform Upload: Automated uploads to YouTube, TikTok, and Instagram Reels
This project is currently in production and actively generating content! Check out the automated videos created by this system:
- πΊ YouTube Channel - DailyQuickByte: Watch the latest automated news videos
- πΈ Instagram - @dailyquickbyte: Follow for daily automated content posts
These channels are fully automated and showcase the complete pipeline in actionβfrom news fetching to video generation and publishing.
- Multi-source News Fetching: Aggregates news from NewsAPI and GNews with configurable adapters
- AI Classification: Categorizes news articles using OpenAI GPT-4
- Novelty Filtering: Uses Pinecone vector database to prevent duplicate content
- Article Extraction: Intelligent content scraping with Readability parser
- AI Summarization: Automatic article summarization using Hugging Face models
- Batch Script Generation: Efficient OpenAI batch API integration for script creation
- Scene-based Structure: Multi-scene video scripts with hooks, transitions, and metadata
- Visual Asset Generation: AI-powered video generation using Google Cloud Veo
- Voiceover Synthesis: ElevenLabs integration for natural-sounding narration
- Background Music: Intelligent music selection and mixing
- Professional Video Assembly: FFmpeg-based video composition with transitions
- Word-level Subtitles: Dynamic ASS subtitle generation with precise timing
- Audio Mixing: Background music and sound effects integration
- Vertical Format: Optimized for 9:16 aspect ratio (TikTok, Reels, Shorts)
- Platform Integration: OAuth2 authentication for YouTube, TikTok, and Instagram
- Smart Scheduling: Optimal posting times based on platform analytics
- Upload Management: Queue-based upload system with retry logic
- Status Tracking: Real-time monitoring of upload status and responses
- Laravel Horizon: Beautiful queue monitoring dashboard
- Laravel Telescope: Comprehensive debugging and monitoring
- Docker Support: Full containerization with Laravel Sail
- Model Caching: Performance optimization with intelligent caching
- Framework: Laravel 12.x
- Language: PHP 8.2+
- Queue System: Redis + Laravel Horizon
- Database: MySQL 8.0
- Cache: Redis
- OpenAI API: GPT-4 for classification and script generation
- Pinecone: Vector database for embeddings and similarity search
- Hugging Face: Article summarization models
- Google Cloud Veo: AI video generation
- ElevenLabs: Voice synthesis
- PHP-ML: Machine learning utilities
- FFmpeg: Video composition, transitions, and audio mixing
- Browsershot: Web scraping and screenshot capabilities
- Google Cloud Storage: Media asset storage
- Tailwind CSS 4: Modern, utility-first CSS framework
- Vite: Next-generation frontend build tool
- Axios: HTTP client for API requests
- Docker: Containerization with Laravel Sail
- ngrok: Local development tunneling
- Google Cloud Platform: Cloud storage and AI services
News Fetching β Classification β Novelty Filtering β Article Extraction
β Summarization β Script Generation β Asset Generation β Video Assembly
β Upload Scheduling β Multi-Platform Distribution
The application uses Laravel's event system to create a decoupled, scalable pipeline:
- FetchNewsJob β Triggers
NewsFetchedEvent - ClassifyNewsJob β Processes and classifies news
- NewsEmbeddingsJob β Creates vector embeddings
- NewsNoveltyFilterJob β Filters duplicate content
- FetchArticleSummaryJob β Extracts and summarizes articles
- GenerateScriptJob β Creates video scripts via OpenAI batch API
- StoreGeneratedScriptJob β Saves and processes scripts
- GenerateAssetsJob β Creates visuals and voiceovers
- ComposeVideoJob β Assembles final video
- ScheduleVideoUploadJob β Schedules uploads
- UploadVideoJob β Publishes to platforms
- Daily:
FetchNewsJob- Fetch new news articles - Every 5 minutes: Process OpenAI batches, queued assets, and ready scripts
- Every minute: Process scheduled uploads
- PHP 8.2 or higher
- Composer 2.x
- Node.js 18+ and npm
- MySQL 8.0+
- Redis 6.0+
- FFmpeg 5.0+ (with libass support)
- Docker & Docker Compose (optional, for Sail)
Ensure you have PHP 8.2+, Composer, Node.js, and MySQL installed on your system.
git clone git@github.com:AbdAlhadiJ/quick-byte.git
cd QuickByteFacts# Install PHP dependencies
composer install
# Install Node.js dependencies
npm install# Copy environment file
cp .env.example .env
# Generate application key
php artisan key:generateEdit .env file with your configuration (see Configuration section).
# Run migrations
php artisan migrate
# (Optional) Seed database with sample data
php artisan db:seed# Development
npm run dev
# Production
npm run build# Start Horizon dashboard
php artisan horizon
# Or use queue:work in development
php artisan queue:workphp artisan serveThe application will be available at http://localhost:8000
# Start containers
./vendor/bin/sail up -d
# Install dependencies
./vendor/bin/sail composer install
./vendor/bin/sail npm install
# Run migrations
./vendor/bin/sail artisan migrate
# Access application at http://localhostAPP_NAME="QuickByteFacts"
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhostDB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=quickbytefacts
DB_USERNAME=root
DB_PASSWORD=REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379OPENAI_API_KEY=your_openai_api_key
OPENAI_BATCH_SIZE=50
OPENAI_CHAT_ENDPOINT=/v1/chat/completionsPINECONE_API_KEY=your_pinecone_api_key
PINECONE_INDEXHOST=your_index_host# NewsAPI
NEWSAPI_ENABLED=true
NEWSAPI_API_KEY=your_newsapi_key
NEWSAPI_LIMIT=25
# GNews
GNEWS_ENABLED=true
GNEWS_API_KEY=your_gnews_key
GNEWS_LIMIT=25GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
GCP_PROJECT_ID=your_project_id
GCP_LOCATION=us-central1
GCP_RESULTS_BUCKET=your_bucket_name
GCP_MODEL=veo-2.0-generate-001ELEVENLABS_API_KEY=your_elevenlabs_keyYouTube:
YOUTUBE_APPLICATION_CREDENTIALS=/path/to/youtube-credentials.json
YOUTUBE_REFRESH_TOKEN=your_refresh_tokenTikTok:
TIKTOK_CLIENT_KEY=your_client_key
TIKTOK_CLIENT_SECRET=your_client_secret
TIKTOK_REDIRECT_URI=http://localhost/oauth2/tiktok/callbackInstagram:
IG_APP_ID=your_app_id
IG_APP_SECRET=your_app_secret
IG_REDIRECT_URI=http://localhost/oauth2/instagram/callback# Article Scraping
SCRAPDO_API_KEY=your_scrapdo_key
# Summarization
HUGGINGFACE_API_KEY=your_huggingface_key
HUGGINGFACE_MODEL=facebook/bart-large-cnn
# Upload Schedule
UPLOAD_SCHEDULE_MODE=weekly # or 'daily'Access the dashboard at /dashboard after logging in to:
- Monitor upload status
- Retry failed uploads
- Manage scheduled content
- Configure platform settings
Authorize platforms via the integrations page:
- Navigate to
/admin/authorize/{platform}(youtube, tiktok, instagram) - Complete OAuth flow
- Credentials are stored automatically
# Fetch news manually
php artisan queue:work --queue=default
# Process OpenAI batches
php artisan batches:process
# Process queued assets
php artisan assets:process
# Process ready scripts
php artisan scripts:process
# Process scheduled uploads (with force option)
php artisan uploads:query --force- Horizon Dashboard:
/horizon- Queue monitoring - Telescope Dashboard:
/telescope- Application debugging
QuickByteFacts/
βββ app/
β βββ Console/ # Artisan commands
β βββ Contracts/ # Service interfaces
β βββ Enums/ # Enumeration classes
β βββ Events/ # Event classes
β βββ Http/ # Controllers, middleware
β βββ Jobs/ # Queue jobs
β βββ Listeners/ # Event listeners
β βββ Models/ # Eloquent models
β βββ Services/ # Business logic services
β β βββ Embeddings/ # Vector embedding services
β β βββ Media/ # Media processing
β β βββ News/ # News fetching & processing
β β βββ OpenAi/ # OpenAI integration
β β βββ PlatformAuth/ # OAuth implementations
β β βββ Scrappers/ # Web scraping
β β βββ Script/ # Script generation
β β βββ Uploader/ # Platform uploaders
β β βββ VideoAssembler/ # Video composition
β βββ Providers/ # Service providers
βββ config/ # Configuration files
βββ database/
β βββ migrations/ # Database migrations
β βββ seeders/ # Database seeders
βββ resources/
β βββ views/ # Blade templates
β βββ css/ # Stylesheets
β βββ js/ # JavaScript
βββ routes/
β βββ web.php # Web routes
β βββ console.php # Scheduled tasks
βββ tests/ # Test suite
# Using Composer script (runs all services concurrently)
composer dev
# This runs:
# - Laravel development server
# - Queue worker
# - Laravel Pail (logs)
# - Vite dev serverThe project uses Laravel Pint for code formatting:
./vendor/bin/pint# Run tests
php artisan test
# Or with PHPUnit
./vendor/bin/phpunit# Create migration
php artisan make:migration create_example_table
# Run migrations
php artisan migrate
# Rollback
php artisan migrate:rollbackThis repository is a portfolio project. While contributions are appreciated, please note:
- This is proprietary software - all contributions become the property of the copyright holder
- For substantial contributions, please contact me first to discuss terms
- Small bug fixes and improvements are welcome via pull requests
- By contributing, you agree that your contributions may be used under the same proprietary license
For collaboration or contribution inquiries, please contact: abdalhadijouda@gmail.com
Please be respectful and professional in all interactions. Harassment or discriminatory behavior will not be tolerated.
Copyright (c) 2024 AbdAlhadi Jouda. All Rights Reserved.
This software is proprietary and confidential.
This repository is made available for portfolio and demonstration purposes only.
- β Viewing and examining the code for learning purposes
- β Reference in portfolio/showcase contexts
- β Evaluation by potential employers or collaborators
- β Commercial use without explicit permission
- β Copying, modifying, or creating derivative works
- β Redistribution or sublicensing
- β Using this code in competing products
For commercial use or licensing inquiries, please contact: abdalhadijouda@gmail.com
See the LICENSE file for complete terms and conditions.
- Laravel - The PHP Framework for Web Artisans
- OpenAI - AI-powered script generation
- Pinecone - Vector database for embeddings
- FFmpeg - Multimedia framework
- All the amazing open-source contributors
For issues, questions, or contributions, please use the GitHub Issues page.
Made with β€οΈ using Laravel