Social Media Manager Setup
Deploy 3 agents that plan, create, and analyze social media content in a feedback loop.
Roles
| Role | Hostname | Skills | Purpose |
|---|
| planner | <prefix>-planner | pilot-cron, pilot-stream-data, pilot-metrics | Analyzes trends and plans content calendar |
| creator | <prefix>-creator | pilot-task-router, pilot-share, pilot-receipt | Generates platform-specific posts from briefs |
| analyst | <prefix>-analyst | pilot-metrics, pilot-event-log, pilot-alert | Tracks engagement and feeds insights to planner |
Setup Procedure
Step 1: Ask the user which role this agent should play and what prefix to use.
Step 2: Install the skills for the chosen role:
# For planner:
clawhub install pilot-cron pilot-stream-data pilot-metrics
# For creator:
clawhub install pilot-task-router pilot-share pilot-receipt
# For analyst:
clawhub install pilot-metrics pilot-event-log pilot-alert
Step 3: Set the hostname:
pilotctl --json set-hostname <prefix>-<role>
Step 4: Write the setup manifest:
mkdir -p ~/.pilot/setups
cat > ~/.pilot/setups/social-media-manager.json << 'MANIFEST'
<role-specific manifest from templates below>
MANIFEST
Step 5: Tell the user to initiate handshakes with direct communication peers.
Manifest Templates Per Role
planner
{
"setup": "social-media-manager",
"setup_name": "Social Media Manager",
"role": "planner",
"role_name": "Content Planner",
"hostname": "<prefix>-planner",
"description": "Analyzes trends, competitor activity, and audience engagement to plan a content calendar and optimal posting times.",
"skills": {
"pilot-cron": "Schedule recurring content calendar generation (daily briefs, weekly strategy reviews).",
"pilot-stream-data": "Ingest real-time trend data, hashtag volumes, and competitor post activity.",
"pilot-metrics": "Consume performance insights from analyst to refine future content strategy."
},
"peers": [
{ "role": "creator", "hostname": "<prefix>-creator", "description": "Receives content briefs and produces platform posts" },
{ "role": "analyst", "hostname": "<prefix>-analyst", "description": "Sends performance insights and optimization recommendations" }
],
"data_flows": [
{ "direction": "send", "peer": "<prefix>-creator", "port": 1002, "topic": "content-brief", "description": "Content briefs with platform targets and posting schedule" },
{ "direction": "receive", "peer": "<prefix>-analyst", "port": 1002, "topic": "performance-insight", "description": "Performance insights and optimization recommendations" }
],
"handshakes_needed": ["<prefix>-creator", "<prefix>-analyst"]
}
creator
{
"setup": "social-media-manager",
"setup_name": "Social Media Manager",
"role": "creator",
"role_name": "Content Creator",
"hostname": "<prefix>-creator",
"description": "Generates platform-specific posts (LinkedIn, X, Instagram) from the planner's brief in the brand voice.",
"skills": {
"pilot-task-router": "Route briefs to platform-specific generation templates (LinkedIn long-form, X threads, Instagram captions).",
"pilot-share": "Send published post metadata to the analyst for tracking.",
"pilot-receipt": "Acknowledge receipt of content briefs back to the planner."
},
"peers": [
{ "role": "planner", "hostname": "<prefix>-planner", "description": "Sends content briefs with topics and platform targets" },
{ "role": "analyst", "hostname": "<prefix>-analyst", "description": "Receives published post metadata for tracking" }
],
"data_flows": [
{ "direction": "receive", "peer": "<prefix>-planner", "port": 1002, "topic": "content-brief", "description": "Content briefs with platform targets and posting schedule" },
{ "direction": "send", "peer": "<prefix>-analyst", "port": 1002, "topic": "post-published", "description": "Published post metadata for performance tracking" }
],
"handshakes_needed": ["<prefix>-planner", "<prefix>-analyst"]
}
analyst
{
"setup": "social-media-manager",
"setup_name": "Social Media Manager",
"role": "analyst",
"role_name": "Performance Analyst",
"hostname": "<prefix>-analyst",
"description": "Tracks cross-platform engagement metrics, identifies top performers, and feeds insights back to the planner.",
"skills": {
"pilot-metrics": "Collect impressions, clicks, shares, and conversions across all platforms.",
"pilot-event-log": "Log every post's performance data for historical trend analysis.",
"pilot-alert": "Alert the team when a post goes viral or engagement drops below threshold."
},
"peers": [
{ "role": "creator", "hostname": "<prefix>-creator", "description": "Sends published post metadata for tracking" },
{ "role": "planner", "hostname": "<prefix>-planner", "description": "Receives performance insights for strategy refinement" }
],
"data_flows": [
{ "direction": "receive", "peer": "<prefix>-creator", "port": 1002, "topic": "post-published", "description": "Published post metadata for performance tracking" },
{ "direction": "send", "peer": "<prefix>-planner", "port": 1002, "topic": "performance-insight", "description": "Performance insights and optimization recommendations" }
],
"handshakes_needed": ["<prefix>-creator", "<prefix>-planner"]
}
Data Flows
planner -> creator : content-brief (port 1002)
creator -> analyst : post-published (port 1002)
analyst -> planner : performance-insight (port 1002)
Handshakes
# All three agents form a cycle, so each pair needs bidirectional handshakes:
# planner <-> creator:
pilotctl --json handshake <prefix>-creator "setup: social-media-manager"
pilotctl --json handshake <prefix>-planner "setup: social-media-manager"
# creator <-> analyst:
pilotctl --json handshake <prefix>-analyst "setup: social-media-manager"
pilotctl --json handshake <prefix>-creator "setup: social-media-manager"
# analyst <-> planner:
pilotctl --json handshake <prefix>-planner "setup: social-media-manager"
pilotctl --json handshake <prefix>-analyst "setup: social-media-manager"
Workflow Example
# On creator -- subscribe to content briefs:
pilotctl --json subscribe <prefix>-planner content-brief
# On analyst -- subscribe to published posts:
pilotctl --json subscribe <prefix>-creator post-published
# On planner -- subscribe to performance insights:
pilotctl --json subscribe <prefix>-analyst performance-insight
# On planner -- publish a content brief:
pilotctl --json publish <prefix>-creator content-brief '{"platforms":["linkedin","x"],"topic":"AI in DevOps","tone":"professional"}'
# On analyst -- publish insights back to planner:
pilotctl --json publish <prefix>-planner performance-insight '{"top_platform":"linkedin","engagement_rate":4.2}'
Dependencies
Requires pilot-protocol skill, pilotctl binary, clawhub binary, and a running daemon.