Have you found a recipe on social media and don’t want to write it out yourself? This tool lets you import recipes from videos directly into Mealie.
Tested social media platforms:
- TikTok
- YouTube Shorts
Other sites may work as well, since the tool uses yt-dlp to download videos. If you encounter issues with other
websites, please open an issue.
Note: If you receive a
BAD_RECIPEerror, it may be due to Mealie’s recipe parsing. If you find a better prompt or solution, feel free to open an issue or PR!
- Import posts into Mealie with a link and a click
- iOS Shortcut v0.3 for easy importing
- PWA support, to allow sharing links to the app from mobile devices for quick importing.
- Mealie 1.9.0+ with AI provider configured (docs)
- Docker
Docker Compose
-
Create a
docker-compose.ymlfile based on the docker-compose.example.yml in the repo and fill in the required environment variables. If you prefer having them in a separate file you can create a.envfile based on the example.env. -
Start the service with Docker Compose:
docker-compose up -d
Docker Run
docker run --restart unless-stopped --name social-to-mealie \
-e OPENAI_URL=https://api.openai.com/v1 \
-e OPENAI_API_KEY=sk-... \
-e TRANSCRIPTION_MODEL=whisper-1 \
-e MEALIE_URL=https://mealie.example.com \
-e MEALIE_API_KEY=ey... \
-e MEALIE_GROUP_NAME=home \
-p 4000:3000 \
--security-opt no-new-privileges:true \
ghcr.io/gerardpollorebozado/social-to-mealie:latestLocal Development
-
Clone the repository and install dependencies:
git clone https://github.com/GerardPolloRebozado/social-to-mealie.git cd social-to-mealie npm install -
Create a
.envfile based onexample.envand fill in your values:cp example.env .env
-
Create an empty
cookies.txtfile (required by the volume mount if defined indocker-compose.yml):touch cookies.txt
-
Build and start the container locally:
docker compose build docker compose up -d
The app will be available at
http://localhost:4000. -
To view logs:
docker logs -f social-to-mealie
Tip
In order to be able to install the PWA the app needs to have HTTPS, you can use a reverse proxy like caddy or nginx, but be careful as opening this app to the internet as it will allow anyone to submit recipes to your Mealie instance. I recommend adding a small log in or IP whitelist
| Variable | Required | Default | Description |
|---|---|---|---|
| OPENAI_URL | Yes | https://api.openai.com/v1 |
URL for the OpenAI API or a compatible one |
| OPENAI_API_KEY | Yes | — | API key for OpenAI or a compatible one |
| TRANSCRIPTION_MODEL | No | whisper-1 |
Whisper model to use, required when the local one is not filled |
| LOCAL_TRANSCRIPTION_MODEL | No | — | Model ID from hugging face to use for local audio to text transcription, required when the provider doesn't support transcriptions API |
| TEXT_MODEL | Yes | gpt-5-mini |
Text model to use for recipe generation |
| MEALIE_URL | Yes | http://localhost:9000 |
URL of your Mealie instance |
| EXTERNAL_MEALIE_URL | No | - | Optional, this will be the URL used when showing the result of the recipe, not needed if the MEALIE_URL is already a public accessible URL |
| MEALIE_API_KEY | Yes | — | API key for Mealie |
| MEALIE_GROUP_NAME | No | home |
Mealie group name |
| EXTRA_PROMPT | No | — | Additional instructions for AI, such as language translation |
| YTDLP_VERSION | No | latest |
Version of yt-dlp to use |
| PORT | No | 4000 |
Host port to expose the app on |
| COOKIES | No | — | Cookies string for yt-dlp to access protected content NAME=VALUE |
- OpenAI
- GroqAI
Because theese providers don't support the transcriptions API it requires LOCAL_TRANSCRIPTION_MODEL to be set, recommended model: Xenova/whisper-base, you can use any model that is compatible with the ONNX runtime from hugging face
- llmstudio
- ollama
Some recommended models for local AI are:
qwen3-vl:8bgemma-3-12b
If you want to use another model the model needs to have tools support and vision capabilities. If you want better results use the same models but in larger variants.
It can work with any other provider that is compatible with the OpenAI API, if you find any issues please open an issue.

