Why I automated social media posts
For one client (Luigi's, an Italian restaurant at Helsinki Airport), weekly social media posting took roughly 2 hours:
- Browse the image library and pick photos (15 min)
- Write English posts (30 min)
- Resize images for Instagram (15 min)
- Log into Buffer and create drafts (20 min)
- Double-check hashtags, times, both locations (10 min)
This repeated every single week. I decided to automate the entire chain.
The architecture
Here's the pipeline I built:
Nextcloud (images) → Ollama/qwen3-vl (GPU vision) → DeepSeek V4 Pro (text) → Buffer (publishing)
1. Images in Nextcloud
Customer photos sync automatically to Nextcloud. The Hermes agent reads the folder contents via WebDAV.
2. Local GPU vision
A Qwen3-VL model (8.8B parameters, Q8_0 quantization) analyzes images locally on an RTX 4070 Ti SUPER GPU. Each image takes ~15 seconds. The model correctly identifies food, mood, colors, and details, even from Finnish-language advertising images.
3. Text generation
DeepSeek V4 Pro writes a complete social media post from the vision output. The text follows the brand's style (in Luigi's case: casual, energetic, English). Posts are 100-130 words, include both restaurant locations, opening hours, and hashtags.
4. Buffer drafts
Hermes creates a Nextcloud public share link for the image and sends it with the text to Buffer's GraphQL API. Both a Facebook draft (text only) and an Instagram draft (text + image) are created automatically. Posts are scheduled Monday through Friday at different times.
5. Reporting
Once complete, Hermes sends a report to Discord: how many posts created, for which days, and a link to Buffer. If anything fails, you get an immediate notification.
The entire pipeline runs as a cron job every Monday at 9:00 AM.
Cost comparison
The actual cost of creating one social media post with different methods:
| Method | Vision | Text | Per Post | Weekly (5 posts) |
|---|---|---|---|---|
| Local AI | Free (own GPU) | DeepSeek API ~$0.001 | ~$0.001 | ~$0.005 |
| Gemini API | ~$0.002 (Flash 2.5) | DeepSeek API ~$0.001 | ~$0.003 | ~$0.015 |
| Fully Manual | $0 | $0 | ~24 min work | ~2 h work |
Local image analysis has no API charge. Gemini Flash is a fallback if you don't have a GPU. At the table's estimated rate, it costs $0.015/week, or $0.78/year.
DeepSeek V4 Pro's API is so affordable ($0.14/million tokens) that I estimate the text cost for five posts at about $0.005.
Build your own
You'll need:
- Hermes agent installed on a server (Linux, running 24/7)
- Ollama + a quantized vision model (qwen3-vl:8b)
- GPU with at least 10 GB VRAM, or a Gemini API key
- Buffer account (free tier works for 3 channels)
- Nextcloud or another image library
Option 1: With a local GPU
## 1. Install Ollama
curl -fsSL https://ollama.com/install.sh | sh
## 2. Pull the vision model (9.8 GB)
ollama pull qwen3-vl:8b-instruct-q8_0
## 3. Expose Ollama to the network (if Hermes is on a different machine)
## /etc/systemd/system/ollama.service:
Environment="OLLAMA_HOST=0.0.0.0:11434"
Option 2: With Gemini API (no GPU required)
## Hermes config.yaml
auxiliary:
vision:
provider: google
model: google/gemini-2.5-flash
Gemini 2.5 Flash costs $0.02/image (1500px). At that rate, five images per week cost $0.10.
Creating the Cron Job in Hermes:
Hermes's cron system triggers the automation every Monday at 9 AM. The prompt defines the entire workflow: where to fetch images, how vision analysis works, what style to use for posts, and where to send them. The result is five social media drafts for Facebook and Instagram. A person still needs to review them.
What I learned
Building the pipeline took about an hour. The cost and quality of local AI surprised me. In my tests, Qwen3-VL's 8.8B parameter model analysed food photos about as well as the commercial APIs. Image analysis has no separate API charge.
Many small business owners pay $20-50/month for social media tools, when the same work can be done with open-source tools and a single API key. I estimate API costs for this system at under $1/year and time savings at 100 hours. This estimate is not a calculation of total running costs.
Qwen3-VL read Finnish-language offer texts from advertising images without issues.
Next, video and multilingual posts
Automating image screening, text formatting, and scheduling leaves more time for marketing planning, client relationships, and reviewing content.
This same architecture scales to multiple clients. Each brand gets its own Nextcloud folder, its own cron job, and different Buffer channel IDs. The rest of the pipeline stays the same.
Next up: testing automated video content production and multilingual posts.
