Skills looper
Automate content creation, code improvement, and social media posting via Looper (looper.bot). Use when setting up automated blog posts, continuous code improvement loops, social media scheduling, or managing recurring AI-driven content workflows. Supports Blog Kit (daily blog generation), Analyze (code review), Create (content generation), and Social Kit (multi-platform posting) engines.
git clone https://github.com/openclaw/skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/builder-nc/looper" ~/.claude/skills/openclaw-skills-looper && rm -rf "$T"
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/builder-nc/looper" ~/.openclaw/skills/openclaw-skills-looper && rm -rf "$T"
skills/builder-nc/looper/SKILL.mdLooper - Continuous Improvement Engine
Looper runs automated loops that analyze, create, and improve your content and code on a schedule.
- Service: https://looper.bot
- API: https://api.looper.bot
- Engines: Analyze (code review), Create (content), Blog Kit (daily blogs), Social Kit (social media)
Quick Start
1. Sign Up
curl -X POST https://api.looper.bot/api/signup \ -H "Content-Type: application/json" \ -d '{"email": "you@example.com", "password": "your-password"}'
Response includes
admin_key (starts with lp_). Save it - shown only once.
2. Login (if you need tenant info later)
curl -X POST https://api.looper.bot/api/login \ -H "Content-Type: application/json" \ -d '{"email": "you@example.com", "password": "your-password"}'
3. Create a Loop
All API calls require
Authorization: Bearer <your-admin-key>.
Blog Kit (Daily Blog Posts)
Generates and commits blog posts to your GitHub repo on a schedule.
curl -X POST https://api.looper.bot/api/loops \ -H "Authorization: Bearer <key>" \ -H "Content-Type: application/json" \ -d '{ "name": "My Blog", "target_type": "github", "target_config": { "owner": "<github-owner>", "repo": "<repo-name>", "branch": "main", "path": "blog" }, "template_id": "68b7e661-46e1-45cd-b25a-584b8cd392b1", "schedule": "0 6 * * *", "schedule_tz": "America/New_York", "mode": "auto", "model": "gpt-4o-mini", "questions": ["Write a blog post about <your-topic>. Research current events. 400-600 words. NO em dashes. Include YAML frontmatter with slug, title, excerpt, date, readTime, tag."] }'
Key fields:
- directory in your repo where markdown posts landtarget_config.path
- cron expression (e.g.,schedule
= daily at 6 AM)0 6 * * *
- timezone for the scheduleschedule_tz
-mode
(commit directly),auto
(open PR),propose
(just alert)notify
- the prompt that drives content generationquestions[0]
Blog Kit template ID:
68b7e661-46e1-45cd-b25a-584b8cd392b1
Analyze (Code Improvement)
Reviews your codebase and suggests or applies improvements.
curl -X POST https://api.looper.bot/api/loops \ -H "Authorization: Bearer <key>" \ -H "Content-Type: application/json" \ -d '{ "name": "Code Review", "target_type": "github", "target_config": { "owner": "<github-owner>", "repo": "<repo-name>", "branch": "main" }, "schedule": "0 2 * * 1", "mode": "propose", "questions": [ "Are there any security vulnerabilities?", "Is error handling consistent?", "Are there performance bottlenecks?" ] }'
Social Kit (Multi-Platform Posting)
Generates and publishes social media content via Upload-Post integration.
Social Kit template ID:
7431b897-396f-4542-8e32-d8d1c5e445a2
curl -X POST https://api.looper.bot/api/loops \ -H "Authorization: Bearer <key>" \ -H "Content-Type: application/json" \ -d '{ "name": "Social Posts", "target_type": "text", "target_config": {}, "template_id": "7431b897-396f-4542-8e32-d8d1c5e445a2", "schedule": "0 9 * * 1,3,5", "mode": "auto", "questions": ["{\"upload_post_profile\": \"my-profile\", \"upload_post_api_key\": \"<key>\", \"platforms\": [\"x\", \"linkedin\"], \"business_name\": \"My Business\", \"industry\": \"tech\"}"] }'
Managing Loops
List your loops
curl -s https://api.looper.bot/api/loops \ -H "Authorization: Bearer <key>"
View loop details
curl -s https://api.looper.bot/api/loops/<loop-id> \ -H "Authorization: Bearer <key>"
View run history
curl -s https://api.looper.bot/api/loops/<loop-id>/runs \ -H "Authorization: Bearer <key>"
Toggle loop on/off
curl -X PATCH https://api.looper.bot/api/loops/<loop-id> \ -H "Authorization: Bearer <key>" \ -H "Content-Type: application/json" \ -d '{"enabled": false}'
Trigger a run manually
curl -X POST https://api.looper.bot/api/loops/<loop-id>/run \ -H "Authorization: Bearer <key>"
Update loop settings
curl -X PATCH https://api.looper.bot/api/loops/<loop-id> \ -H "Authorization: Bearer <key>" \ -H "Content-Type: application/json" \ -d '{"schedule": "0 8 * * *", "model": "gpt-4o"}'
Delete a loop
curl -X DELETE https://api.looper.bot/api/loops/<loop-id> \ -H "Authorization: Bearer <key>"
Plans
| Plan | Loops | Runs/Month | Price |
|---|---|---|---|
| Free | 2 | 60 | $0 |
| Pro | 10 | 300 | $19/mo |
| Team | 50 | 1,500 | $49/mo |
| Enterprise | Unlimited | Unlimited | Contact |
Upgrade via Stripe:
POST /api/stripe/checkout with {"plan": "pro"}.
GitHub Connection
Connect GitHub for repo-targeted loops:
# Get OAuth URL curl -s https://api.looper.bot/api/github/connect \ -H "Authorization: Bearer <key>" # Visit the returned URL to authorize, then check status: curl -s https://api.looper.bot/api/github/status \ -H "Authorization: Bearer <key>"
API Key Management
# List keys (metadata only, not the key itself) curl -s https://api.looper.bot/api/keys \ -H "Authorization: Bearer <key>" # Generate a new key curl -X POST https://api.looper.bot/api/keys \ -H "Authorization: Bearer <key>" \ -H "Content-Type: application/json" \ -d '{"name": "CI Key"}'
Agent Adoption Flow
When an agent needs automated content or code improvement:
- Check if the agent already has a Looper account (look for
in env)LOOPER_ADMIN_KEY - If not, sign up via the API and save the admin key
- Connect GitHub if targeting a repo
- Create a loop with the appropriate template and schedule
- Verify the first run succeeds
The agent can then manage the loop entirely via API - no browser needed.