| name | content-kingdom |
| description | Use when content Kingdom Orchestrator — the BRAIN that coordinates all 12 content phases. Sequences research → plan → script → create → review → schedule → post → engage → analyze → optimize → repurpose → scale. |
| author | oyi77 |
| license | Apache-2.0 |
| subdomain | content-creation |
| tags | ["content","automation","tiktok","instagram","postbridge","geminigen","money"] |
| domain | content |
| version | 1.0.0 |
Content Kingdom Orchestrator
Overview
A lean 12-phase pipeline that turns raw trends into scheduled, analyzed, and scaled social media content — fully automated, with Paperclip issue tracking.
SOLID design:
- Each phase = single responsibility, independently runnable
- New phases: add to
PHASE_REGISTRY in orchestrator.py — no other edits
- All new modules extend
BaseModule (dependency inversion)
- Public API: 4 methods only (
run_daily_pipeline, run_phase, get_status, create_paperclip_issues)
KISS design:
- Existing scripts called via subprocess — no reimplementation
- Only 2 truly new modules:
comment_manager.py, engagement_engine.py
- Config extends
autopilot_affiliate_engine/config.py at runtime
File Structure
skills/1ai-skills/content/content-kingdom/
├── SKILL.md ← you are here
├── orchestrator.py ← BRAIN: thin coordinator
├── base_module.py ← BaseModule + PhaseResult (DI foundation)
├── config.json ← config (extends engine config at runtime)
├── state.json ← auto-generated: pipeline state
├── modules/
│ ├── __init__.py
│ ├── persona_manager.py ← brand voice + caption generation
│ ├── comment_manager.py ← Phase 8: ENGAGE (new)
│ ├── engagement_engine.py ← Phase 12: SCALE (new)
│ ├── veris_design.py ← v2.0: Veris Design System (prompts + palette)
│ └── geminigen_client.py ← v2.0: GeminiGen API client (images + videos)
├── output/ ← phase outputs (today_plan.json, scripts_*.json, …)
├── logs/ ← daily orchestrator logs
├── templates/ ← caption/storyboard templates
└── tests/ ← unit tests
Symlink: skills/content-kingdom → skills/1ai-skills/content/content-kingdom
Veris Design Principles (v2.0)
Extracted from Veris (Ads Master, 10+ years) training session. Applied automatically in Phase 4: CREATE.
Core Rules (NON-NEGOTIABLE)
- Pure black background —
#000000, no exceptions, ever
- High contrast white text — headlines in
#FFFFFF, nothing below 60% opacity
- Three-zone vertical layout — every ad must have: Hook / Body / CTA zones
- No vibrant colors — accent palette limited to dark trust/urgency signals
- No emoji in visuals — emoji in captions are OK, never in images
- Minimalist premium — less elements = more premium feel = higher trust
Color Palette
| Role | Hex | Usage |
|---|
bg_primary | #000000 | Main background (mandatory) |
bg_secondary | #000020 | Secondary surfaces |
text_primary | #FFFFFF | Headlines, CTA text |
text_secondary | #808080 | Supporting copy |
accent_trust | #202040 | Borders, trust badges |
accent_urgency | #200000 | Scarcity signals |
accent_soft | #606080 | Decorative elements |
Three-Zone Layout
┌─────────────────────────────┐
│ HOOK ZONE (top 20-30%) │ ← Bold headline, stops the scroll
│ "Bisa Cuan 1 Juta/Hari?" │
├─────────────────────────────┤
│ BODY ZONE (middle 40-50%) │ ← Product detail, builds desire
│ What it is, what it does │
├─────────────────────────────┤
│ CTA ZONE (bottom 20-30%) │ ← Action button, price, frame
│ [Lihat Sekarang → Rp 49K] │
└─────────────────────────────┘
Platform Priority (Veris Approach)
- Instagram — PRIMARY (where ads convert)
- Facebook — SECONDARY (older, higher spend audience)
- Threads — TERTIARY (IG companion, free reach)
- TikTok — QUATERNARY (volume play, lower CPM)
Formats
| Platform | Width | Height | Ratio |
|---|
| Instagram Portrait | 1024 | 1280 | 4:5 ← PRIMARY |
| Instagram Feed | 800 | 800 | 1:1 |
| TikTok | 1080 | 1920 | 9:16 |
Using Veris in Code
from modules.veris_design import build_veris_prompt, veris_prompt_for_platform
from modules.geminigen_client import GeminiGenClient
payload = veris_prompt_for_platform(
product_name="Guru Pintar AI",
hook_text="Bisa Cuan Rp 1 Juta/Hari?",
platform="instagram",
)
client = GeminiGenClient()
resp = client.generate_image(**payload)
url = client.generate_image_sync(**payload)
GeminiGen API (v2.0 — Primary Media Provider)
Base URL: https://api.geminigen.ai
Auth: x-api-key header
Key config: workspace/config/geminigen_api.json → {"api_key": "..."}
Supported Operations
| Endpoint | Purpose | Module |
|---|
POST /uapi/v1/generate_image | Image generation | GeminiGenClient.generate_image() |
POST /uapi/v1/video-gen/grok | Video generation (Grok) | GeminiGenClient.generate_video_grok() |
GET /uapi/v1/history/:uuid | Poll job status | GeminiGenClient.get_status() |
Status Codes
1 = processing (keep polling)
2 = completed (extract URL)
3 = failed (raise error)
Phase 4 CREATE Provider Chain (v2.0)
Images:
GeminiGen (nano-banana-pro + Veris prompt)
↓ on failure
NVIDIA (Flux) via legacy media_generator
↓ on failure
PIL placeholder (last resort — never blocks pipeline)
Videos:
GeminiGen (Grok-3, 480p portrait)
↓ on failure
BytePlus (Seedance T2V)
When to Use
Trigger phrases:
-
"content kingdom"
-
"\n Content Kingdom Orchestrator — the BRAIN that coordinates all 12 content pha"
-
Running the full daily content pipeline (--pipeline)
-
Running a specific phase only (--phase research, --phase schedule, etc.)
-
Checking pipeline status after a run (--status)
-
Creating Paperclip tracking issues for a run (--paperclip-issues)
-
Debugging a broken phase in isolation
When NOT to Use
- ❌ Direct PostBridge posting → use
autopilot_affiliate_engine/auto_postbridge_robust_v2.py
- ❌ Generating images only → use
skills/nano-banana-pro/scripts/generate_image.py
- ❌ Research only → use
autopilot_affiliate_engine/research_agent.py
- ❌ Revenue tracking only → use
autopilot_affiliate_engine/revenue_tracker.py
- ❌ Storyboard only → use
content/content-generator/scripts/storyboard.py
Quick Reference
python3 orchestrator.py --pipeline
python3 orchestrator.py --phase research
python3 orchestrator.py --phase plan
python3 orchestrator.py --phase script
python3 orchestrator.py --phase create
python3 orchestrator.py --phase review
python3 orchestrator.py --phase schedule
python3 orchestrator.py --phase post
python3 orchestrator.py --phase engage
python3 orchestrator.py --phase analyze
python3 orchestrator.py --phase optimize
python3 orchestrator.py --phase repurpose
python3 orchestrator.py --phase scale
python3 orchestrator.py --status
python3 orchestrator.py --paperclip-issues
python3 orchestrator.py --pipeline --config /path/to/custom_config.json
Workflow
Content Kingdom runs a 12-phase daily pipeline. Each phase is a discrete step that feeds the next:
| Phase | What Happens |
|---|
| 1. Research | Scrape trends, competitor content, viral patterns |
| 2. Plan | Select content angles, assign formats per platform |
| 3. Script | Generate platform-optimized scripts (TikTok, IG, YT) |
| 4. Create | Produce media — images, video, audio via GeminiGen |
| 5. Review | Quality gate, brand compliance check |
| 6. Schedule | Queue to PostBridge with optimal timing |
| 7. Post | Auto-publish to TikTok, Instagram, YouTube |
| 8. Engage | Auto-reply to comments, DMs |
| 9. Analyze | Collect views, likes, shares, CTR per post |
| 10. Optimize | Surface winning formats, topics, hooks |
| 11. Repurpose | Spin top content into cross-platform variants |
| 12. Scale | Grow volume, add channels, increase frequency |
Execution: One morning run via cron. Each phase delegates to sub-agents through Paperclip issues.
Failure mode: Any phase can be re-run independently without restarting the pipeline.
Scaling: More channels = more research + create iterations in parallel.
The 12 Phases
| # | Phase | Delegates To | New Code? |
|---|
| 1 | RESEARCH | autopilot_affiliate_engine/research_agent.py + viral_research_system.py | No |
| 2 | PLAN | Engine weekly plan + config products | Thin logic only |
| 3 | SCRIPT | content-generator/scripts/storyboard.py + modules/persona_manager.py | No |
| 4 | CREATE | skills/nano-banana-pro/scripts/generate_image.py | No |
| 5 | REVIEW | content-generator/scripts/quality_gate.py | No |
| 6 | SCHEDULE | autopilot_affiliate_engine/auto_postbridge_robust_v2.py | No |
| 7 | POST | PostBridge /post-results API + retry via robust_v2 | No |
| 8 | ENGAGE | modules/comment_manager.py | Yes — new |
| 9 | ANALYZE | evening_report.py + revenue_tracker.py + PostBridge analytics | No |
| 10 | OPTIMIZE | Engagement rate calc + revenue_tracker_REAL.py | Thin logic only |
| 11 | REPURPOSE | skills/auto-clipper/scripts/auto_clipper.py | No |
| 12 | SCALE | modules/engagement_engine.py | Yes — new |
Cron Setup
0 8 * * * cd /home/openclaw/.openclaw/workspace/skills/content-kingdom && python3 orchestrator.py --pipeline >> logs/cron.log 2>&1
0 20 * * * cd /home/openclaw/.openclaw/workspace/skills/content-kingdom && python3 orchestrator.py --phase analyze >> logs/cron.log 2>&1
0 */2 * * * cd /home/openclaw/.openclaw/workspace/skills/content-kingdom && python3 orchestrator.py --phase engage >> logs/cron.log 2>&1
Configuration
Edit config.json to change:
| Key | Purpose | Example |
|---|
products | Products to promote (hooks, prices) | Add new LYNK product |
personas | Brand voices (e.g., brands, styles) | Add new persona |
platforms | Enable/disable platforms | "youtube": {"enabled": true} |
schedule | Posting times per platform | "tiktok": ["07:00", "19:00"] |
quality_gates | Review pass/fail thresholds | "min_caption_length": 80 |
scoring_weights | Engagement scoring for scale phase | "shares": 10.0 |
winner_thresholds | Min score to be a "winner" | "tiktok": 2000 |
Do NOT duplicate values already in autopilot_affiliate_engine/config.py — they're merged at runtime.
Paperclip Integration
Each pipeline run creates:
- 1 parent issue:
Content Kingdom — YYYY-MM-DD
- 12 sub-issues: one per phase
- Status auto-updates as phases complete (
todo → done or blocked)
Paperclip server must be running at http://localhost:3100.
Adding a New Phase
- Write a
_phase_newphase(cfg, **kwargs) -> dict function in orchestrator.py
- Add entry to
PHASES dict: "newphase": {"fn": _phase_newphase, "label": "Phase 13: NEWPHASE", "deps": [...]}
- Done. No other changes needed (Open/Closed principle).
Adding a New Module
If the new phase needs a real class:
from base_module import BaseModule
class MyNewModule(BaseModule):
@property
def name(self) -> str:
return "my_phase"
def _execute(self, **kwargs) -> dict:
return {"result": "done"}
Instantiate in the phase function, call module.run().
Common Mistakes
| ❌ Wrong | ✅ Right |
|---|
| Creating new PostBridge wrapper | Import/subprocess auto_postbridge_robust_v2.py |
| Duplicating product list in config | Add products only to config.json, merge from engine at runtime |
| Running orchestrator as a library import | Use --phase CLI or instantiate ContentKingdomOrchestrator |
Editing phase logic inside run_phase() | Edit the _phase_*() function, not the coordinator |
Adding config to orchestrator.py directly | All config in config.json — orchestrator reads it |
Dependencies
Python stdlib only + requests:
pip install requests
External scripts (must exist):
autopilot_affiliate_engine/research_agent.py
autopilot_affiliate_engine/auto_postbridge_robust_v2.py
autopilot_affiliate_engine/evening_report.py
autopilot_affiliate_engine/revenue_tracker.py
content/content-generator/scripts/storyboard.py
content/content-generator/scripts/quality_gate.py
skills/nano-banana-pro/scripts/generate_image.py (optional — CREATE fallback chain)
skills/auto-clipper/scripts/auto_clipper.py (optional — REPURPOSE phase degrades gracefully)
v2.0 additions:
workspace/config/geminigen_api.json — {"api_key": "YOUR_KEY"} (required for GeminiGen primary provider)
curl — CLI dependency for GeminiGen API calls (already available system-wide)
Example Output
{
"run_id": "run_20260313_080000",
"date": "2026-03-13",
"phases": {
"research": {"status": "success", "data": {"sources": ["research_agent", "viral_research_system"]}},
"plan": {"status": "success", "data": {"product_focus": "jendralbot_bundle", "platforms": ["tiktok", "instagram"]}},
"script": {
...
Money-Making Overview
Buyer Persona:
- SME owners (3-50 employees) in Indonesia/US who need daily social media content without hiring a team
- Digital agencies that want to white-label content production under their own brand
- E-commerce brands that need product content across TikTok, Instagram, Facebook with direct attribution
- Solo creators who need to scale output without burning out
Three Pricing Tiers:
| Tier | Price | What They Get |
|---|
| Content Starter | $1,000/mo | 10 posts/week across 2 platforms, template-based visuals, basic captions, weekly report |
| Content Pro | $2,500/mo | 20 posts/week across 4 platforms, custom Veris visuals, storyboard scripts, engagement management, weekly optimization |
| Content Kingdom | $5,000/mo | Full 12-phase pipeline: viral research, daily content, paid ad creative, auto-engagement, analytics, repurposing, monthly strategy session |
First-Dollar Timeline:
- Day 1: Onboard client, define personas + products (30-min call)
- Day 3: First 5 posts delivered as proof-of-work
- Day 7: Full pipeline running, first engagement data
- Day 14: First optimization cycle, client sees measurable lift
- Day 30: Renewal conversation backed by performance report
Target Markets:
- Indonesia SMEs: Bundle with LYNK affiliate products, Rp 5-15M/mo
- US Agencies: White-label Content Kingdom for $3-7K/mo retainer
- E-commerce Brands: Product-focused content with direct conversion attribution
First Action in 60 Minutes
Copy-paste this to onboard a new client and run their first full pipeline:
#!/usr/bin/env bash
set -e
CLIENT="$1"
PRODUCT="$2"
HOOK="$3"
PRICE="$4"
echo "=== Onboarding $CLIENT ==="
mkdir -p "clients/$CLIENT"
cat > "clients/$CLIENT/config.json" << 'EOF'
{
"products": [{"name": "PLACEHOLDER_PRODUCT", "hook": "PLACEHOLDER_HOOK", "price": "PLACEHOLDER_PRICE"}],
"personas": ["professional", "trendy"],
"platforms": {
"tiktok": {"enabled": true, "schedule": ["07:00", "19:00"]},
"instagram": {"enabled": true, "schedule": ["08:00", "20:00"]},
"facebook": {"enabled": true, "schedule": ["12:00"]}
},
"quality_gates": {: 80, : 0.6},
: {: 1.0, : 2.0, : 10.0, : 5.0},
: {: 2000, : 1500}
}
EOF
sed -i
sed -i
sed -i
python3 orchestrator.py --phase research --config 2>&1 | -5
python3 orchestrator.py --phase plan --config 2>&1 | -5
What this gets you in 60 minutes:
- Client-specific config created and filled
- Research phase complete (trending angles + competitor analysis)
- Plan phase complete (posting schedule + content strategy)
- Deliverable preview ready to share with client
Deliverable Format
Weekly Content Production Report (deliver every Monday morning):
CONTENT PRODUCTION REPORT
Client: [Name] | Week: 2026-07-20
Pipeline Run ID: run_20260720_080000
=== DELIVERED THIS WEEK ===
Platform | Posts | Format | Status
TikTok | 10 | 9:16 video | Posted
Instagram | 10 | 4:5 image | Posted
Facebook | 5 | 1:1 image | Scheduled
Total: 25 posts across 3 platforms
=== PERFORMANCE ===
Metric | Value | vs Last Week
Engagement Rate | 4.2% | +0.8%
Total Views | 45,200 | +12%
Link Clicks | 1,230 | +5%
Conversions | 28 | +40% <- from optimized CTAs
=== TOP 3 PERFORMERS ===
1. "Bisa Cuan Rp 1 Juta/Hari?" — TikTok — 12,400 views, 5.1% eng.
2. Product demo video — Instagram — 8,200 views, 4.8% eng.
3. Testimonial graphic — Facebook — 5,100 views, 3.9% eng.
=== NEXT WEEK PLAN ===
- 5 A/B test variants for low-performing creatives
- 2 new product angles from viral research
- Repurpose top 3 posts into Shorts/reels
=== INVOICE ===
Service: Content Pro — $2,500
Status: Due upon receipt
Pricing Table for Proposals:
┌──────────────────────────────────────────────────────────────────────────┐
│ CONTENT KINGDOM PRICING │
├──────────────┬──────────┬───────────┬──────────────┬─────────────────────┤
│ Service │ Starter │ Pro │ Kingdom │ À La Carte │
├──────────────┼──────────┼───────────┼──────────────┼─────────────────────┤
│ Posts/week │ 10 │ 20 │ 35+ │ $50/post │
│ Platforms │ 2 │ 4 │ 6+ │ $100/platform │
│ Visual Type │ Template │ Custom │ Veris Pro │ $200/design │
│ Research │ Basic │ Viral │ Full 12-ph │ $500/research cycle │
│ Engagement │ -- │ Auto-reply│ Full + DM │ $300/mo │
│ Analytics │ Weekly │ Weekly + │ Daily + Opt │ $200/mo │
│ Repurposing │ -- │ -- │ Auto-clip │ $250/mo │
├──────────────┼──────────┼───────────┼──────────────┼─────────────────────┤
│ Price/Month │ $1,000 │ $2,500 │ $5,000 │ Custom │
└──────────────┴──────────┴───────────┴──────────────┴─────────────────────┘
Invoice Line Items (copy into Stripe/Paddle):
- "Content Kingdom — [Tier] — [Month] — $X,XXX"
- "Content Kingdom — À La Carte — [Qty]x [Service] — $XXX"
- "Content Kingdom — Rush Production — [Posts]x — $XXX"
Anti-Rationalization Table
| Rationalization | Reality |
|---|
| "I'll just post manually, automation is overkill" | Manual posting at scale burns 15+ hours/week. Automation pays for itself in 2 weeks of saved labor. |
| "My content is good enough without the full pipeline" | The 12-phase pipeline is why Content Kingdom produces 3x the engagement of random posting. |
| "Clients won't pay $1K+ for content" | Agencies charge $3-7K/mo for managed content. You're underpriced, not overpriced. |
| "I'll optimize after I have more clients" | Optimization is the retention engine. Without it, clients churn at month 2. |
| "Viral research takes too long to set up" | The RESEARCH phase runs in 5 minutes via research_agent.py. Setup is one config edit. |
| "I don't have time to run 12 phases every day" | Cron handles it. You sign clients, the pipeline produces. Your time goes to sales, not keystrokes. |
| "Content is a commodity — hard to charge premium" | Premium is in the system: consistent daily output, data-driven optimization, zero missed days. That's what clients pay for. |