✓ Verified 💻 Development ✓ Enhanced Data

Social Media Ops

Set up a complete multi-brand social media management team on OpenClaw.

Rating
4.8 (234 reviews)
Downloads
47,182 downloads
Version
1.0.0

Overview

Set up a complete multi-brand social media management team on OpenClaw.

Key Features

1

Prerequisites Check

2

Team Setup

3

Run Scaffold

4

Telegram Setup

5

Instance Setup + First Brand

6

Verification + Gateway Restart

Complete Documentation

View Source →

Social Media Ops

Overview

This skill sets up a complete AI-powered social media operations team on OpenClaw. It creates:

  • 5 specialized agents in a star topology (Leader + 4 specialists) + on-demand Reviewer
  • Persistent A2A sessions for context-preserving multi-agent workflows
  • 3-layer memory system (MEMORY.md + daily notes + shared knowledge base)
  • Shared knowledge base with brand profiles, operations guides, and domain knowledge
  • Approval workflow ensuring nothing publishes without owner approval
  • Brand isolation with per-brand channels, content guidelines, and asset directories
  • Cron automation for daily memory consolidation and weekly KB review

Optional Dependencies

  • Image generation tool for Creator agent: The Creator agent requires an image generation tool installed in its workspace-creator/skills/ directory to produce images. Recommended: nano-banana-pro (Gemini-based, free tier). Without it, Creator produces text visual briefs only and cannot generate images.

Prerequisites

Before installing, ensure:

  • OpenClaw v2026.2.26+ is installed and openclaw onboard has been completed
  • At least one auth profile exists (e.g., Anthropic API key)
  • The ~/.openclaw/ directory exists

Quick Start

text
1. Install the skill (if not already in workspace/skills/)
2. Trigger setup: "Set up my social media operations team"
3. Follow the interactive onboarding (6 steps, ~10 minutes)
4. Start creating content!

Onboarding Flow

When first triggered, this skill runs an interactive setup process.

Step 1: Prerequisites Check

Verify the environment is ready:

  • [ ] OpenClaw installed and openclaw onboard completed
  • [ ] ~/.openclaw/ directory exists
  • [ ] At least one auth profile configured
If any prerequisite is missing, guide the user to resolve it before continuing.

Step 2: Team Setup

All 5 agents are installed automatically. Do not ask the user to choose a team size.

The full team:

AgentRole
LeaderOrchestration, routing, quality gates
CreatorContent + visual (copywriting, image gen, platform formatting)
WorkerExecution for Leader (files, CLI, config, maintenance)
ResearcherMarket research, competitor analysis
EngineerTechnical integrations, automation
On-demand:

AgentRole
ReviewerIndependent quality review (spawned when needed)
Model — All agents inherit the model configured during openclaw onboard (at agents.defaults.model). No per-agent model setup is needed.

Advanced note: If you later want to run a leaner team, re-run scaffold.sh --agents leader,creator,engineer to scaffold a subset.

Step 3: Run Scaffold

Execute the setup scripts to create all directories and files first:

bash
# 1. Create directories, copy templates, set up symlinks
bash scripts/scaffold.sh \
  --skill-dir "$(pwd)"

# 2. Merge agent configuration into openclaw.json
node scripts/patch-config.js \
  --config ~/.openclaw/openclaw.json

The scaffold creates:

  • Agent workspace directories with SOUL.md, AGENTS.md, MEMORY.md
  • Shared knowledge base with all template files
  • Symlinks from each workspace to shared/
  • Sub-skills (instance-setup, brand-manager) in Leader's skills/
  • Cron job definitions
The config patcher merges into openclaw.json:
  • Agent definitions with model assignments and tool restrictions
  • A2A session configuration
  • QMD memory paths (only if QMD is installed — otherwise skipped with a suggestion)
  • Internal hooks

Step 4: Telegram Setup

This step uses a guided flow — do not ask the user for raw chat IDs or thread IDs.

#### Phase A: Confirm Bot Token

  • Check openclaw.json for channels.telegram.botToken
  • If present → skip to Phase B
  • If missing → guide the user:
  • "Open Telegram, search for @BotFather"
  • "Send /newbot and follow the prompts to create a bot"
  • "Copy the bot token and paste it here"
  • Write the token into openclaw.json at channels.telegram.botToken
#### Phase B: Choose Channel Mode

Present the options in this order (Group+Topics first):

  • Group+Topics (recommended) — Best for most setups
  • Brands are topic threads inside a Telegram supergroup
  • Works for both solo operators and multi-person teams
  • Requires a supergroup with Topics enabled
  • DM+Topics — Private alternative, no group needed
  • Each brand gets its own topic thread inside the bot's DM
  • Requires enabling Thread Mode on the bot (guided below)
  • DM-simple — Minimal, no brand isolation
  • Single DM conversation with the bot
  • Context-based brand routing (no topics)
  • Group-simple — Group without brand isolation
  • Single group conversation
  • Context-based brand routing (no topics)
#### Phase C: Mode-Specific Setup

If DM+Topics:

  • Guide the user to enable Thread Mode on their bot:
  • "Open Telegram, find @BotFather"
  • "Tap the Open button (bottom-left) to open the BotFather MiniApp"
  • "Select your bot in the MiniApp"
  • "Go to Bot Settings"
  • "Find Thread Mode and enable it"
  • "Come back and tell me when it's done"
  • Once confirmed, use the bot token to get the user's chat ID:
  • "Send any message to your bot in Telegram"
  • Agent reads the incoming message context to extract the user's chat ID from {{From}}
  • Agent writes the chat ID into the channel config
  • Create the Operations topic automatically:
bash
node scripts/telegram-topics.js \
     --config ~/.openclaw/openclaw.json \
     --chat <USER_CHAT_ID> \
     --name "Operations"
  • Write the resulting thread ID into shared/operations/channel-map.md
  • Update cron/jobs.json — replace {{OPERATIONS_CHANNEL}} with the actual Operations channel address (format: chatId:threadId, e.g., 123456789:7)
If Group+Topics:
  • Check if the user already has a supergroup:
  • If not: guide them to create one (Create Group → toggle "Topics" on)
  • Guide the user to add the bot to the group:
  • "Add your bot to the supergroup"
  • "Make the bot an admin with the Manage Topics permission"
  • "Send a message in the group"
  • Agent reads the incoming message context to extract:
  • Group chat ID from {{To}}
  • Agent writes the chat ID into the channel config
  • Create the Operations topic automatically:
bash
node scripts/telegram-topics.js \
     --config ~/.openclaw/openclaw.json \
     --chat <GROUP_CHAT_ID> \
     --name "Operations"
  • Write the resulting thread ID into shared/operations/channel-map.md
  • Update cron/jobs.json — replace {{OPERATIONS_CHANNEL}} with the actual Operations channel address (format: chatId:threadId, e.g., -100XXXXXXXXXX:7)
If DM-simple:
  • "Send any message to your bot in Telegram"
  • Agent reads the chat ID from the incoming message context
  • Write chat ID into channel config — done
If Group-simple:
  • Guide: "Add the bot to your group and send a message"
  • Agent reads the group chat ID from the incoming message context
  • Write chat ID into channel config — done

Step 5: Instance Setup + First Brand

After scaffolding and Telegram configuration, run the sub-skills:

  • Instance Setup (instance-setup skill)
  • Owner name and timezone
  • Communication language (owner-facing)
  • Default content language
  • Bot identity (name, emoji, personality)
  • Updates: shared/INSTANCE.md, workspace/IDENTITY.md
  • First Brand (brand-manager add)
  • Brand ID, display name, domain
  • Target market and content language
  • Topic creation (for Topics modes):
  • Agent calls scripts/telegram-topics.js to create a topic named after the brand
  • The script returns the thread ID
  • Agent writes the thread ID into shared/operations/channel-map.md and the brand config
  • For simple modes: no topic needed, skip thread ID
  • Creates: brand profile, content guidelines, domain knowledge file, asset directories

Step 6: Verification + Gateway Restart

  • Restart gateway:
text
openclaw gateway restart
  • Run diagnostics:
text
openclaw doctor
This validates: agent config, DM allowlist inheritance, session health, model availability, and workspace integrity.
  • Additional checks:
  • [ ] Leader responds to messages
  • [ ] sessions_send to at least one agent succeeds
Optional: Enable QMD semantic memory

If patch-config.js reported "qmd binary not found" during Step 3, agents will use file-based memory (which works fine). To enable enhanced semantic search:

  • Say "Set up QMD" to run the qmd-setup sub-skill, which guides you through installation and configuration.
Suggested first tasks after setup:
  • Fill in your brand profile: shared/brands/{brand_id}/profile.md
  • Test content creation: "Write a Facebook post for {brand}"
  • Add more brands: "Add a new brand"
  • Set up posting schedule: fill in shared/operations/posting-schedule.md

Post-Installation

Async Dispatch Model (v2.0.0+)

Leader uses fully async dispatch (sessions_send with timeoutSeconds: 0) for all agent communication. This means:

  • Leader is never blocked waiting for an agent — always available to the owner.
  • Agents callback to Leader via sessions_send when done (event-driven, not polling). Leader processes callbacks per the "Agent Callback Protocol" flow in AGENTS.md.
  • Each task is tracked in a separate file: tasks/T-{YYYYMMDD}-{HHMM}.md. Completed tasks are archived to tasks/archive/.
  • Stale task detection is handled by a cron job (stale-task-check, every 10 minutes) that scans tasks/ for steps stuck in [⏳] state. Runs as Leader.
  • HEARTBEAT.md ships empty by default — periodic checks are handled by cron jobs instead of heartbeat polls.

Secrets Management (Optional)

For centralized API key management instead of scattered env vars:

text
openclaw secrets audit      # Check for plaintext secrets in config
openclaw secrets configure  # Set up secret entries
openclaw secrets apply      # Activate secrets
openclaw secrets reload     # Hot-reload without gateway restart

Adding More Brands

Use the brand-manager sub-skill:

  • "Add a new brand" — interactive brand creation (auto-creates topic for Topics modes)
  • "List brands" — show all active brands
  • "Archive {brand}" — deactivate a brand

Customizing Agents

Each agent's behavior is defined in two files:

  • SOUL.md — Persona, philosophy, boundaries, safety rules
  • AGENTS.md — Operating procedures, data handling, brand scope, tools
Modify these files to tune agent behavior for your specific needs.

Memory System

The 3-layer memory system works automatically:

  • MEMORY.md — Long-term curated memory (auto-updated by cron)
  • memory/YYYY-MM-DD.md — Daily activity logs
  • shared/ — Permanent knowledge base (grows over time)
Optional enhancement: Install QMD for semantic search across the knowledge base. Use the qmd-setup sub-skill or install manually (bun install -g @tobilu/qmd).

See references/memory-system.md for detailed documentation.

Communication Signals

Agents use standardized signals to communicate status. See references/signals-protocol.md for the complete signal dictionary.

Reference Documentation

DocumentPurposeWhen to Read
references/architecture.mdStar topology, session model, parallelismUnderstanding system design
references/agent-roles.mdDetailed agent capabilities and restrictionsCustomizing team composition
references/signals-protocol.mdComplete signal dictionaryDebugging agent communication
references/memory-system.md3-layer memory + knowledge captureUnderstanding memory behavior
references/approval-workflow.mdApproval pipeline + owner shortcutsContent publishing workflow
references/troubleshooting.mdKnown issues (IPv6, etc.) + solutionsWhen something breaks

Directory Structure

After installation, the following structure is created:

text
~/.openclaw/
├── openclaw.json                    # Updated with agent configs
├── workspace/                       # Leader
│   ├── SOUL.md, AGENTS.md, HEARTBEAT.md, IDENTITY.md
│   ├── memory/, skills/, assets/
│   └── shared/                      # Real directory (shared KB lives here)
│       ├── INSTANCE.md              # Instance configuration
│       ├── brand-registry.md        # Brand registry
│       ├── system-guide.md, brand-guide.md, compliance-guide.md
│       ├── team-roster.md
│       ├── brands/{id}/profile.md   # Per-brand profiles
│       ├── domain/{id}-industry.md  # Industry knowledge
│       ├── operations/              # Ops guides
│       └── errors/solutions.md      # Error KB
├── workspace-creator/               # Creator
│   ├── SOUL.md, AGENTS.md, MEMORY.md
│   ├── memory/, skills/
│   └── shared -> ../workspace/shared/
├── workspace-worker/                # Worker
│   └── (same structure)
├── workspace-researcher/            # Researcher
│   └── (same structure)
├── workspace-engineer/              # Engineer
│   └── (same structure)
├── workspace-reviewer/              # Reviewer (minimal, read-only)
│   ├── SOUL.md, AGENTS.md
│   └── shared -> ../workspace/shared/
└── cron/jobs.json                   # Scheduled tasks

Scripts

ScriptPurposeWhen to Run
scripts/scaffold.shCreate directories, copy templates, set up symlinksDuring initial setup
scripts/patch-config.jsMerge agent config into openclaw.jsonDuring initial setup
scripts/telegram-topics.jsCreate forum topics in Telegram DM or supergroupDuring setup and when adding brands

Sub-Skills

SkillPurpose
instance-setupConfigure owner info, language, bot identity
brand-managerAdd, edit, archive brands
qmd-setupInstall and configure QMD semantic search memory (optional)

Installation

Terminal bash

openclaw install social-media-ops
    
Copied!

💻Code Examples

4. Start creating content!

4-start-creating-content.txt
## Onboarding Flow

When first triggered, this skill runs an interactive setup process.

### Step 1: Prerequisites Check

Verify the environment is ready:

- [ ] OpenClaw installed and `openclaw onboard` completed
- [ ] `~/.openclaw/` directory exists
- [ ] At least one auth profile configured

If any prerequisite is missing, guide the user to resolve it before continuing.

### Step 2: Team Setup

**All 5 agents are installed automatically.** Do not ask the user to choose a team size.

The full team:

| Agent | Role |
|-------|------|
| Leader | Orchestration, routing, quality gates |
| Creator | Content + visual (copywriting, image gen, platform formatting) |
| Worker | Execution for Leader (files, CLI, config, maintenance) |
| Researcher | Market research, competitor analysis |
| Engineer | Technical integrations, automation |

**On-demand:**

| Agent | Role |
|-------|------|
| Reviewer | Independent quality review (spawned when needed) |

**Model** — All agents inherit the model configured during `openclaw onboard` (at `agents.defaults.model`). No per-agent model setup is needed.

> **Advanced note:** If you later want to run a leaner team, re-run `scaffold.sh --agents leader,creator,engineer` to scaffold a subset.

### Step 3: Run Scaffold

Execute the setup scripts to create all directories and files first:

--config ~/.openclaw/openclaw.json

---config-openclawopenclawjson.txt
The scaffold creates:
- Agent workspace directories with SOUL.md, AGENTS.md, MEMORY.md
- Shared knowledge base with all template files
- Symlinks from each workspace to shared/
- Sub-skills (instance-setup, brand-manager) in Leader's skills/
- Cron job definitions

The config patcher merges into openclaw.json:
- Agent definitions with model assignments and tool restrictions
- A2A session configuration
- QMD memory paths (**only if QMD is installed** — otherwise skipped with a suggestion)
- Internal hooks

### Step 4: Telegram Setup

This step uses a **guided flow** — do not ask the user for raw chat IDs or thread IDs.

#### Phase A: Confirm Bot Token

1. Check `openclaw.json` for `channels.telegram.botToken`
2. If present → skip to Phase B
3. If missing → guide the user:
   - "Open Telegram, search for **@BotFather**"
   - "Send `/newbot` and follow the prompts to create a bot"
   - "Copy the bot token and paste it here"
   - Write the token into `openclaw.json` at `channels.telegram.botToken`

#### Phase B: Choose Channel Mode

Present the options in this order (Group+Topics first):

1. **Group+Topics (recommended)** — Best for most setups
   - Brands are topic threads inside a Telegram supergroup
   - Works for both solo operators and multi-person teams
   - Requires a supergroup with Topics enabled

2. **DM+Topics** — Private alternative, no group needed
   - Each brand gets its own topic thread inside the bot's DM
   - Requires enabling Thread Mode on the bot (guided below)

3. **DM-simple** — Minimal, no brand isolation
   - Single DM conversation with the bot
   - Context-based brand routing (no topics)

4. **Group-simple** — Group without brand isolation
   - Single group conversation
   - Context-based brand routing (no topics)

#### Phase C: Mode-Specific Setup

**If DM+Topics:**

1. Guide the user to enable Thread Mode on their bot:
   - "Open Telegram, find **@BotFather**"
   - "Tap the **Open** button (bottom-left) to open the BotFather MiniApp"
   - "Select your bot in the MiniApp"
   - "Go to **Bot Settings**"
   - "Find **Thread Mode** and enable it"
   - "Come back and tell me when it's done"
2. Once confirmed, use the bot token to get the user's chat ID:
   - "Send any message to your bot in Telegram"
   - Agent reads the incoming message context to extract the user's chat ID from `{{From}}`
   - Agent writes the chat ID into the channel config
3. Create the **Operations** topic automatically:

For centralized API key management instead of scattered env vars:

for-centralized-api-key-management-instead-of-scattered-env-vars.txt
openclaw secrets audit      # Check for plaintext secrets in config
openclaw secrets configure  # Set up secret entries
openclaw secrets apply      # Activate secrets
openclaw secrets reload     # Hot-reload without gateway restart
example.txt
1. Install the skill (if not already in workspace/skills/)
2. Trigger setup: "Set up my social media operations team"
3. Follow the interactive onboarding (6 steps, ~10 minutes)
4. Start creating content!
example.sh
# 1. Create directories, copy templates, set up symlinks
bash scripts/scaffold.sh \
  --skill-dir "$(pwd)"

# 2. Merge agent configuration into openclaw.json
node scripts/patch-config.js \
  --config ~/.openclaw/openclaw.json
example.sh
node scripts/telegram-topics.js \
     --config ~/.openclaw/openclaw.json \
     --chat <USER_CHAT_ID> \
     --name "Operations"
example.sh
node scripts/telegram-topics.js \
     --config ~/.openclaw/openclaw.json \
     --chat <GROUP_CHAT_ID> \
     --name "Operations"
example.txt
~/.openclaw/
├── openclaw.json                    # Updated with agent configs
├── workspace/                       # Leader
│   ├── SOUL.md, AGENTS.md, HEARTBEAT.md, IDENTITY.md
│   ├── memory/, skills/, assets/
│   └── shared/                      # Real directory (shared KB lives here)
│       ├── INSTANCE.md              # Instance configuration
│       ├── brand-registry.md        # Brand registry
│       ├── system-guide.md, brand-guide.md, compliance-guide.md
│       ├── team-roster.md
│       ├── brands/{id}/profile.md   # Per-brand profiles
│       ├── domain/{id}-industry.md  # Industry knowledge
│       ├── operations/              # Ops guides
│       └── errors/solutions.md      # Error KB
├── workspace-creator/               # Creator
│   ├── SOUL.md, AGENTS.md, MEMORY.md
│   ├── memory/, skills/
│   └── shared -> ../workspace/shared/
├── workspace-worker/                # Worker
│   └── (same structure)
├── workspace-researcher/            # Researcher
│   └── (same structure)
├── workspace-engineer/              # Engineer
│   └── (same structure)
├── workspace-reviewer/              # Reviewer (minimal, read-only)
│   ├── SOUL.md, AGENTS.md
│   └── shared -> ../workspace/shared/
└── cron/jobs.json                   # Scheduled tasks

Tags

#coding_agents-and-ides

Quick Info

Category Development
Model Claude 3.5
Complexity One-Click
Author kuan0808
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
🧠

Ready to Install?

Get started with this skill in seconds

openclaw install social-media-ops