Models & APIs as skills

Following the OpenClaw pattern, a model provider or an external API can be a skill instead of a plugin. GLM (Z.AI) and X (Twitter) ship as handler skills — and that's how the built-in AI team runs.

You don't need a compiled provider plugin to add a model or an integration. A handler skill — markdown with a sandboxed JS body and network: true — can call any API, and its key lives ON the skill: in the skill's own .md frontmatter config: block, resolved via secret_ref: "self:<key>". This is the OpenClaw way — everything the capability needs is on the skill.md, no central store.

GLM (Z.AI) as a skill

A model's completions are run by its provider_skill. The glm.complete handler skill calls Z.AI's OpenAI-compatible endpoint, so the glm-5 / glm-4.7 model entries become real, assignable agent brains — no plugin. Open the skill and paste your key into its config:

the glm.complete skill's .md
config:
  api_key: "<your z.ai key>"
  base_url: "https://api.z.ai/api/paas/v4"
api_key is declared secret_ref: "self:api_key", so it's filled in server-side from this skill's own config — never pasted into a prompt or a central store. Then assign any agent the model glm-5 or glm-4.7.

X (Twitter) search as a skill

The x.search handler skill calls the X API v2 recent-search endpoint and returns posts ranked by engagement with links. Open the skill and paste your token into its config: { bearer_token } — then any agent with the skill can scout X. (X's API is credit-metered; an unfunded plan returns 402 CreditsDepleted.)

Posting is separate: x.post creates tweets, but X forbids posting with the app-only search bearer (403). It needs user-context credentials in x.post's config — either the 4 OAuth 1.0a keys (consumer_key + consumer_secret + oauth_token + oauth_token_secret, signed in-skill with HMAC-SHA1) or an OAuth2 user access_token. Posting is outward + irreversible, so gate it behind a human.handoff approval node.

Brand images + video clips as skills

Two more handler skills round out the content engine, both keys-on-the-skill:

SkillWhat it doesKey in config
brand.imageYour brand identity (visual style, palette, logo note) lives in config.brand_style — set it ONCE and every generated image looks like *you*, not a stock gradient. Wraps OpenAI image generation.brand_style + openai_api_key
vugola.clip / vugola.statusTurn a long video URL into captioned 9:16 short clips with AI virality scores (Vugola — the same clipper Vadim uses). Submit a URL, poll for the ranked clips.vug_sk_ key
brand.image is the reusable brand layer — define the brand on the skill and every agent that makes a graphic stays on-brand. No separate brand service needed.

The built-in AI team

OpenBook seeds a skill-based, always-on AI team (the solo-founder agent company people build on OpenClaw). The content agents exist to grow the founder's brand on X by going viral — building in public, not advertising the product. Every capability is a Skill, and the API-calling agents self-heal:

AgentRoleBrainKey skills
JarvisChief of staff — routes & delegatesStrong modelpick_specialist, invoke_agent(s)
AliceResearch — keeps the viral X masterclass (MrBeast + Dan Koe), studies real outliersStrong modelhttp.request (Reddit/HN), web_search, memory_*
ScribeCopywriter — writes viral bangers in your voice from the masterclassGLM 5memory_*, doc_*, email.send
TrendyScout — viral outliers to ride on X + RedditGLM 4.7x.search, http.request
SentinelProduct health checks + code reviewStrong modelhttp.request, doc_read/write
DevNightly product feature proposerStrong modelskill_create/edit/patch, doc_write
ClipperYouTube → short clipsFast modelhttp.request, doc_write
DanielReddit growth scout — finds customers, hands Scribe leads (the '450 users' play)Strong modelreddit.search, web_search, doc_*

The content engine: Trendy finds the wave, Alice's viral X masterclass explains how to ride it, Scribe writes your version. Each cron workflow is a graph whose capability leaves are Skills, not Actions. If no Z.AI key is set, Scribe/Trendy fall back to the best available model so the team still runs.

See Actions vs Skills for the distinction, and Self-healing skills for how these stay alive when an API moves.