Extract recipes from social media videos (TikTok, YouTube, Instagram, etc.) and automatically import them into your self-hosted recipe manager.
Social Recipes is a Python application that:
- Downloads videos from TikTok, YouTube, Instagram, and other platforms using
yt-dlp - Transcribes audio using Whisper AI (via
faster-whisper) - Extracts on-screen text (ingredients, instructions) using vision-capable LLMs
- Generates structured recipes using AI (OpenAI GPT or Google Gemini)
- Uploads to recipe managers - supports Tandoor and Mealie
- 🎥 Multi-platform video support (TikTok, YouTube, Instagram, etc.)
- 🎙️ Audio transcription with language detection
- 👁️ Visual text extraction from video frames
- 🤖 AI-powered recipe generation with structured ingredients
- 🍽️ Automatic nutrition and serving size estimation
- 🖼️ Dish image extraction with manual selection option
- 🌐 Web UI with real-time progress updates
- 🔐 User authentication and settings management
- 🐳 Docker support for easy deployment
- 📱 PWA Support - Install as app on mobile, share URLs directly from Android/iOS
- Python 3.11+
- FFmpeg (for video/audio processing)
- API key for OpenAI or Google Gemini
- Self-hosted Tandoor or Mealie instance (optional)
Option 1: Pull from Docker Hub (Easiest)
docker run -d \
--name social-recipes \
-p 5006:5006 \
-e FLASK_SECRET_KEY="your-secure-secret-key" \
-v social-recipes-data:/app/data \
pickeld/social_recipes:latestAccess the web UI at http://localhost:5006
Option 2: Using Docker Compose
Create a docker-compose.yml file:
version: "3.8"
services:
social-recipes:
image: pickeld/social_recipes:latest
container_name: social-recipes
restart: unless-stopped
ports:
- "5006:5006"
environment:
- FLASK_SECRET_KEY=your-secure-secret-key
volumes:
- social-recipes-data:/app/data
volumes:
social-recipes-data:Then run:
docker-compose up -dAccess the web UI at http://localhost:5006
-
Clone the repository:
git clone https://github.com/yourusername/social_recipes.git cd social_recipes -
Install system dependencies:
# macOS brew install ffmpeg # Ubuntu/Debian sudo apt-get install ffmpeg
-
Create a virtual environment and install Python dependencies:
python3 -m venv venv source venv/bin/activate pip install -r requirements.txt -
Run the application:
python ui/app.py
-
Access the web UI at
http://localhost:5006
All configuration is managed through the web UI settings page (/settings). On first run, use the default credentials:
- Username:
admin - Password:
admin123
⚠️ Important: Change the default password immediately after first login!
| Setting | Description |
|---|---|
| LLM Provider | Choose between OpenAI or Google Gemini |
| OpenAI API Key | Your OpenAI API key (required if using OpenAI) |
| OpenAI Model | Model to use (default: gpt-5-mini-2025-08-07) |
| Gemini API Key | Your Google Gemini API key (required if using Gemini) |
| Gemini Model | Model to use (default: gemini-2.0-flash) |
| Recipe Language | Target language for recipe output (e.g., hebrew, english) |
| Target Language Code | ISO language code for transcription (e.g., he, en) |
| Whisper Model | Whisper model size (tiny, small, medium, large) |
| Output Target | Recipe manager: tandoor or mealie |
| Tandoor Host | URL of your Tandoor instance |
| Tandoor API Key | API token from Tandoor |
| Mealie Host | URL of your Mealie instance |
| Mealie API Key | API token from Mealie |
| Confirm Before Upload | Show recipe preview before uploading |
- Navigate to
http://localhost:5006 - Log in with your credentials
- Paste a video URL (TikTok, YouTube, Instagram, etc.)
- Click "Extract Recipe"
- Watch the real-time progress as the video is processed
- If "Confirm Before Upload" is enabled, review and optionally edit the recipe
- The recipe is automatically uploaded to your configured recipe manager
Social Recipes supports PWA (Progressive Web App) installation, allowing you to share video links directly from your phone:
- Open
https://your-server:5006in Chrome - Tap the menu (⋮) → "Add to Home screen"
- Now when sharing any video link, choose "Social Recipes" from the share sheet
- Open
https://your-server:5006in Safari - Tap the Share button → "Add to Home Screen"
- Open the app from your home screen
- Share video links from TikTok/Instagram/YouTube using the Share button → "Social Recipes"
Note: PWA features require HTTPS in production. For local testing,
localhostworks without HTTPS.
For testing or batch processing, you can use the CLI:
# Basic usage
python main.py "https://www.tiktok.com/@user/video/1234567890"
# Skip upload (just generate recipe JSON)
python main.py --no-upload "https://www.youtube.com/watch?v=VIDEO_ID"social_recipes/
├── main.py # CLI entry point
├── chef.py # AI recipe generation
├── config.py # Configuration management
├── video_downloader.py # Video downloading (yt-dlp)
├── transcriber.py # Audio transcription (Whisper)
├── image_extractor.py # Dish image extraction
├── mealie.py # Mealie API integration
├── tandoor.py # Tandoor API integration
├── recipe_exporter.py # Recipe export utilities
├── helpers.py # Utility functions and prompts
├── llm_providers/ # LLM provider implementations
│ ├── base.py
│ ├── openai.py
│ └── gemini.py
├── ui/ # Flask web UI
│ ├── app.py # Flask application
│ ├── database.py # SQLite database management
│ ├── templates/ # HTML templates
│ └── static/ # CSS and JavaScript
├── Dockerfile
├── docker-compose.yml
└── requirements.txt
The official image is available on Docker Hub: pickeld/social_recipes
# Pull the latest image
docker pull pickeld/social_recipes:latest
# Or pull a specific version
docker pull pickeld/social_recipes:v1.0.0| Variable | Description | Default |
|---|---|---|
HOST |
Host to bind to | 0.0.0.0 |
PORT |
Port to listen on | 5006 |
FLASK_SECRET_KEY |
Secret key for session cookies | Auto-generated |
FLASK_DEBUG |
Enable debug mode | false |
version: "3.8"
services:
social-recipes:
image: pickeld/social_recipes:latest
container_name: social-recipes
restart: unless-stopped
ports:
- "5006:5006"
environment:
- HOST=0.0.0.0
- PORT=5006
- FLASK_SECRET_KEY=your-secure-secret-key
volumes:
- social-recipes-data:/app/data
volumes:
social-recipes-data:If you prefer to build the image yourself:
git clone https://github.com/pickeld/social_recipes.git
cd social_recipes
docker build -t social-recipes .
docker run -p 5006:5006 -e FLASK_SECRET_KEY="your-secret" social-recipesSocial Recipes uses yt-dlp for video downloading, which supports:
- TikTok
- YouTube
- Instagram Reels
- Facebook Videos
- Twitter/X Videos
- And many more
MIT License - see LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.