Configuration
Zirelia is configured via two main files:
1. .env (Secrets & API Keys)
2. config/persona.yaml (Personality, Behavior, Appearance)
🔐 Environment Variables (.env)
Create a .env file in the project root directory by copying .env.template.
Core APIs
| Variable |
Description |
Required? |
OPENAI_API_KEY |
Used for the "Brain" (text generation). |
✅ Yes |
REPLICATE_API_TOKEN |
Used for the "Imagination" (image generation). |
✅ Yes |
REPLICATE_MODEL_VERSION |
The specific model version (e.g., FLUX.1 Pro or your Custom LoRA). |
✅ Yes |
| Variable |
Description |
Required? |
TWITTER_API_KEY |
Consumer Key from Developer Portal. |
✅ Yes |
TWITTER_API_SECRET |
Consumer Secret. |
✅ Yes |
TWITTER_ACCESS_TOKEN |
OAuth 1.0a Access Token (Read/Write). |
✅ Yes |
TWITTER_ACCESS_TOKEN_SECRET |
OAuth 1.0a Secret. |
✅ Yes |
| Variable |
Description |
Required? |
META_APP_ID |
Facebook Developer App ID. |
🔹 If using FB/IG |
META_APP_SECRET |
Facebook Developer App Secret. |
🔹 If using FB/IG |
META_ACCESS_TOKEN |
Permanent Page Access Token. |
🔹 If using FB/IG |
FACEBOOK_PAGE_ID |
The ID of the bridging Facebook Page. |
🔹 If using FB/IG |
INSTAGRAM_ACCOUNT_ID |
The ID of the linked Professional Instagram. |
🔹 If using Instagram |
Threads
Separate App Required
Threads requires a completely separate Meta App from Facebook/Instagram. See the Meta Setup Guide for details.
| Variable |
Description |
Required? |
THREADS_ACCESS_TOKEN |
Long-lived Threads API Token (60-day, auto-renewed). |
🔹 If using Threads |
THREADS_USER_ID |
Threads User ID (fetch via graph.threads.net/v1.0/me). |
🔹 If using Threads |
THREADS_APP_SECRET |
Threads App Secret (needed for token auto-renewal). |
🔹 If using Threads |
Threads Content Strategy
| Variable |
Description |
Default |
THREADS_TEXT_ONLY_RATIO |
Ratio of text-only posts on Threads (0.0 = always image, 1.0 = always text-only). |
0.7 |
Automation Settings
| Variable |
Description |
Default |
MAX_DAILY_POSTS |
Maximum posts per day (1-3). |
1 |
ACTIVE_PLATFORMS |
Comma-separated list of platforms to post to. |
instagram,facebook,threads |
Database & Redis (Docker handles these automatically)
| Variable |
Description |
Default (Docker) |
DATABASE_URL |
PostgreSQL Connection String. |
postgresql://user:password@db:5432/influencer_db |
REDIS_URL |
Redis Connection String. |
redis://redis:6379/0 |
🧠 Persona Configuration (persona.yaml)
This YAML file defines who the bot is. Editing this changes the bot's entire behavior without touching code.
Location: config/persona.yaml
Structure
name: "Sienna Fox"
age: 23
nationality: "American (Los Angeles, CA)"
# Physical Appearance (Used by Image Generator)
physical_traits:
hair: "Light Brown / Dirty Blonde (Wavy)"
eyes: "Hazel / Warm Brown"
body: "Slim-Thick / Hourglass / Athletic"
vibe: "Natural, Sun-kissed"
# Psychological Traits (Used by Text Generator)
traits:
- "Confident"
- "Playful / Flirty"
- "Witty"
# Voice & Tone
voice:
tone: "Seductive but friendly"
style: "Short, punchy, uses emojis naturally (✨, 😉)"
# Platform-Specific Styles
platforms:
twitter:
style: "Teasing, unpredictable, short thoughts"
instagram:
style: "High-value aesthetic, golden hour, lifestyle with class"
threads:
style: "Unfiltered thoughts, group chat energy, bold opinions, engagement bait"
hashtag_density: "None"
cross_promo: "Occasional subtle teases pointing to Instagram content"
# Daily Routine (Used by Smart Scheduler)
routine:
morning:
- "Waking up in silk sheets"
- "Morning stretch / Yoga"
afternoon:
- "Working from a cafe"
- "Gym workout"
evening:
- "Sunset at the beach"
- "Glass of wine"
How to update
- Edit the file.
- Restart the container:
docker compose restart scheduler