Presently is an automated tool that transforms web content into professional presentation videos with synchronized narration and background music. Perfect for creating quick, high-quality presentation videos from any web content.
- Web Content Scraping: Extract structured content from any website
- AI-Powered Content Generation: Convert web content into organized presentation slides
- PowerPoint Generation: Create professional PowerPoint presentations automatically
- Text-to-Speech Narration: Generate natural-sounding narration for each slide
- Intelligent Music Selection: Match background music to your presentation content
- Video Production: Combine slides, narration, and music into a professional video
- Python 3.8+: Core programming language
- LibreOffice: For PowerPoint processing (or Microsoft PowerPoint)
- Poppler: For PDF processing (required for PDF-based slide extraction)
- Google API Key: For AI content generation with Google Gemini
Before installing the Python dependencies, make sure you have the following installed:
- Python 3.8+: Download Python
- Git: Download Git (if cloning from repository)
- pip: Should come with Python, but ensure it's updated:
python -m pip install --upgrade pip
- Clone the repository (or download and extract the ZIP file)
git clone https://github.com/saqlain2204/presently.git
cd presently- Create and activate a virtual environment (recommended)
# Create a virtual environment
python -m venv venv
# Activate the virtual environment
# On Windows:
.\venv\Scripts\Activate
# On macOS/Linux:
# source venv/bin/activate- Install Python dependencies
pip install -r requirements.txt- Install LibreOffice
- Windows: Download and install from LibreOffice website
- Make sure LibreOffice is in your system PATH
- Install Poppler
- Windows:
- Download Poppler for Windows
- Extract to a folder (e.g.,
C:\poppler) - Add the
binfolder to your PATH:setx PATH "%PATH%;C:\poppler\bin"
- Set up environment variables
Create a .env file in the project root with your API keys:
GOOGLE_API_KEY=your_google_api_key_here
presently/
│
├── assets/ # Stock resources
│ └── music/ # Background music files
│
├── src/ # Source code
│ ├── main.py # Main application entry point
│ ├── web_scraper.py
│ ├── content_generator.py
│ ├── convert_to_ppt.py
│ ├── convert_to_images.py
│ ├── text_to_audio.py
│ ├── music_selection.py
│ ├── generate_video.py
│ ├── generate_image.py
│ ├── most_similar_image.py
│ └── terminal_utils.py
│
└── temp/ # Temporary working files (created automatically)
├── presentation.md
├── presentation.ppt
├── presentation_video.mp4
├── selected_music.mp3
├── audio/
├── images/
└── slide_images/
Run the main script and follow the prompts:
cd src
python main.pyWhen prompted, enter the URL of the webpage you want to convert into a presentation video.
The final video will be saved to temp/presentation_video.mp4
- Web Scraping: Extract content from the provided URL
- Content Generation: Process and organize the content for presentation
- PowerPoint Creation: Generate slides based on the processed content
- Audio Generation: Create narration for each slide using text-to-speech
- Music Selection: Choose appropriate background music based on content
- Video Generation: Combine slides, narration, and music into the final video
Modify convert_to_ppt.py to change the PowerPoint style, colors, or layout.
Place additional music files in the assets/music folder to expand the selection options.
- Ensure LibreOffice is installed and in your system PATH
- Try manually opening and saving a PowerPoint file to verify installation
- Check that Poppler is properly installed and in your PATH
- For Windows users: Verify the poppler bin directory is correctly added to PATH
- Verify your Google API key is correctly set in the
.envfile - Check for API usage limits or restrictions
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request

