Install
openclaw skills install gusnais-skillGusnais (Ruby-China/Homeland compatible) API integration with web-parity behavior and permission-consistent UX. Use when users want to connect using only CLIENT_ID and CLIENT_SECRET, auto-complete OAuth/API settings, keep capability differences identical to gusnais.com based on abilities and server authorization, or perform read/write API operations for plugin domains (press, note, jobs, site).
openclaw skills install gusnais-skillImplement Gusnais API integration that mirrors web behavior and permission boundaries.
CLIENT_IDCLIENT_SECRETDo not ask for base URL, OAuth paths, account IDs, scope defaults, pagination defaults, or serializer mappings unless discovery fails.
Use these defaults:
https://gusnais.com/oauth/authorize/oauth/token/oauth/revoke/api/v3access_token and refresh_token.GET /api/v3/users/me.Prefer Authorization header for requests:
Authorization: Bearer <access_token>Keep access_token query fallback for compatibility with Homeland API behavior.
Match gusnais.com UX and permission behavior:
abilities.For each action produce:
visible: true|falseenabled: true|falsereason: ok|no_permission|auth_required|resource_unavailable|validation_errorsource: abilities|server_status|policyUse endpoint mapping in references/endpoints.md and serializer notes for normalized outputs.
Keep defaults aligned with docs:
0201..150 (or endpoint-specific documented max)type=last_activedFor plugin domain operations (press/note/site/jobs):
references/endpoints.md.references/permission-parity.md.resource_unavailable unless deployment has enabled those API routes.For POST /api/v3/topics/:id/action?type=:type (ban|excellent|unexcellent|close|open):
abilities if present.Normalize API errors without changing meaning:
validation_errorauth_required (refresh then retry once)no_permissionresource_unavailableserver_errorReturn original server error text when available.
Retry-After on 429.references/endpoints.mdreferences/permission-parity.mdUse scripts/gusnais_bootstrap.py to initialize runtime config from CLIENT_ID and CLIENT_SECRET.
Recommended:
TOKEN_STORE_PATH when exchanging code, so refreshable tokens are persisted to JSON for long-lived automation.Use scripts/gusnais_plugin_client.py for plugin API read/write calls with:
abilities;Current deployment notes (2026-03-19):
/api/v3/press/posts*)./api/v3/note/notes*).sites CRUD + site_nodes list; undestroy/site_node writes are not mounted.resource_unavailable and avoid repeated retries.