Skip to content

Latest commit

 

History

25 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AutoSlides

AutoSlides is an AI-powered presentation generator that creates customized slide decks from multiple content sources. It uses Google Gemini AI to generate titles, content, images, and tables, with user-controlled source weighting and presentation goals. The system includes a React frontend, FastAPI backend, and n8n workflows for content extraction and export to Google Slides.

Current Direction: The application is evolving towards greater user customization and AI precision. Users can now assign relative weights to sources, specify presentation objectives, and receive detailed usage analytics. Future enhancements will include more export formats, advanced AI features, and improved content processing.

Features

  • Multi-Source Input: Extract and combine content from PDFs, web pages, YouTube videos, and text.
  • AI-Powered Generation: Google Gemini AI creates slide content with text, images, and tables, respecting user-defined source weights and presentation goals.
  • Source Weighting: Adjustable sliders to control the relative contribution of each source (auto-normalized to 100%).
  • Presentation Goals: Text field for users to specify what they expect from the presentation, guiding AI generation.
  • Usage Analytics: Displays percentage contribution of each source in the generated slides.
  • Interactive UI: Loading indicators, source titles generated by AI, and modal views for full content.
  • Web Frontend: React-based interface with bilingual support (English/Spanish).
  • Backend API: FastAPI server for AI processing and slide generation.
  • Customizable Output: Set slide count, templates, and language.
  • Export Options: Generate Google Slides presentations via n8n workflows.

Installation

Note: The application is designed to run on a separate LXC container (Proxmox) with Caddy as reverse proxy. The LXC is on a different device (IP: 192.168.1.92) and cannot be accessed directly from this shell. Updates must be pulled via Git on the LXC.

Backend Setup

  1. Install Python dependencies:
    pip install google-generativeai fastapi uvicorn pydantic
  2. Set environment variables:
    export GOOGLE_AI_API_KEY="your-gemini-api-key"
    export PORT=8000
  3. Run the backend:
    python3 backend.py

n8n Workflows

  1. Ensure n8n is running in a separate container (e.g., at n8n-container-ip:5678).
  2. Import the AutoSlides workflows from the project.
  3. Configure Google Slides API credentials in n8n.

Frontend

  1. Install Node.js and npm.
  2. Navigate to autoslides-frontend directory.
  3. Install dependencies:
    npm install
  4. Build for production:
    npm run build
  5. Serve the build directory with Caddy (configured in LXC).

Updating the LXC Deployment

Since the LXC is on a separate device, updates are done via Git pull on the LXC:

  1. SSH into the LXC: ssh root@192.168.1.92
  2. Pull changes: cd /opt/autoslides && git pull origin main
  3. Rebuild frontend: cd autoslides-frontend && npm run build
  4. Restart backend: pkill -f "python3 backend.py" && python3 backend.py &
  5. Restart Caddy: sudo systemctl restart caddy

Usage

Web Interface

  1. Open the React frontend at http://192.168.1.92 (LXC IP).
  2. Add multiple sources (text, URL, YouTube, PDF) - each gets an AI-generated title.
  3. Adjust source weights using sliders (auto-normalized to 100%).
  4. Specify presentation goal in the textarea.
  5. Set slide count, template, and language.
  6. Click "Generate Slides" - view loading indicators and "I know Kung-Fu" message.
  7. Review generated slides with source usage percentages.

API Usage

# Generate slides with multiple sources, weights, and goal
curl -X POST http://192.168.1.92:8000/generate-slides \
  -H "Content-Type: application/json" \
  -d '{
    "sources": [{"type": "text", "value": "Content 1"}, {"type": "url", "value": "https://example.com"}],
    "weights": [60, 40],
    "presentation_goal": "Educational presentation for students",
    "slide_count": 5,
    "template": "default",
    "language": "english"
  }'

# Generate title for a source
curl -X POST http://192.168.1.92:8000/generate-title \
  -H "Content-Type: application/json" \
  -d '{"content": "Your content here"}'

n8n Workflows

  1. Trigger the main AutoSlides workflow with input data.
  2. Workflows handle content extraction and call the backend API.
  3. Generated slides are exported to Google Slides.

Contributing

Contributions are welcome. Please submit issues or pull requests on the project repository.

License

[Specify license if applicable]

About

n8n workflow to create presentations

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages