Wahlu — Social Media Manager for AI Agents
Wahlu lets your agent create, schedule, and publish social media posts across Instagram, TikTok, LinkedIn, Facebook, and YouTube — all from the command line.
Setup
# Set your API key (get one at wahlu.com under Settings > API Keys)
export WAHLU_API_KEY=wahlu_live_...
No global install needed — use npx @wahlu/cli to run any command.
Core Workflow
- List brands —
npx @wahlu/cli brand list
- Switch to a brand —
npx @wahlu/cli brand switch <brand-id>
- List integrations —
npx @wahlu/cli integration list (get integration IDs for scheduling)
- Create a post —
npx @wahlu/cli post create --name "Title" --instagram '{"description":"Caption","post_type":"grid_post"}'
- Schedule it —
npx @wahlu/cli schedule create <content-item-id> --at 2026-03-15T14:00:00Z --integrations <id>
- Upload media —
npx @wahlu/cli media upload ./photo.jpg (returns a media ID)
- Check publications —
npx @wahlu/cli publication list
Use npx @wahlu/cli --help and npx @wahlu/cli <command> --help to discover all commands and options. Always use --json when you need to parse output.
What You Can Do
| Capability |
Commands |
| Post to 5 platforms |
post create with --instagram, --tiktok, --facebook, --youtube, --linkedin |
| Schedule posts |
schedule create with --at (ISO 8601) and --integrations |
| Upload images & video |
media upload <file> — supports PNG, JPG, GIF, WebP, MP4, MOV, WebM |
| Manage posting queues |
queue list, queue add <queue-id> <content-item-id> |
| Save content ideas |
idea create "Name" --description "Details" |
| Organise with labels |
label create "Campaign" --color "#ff5500" |
| View publish history |
publication list — see status, platform, failure reasons |
| List connected accounts |
integration list — find integration IDs for scheduling |
Platform-Specific Settings
Each platform has its own settings passed as JSON:
- Instagram —
--instagram '{"description":"...","post_type":"grid_post|reel|story","media_ids":["mid-123"]}'
- TikTok —
--tiktok '{"description":"...","post_type":"video|image|carousel","media_ids":["mid-123"]}'
- Facebook —
--facebook '{"description":"...","post_type":"fb_post|fb_story|fb_reel|fb_text","media_ids":["mid-123"]}'
- YouTube —
--youtube '{"title":"...","description":"...","post_type":"yt_short|yt_video","media_ids":["mid-123"]}'
- LinkedIn —
--linkedin '{"description":"...","post_type":"li_text|li_image|li_video","media_ids":["mid-123"]}'
Quick Examples
# Upload an image and create a cross-platform post
npx @wahlu/cli media upload ./photo.jpg
# → media ID: mid-abc123
npx @wahlu/cli post create --name "New product launch" \
--instagram '{"description":"Just launched!","post_type":"grid_post","media_ids":["mid-abc123"]}' \
--tiktok '{"description":"Just launched!","post_type":"image","media_ids":["mid-abc123"]}' \
--linkedin '{"description":"Just launched!","post_type":"li_image","media_ids":["mid-abc123"]}'
# Schedule for tomorrow at 9am
npx @wahlu/cli schedule create <content-item-id> \
--at 2026-03-15T09:00:00Z \
--integrations int-123 int-456 int-789
Rules
- Always confirm with the user before publishing or scheduling
- Use
npx @wahlu/cli integration list to find integration IDs — never guess them
- Use ISO 8601 format for all dates
- Use
--json flag when you need to parse command output programmatically
1---2name: wahlu3description: Social media automation for AI agents. Create posts, schedule content, upload media, manage queues, track publications, organise ideas, and publish across Instagram, TikTok, LinkedIn, Facebook, and YouTube. AI-powered social media manager with full API access.4---56# Wahlu — Social Media Manager for AI Agents78Wahlu lets your agent create, schedule, and publish social media posts across **Instagram, TikTok, LinkedIn, Facebook, and YouTube** — all from the command line.910- **Website:** [wahlu.com](https://wahlu.com)11- **CLI on npm:** [@wahlu/cli](https://www.npmjs.com/package/@wahlu/cli)12- **API docs:** [wahlu.com/docs](https://wahlu.com/docs)13- **OpenClaw integration page:** [wahlu.com/openclaw](https://wahlu.com/openclaw)1415---1617## Setup1819```bash20# Set your API key (get one at wahlu.com under Settings > API Keys)21export WAHLU_API_KEY=wahlu_live_...22```2324No global install needed — use `npx @wahlu/cli` to run any command.2526---2728## Core Workflow29301. **List brands** — `npx @wahlu/cli brand list`312. **Switch to a brand** — `npx @wahlu/cli brand switch <brand-id>`323. **List integrations** — `npx @wahlu/cli integration list` (get integration IDs for scheduling)334. **Create a post** — `npx @wahlu/cli post create --name "Title" --instagram '{"description":"Caption","post_type":"grid_post"}'`345. **Schedule it** — `npx @wahlu/cli schedule create <content-item-id> --at 2026-03-15T14:00:00Z --integrations <id>`356. **Upload media** — `npx @wahlu/cli media upload ./photo.jpg` (returns a media ID)367. **Check publications** — `npx @wahlu/cli publication list`3738Use `npx @wahlu/cli --help` and `npx @wahlu/cli <command> --help` to discover all commands and options. Always use `--json` when you need to parse output.3940---4142## What You Can Do4344| Capability | Commands |45|---|---|46| **Post to 5 platforms** | `post create` with `--instagram`, `--tiktok`, `--facebook`, `--youtube`, `--linkedin` |47| **Schedule posts** | `schedule create` with `--at` (ISO 8601) and `--integrations` |48| **Upload images & video** | `media upload <file>` — supports PNG, JPG, GIF, WebP, MP4, MOV, WebM |49| **Manage posting queues** | `queue list`, `queue add <queue-id> <content-item-id>` |50| **Save content ideas** | `idea create "Name" --description "Details"` |51| **Organise with labels** | `label create "Campaign" --color "#ff5500"` |52| **View publish history** | `publication list` — see status, platform, failure reasons |53| **List connected accounts** | `integration list` — find integration IDs for scheduling |5455---5657## Platform-Specific Settings5859Each platform has its own settings passed as JSON:6061- **Instagram** — `--instagram '{"description":"...","post_type":"grid_post|reel|story","media_ids":["mid-123"]}'`62- **TikTok** — `--tiktok '{"description":"...","post_type":"video|image|carousel","media_ids":["mid-123"]}'`63- **Facebook** — `--facebook '{"description":"...","post_type":"fb_post|fb_story|fb_reel|fb_text","media_ids":["mid-123"]}'`64- **YouTube** — `--youtube '{"title":"...","description":"...","post_type":"yt_short|yt_video","media_ids":["mid-123"]}'`65- **LinkedIn** — `--linkedin '{"description":"...","post_type":"li_text|li_image|li_video","media_ids":["mid-123"]}'`6667---6869## Quick Examples7071```bash72# Upload an image and create a cross-platform post73npx @wahlu/cli media upload ./photo.jpg74# → media ID: mid-abc1237576npx @wahlu/cli post create --name "New product launch" \77 --instagram '{"description":"Just launched!","post_type":"grid_post","media_ids":["mid-abc123"]}' \78 --tiktok '{"description":"Just launched!","post_type":"image","media_ids":["mid-abc123"]}' \79 --linkedin '{"description":"Just launched!","post_type":"li_image","media_ids":["mid-abc123"]}'8081# Schedule for tomorrow at 9am82npx @wahlu/cli schedule create <content-item-id> \83 --at 2026-03-15T09:00:00Z \84 --integrations int-123 int-456 int-78985```8687---8889## Rules9091- Always confirm with the user before publishing or scheduling92- Use `npx @wahlu/cli integration list` to find integration IDs — never guess them93- Use ISO 8601 format for all dates94- Use `--json` flag when you need to parse command output programmatically