OpenQuok Core
Schedule and manage social posts with the openquok CLI — authenticate, upload media, create drafts and scheduled posts, configure internal plugs, and read channel analytics for integrations in your OpenQuok workspace.
Rank
62
Safety
84
Downloads
1.2k
Updated
Oct 10, 2026
Version
1.0.9
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 1.2K downloads reported by the source. Last updated 10/10/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 10, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 10, 2026
- Adoption signal
- 1.2K downloadsadoption · observed Oct 10, 2026
- Latest release
- 1.0.9release · observed Sep 27, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s173q039e4bjef64br2mkn1369897898:openquok-core- Install using `clawhub skill install s173q039e4bjef64br2mkn1369897898:openquok-core` in an isolated environment before connecting it to live workloads.
- No published capability contract is available yet, so validate auth and request/response behavior manually.
- Review the upstream CLAWHUB listing at https://clawhub.ai/ratimon/openquok-core before using production credentials.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-ratimon-openquok-core/snapshot"
Documentation
CLAWHUB
160,000 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
---
name: openquok-core
description: >-
Schedule and manage social posts with the openquok CLI — authenticate, upload media, create drafts and scheduled posts, configure internal plugs, and read channel analytics for integrations in your OpenQuok workspace.
homepage: https://www.npmjs.com/package/@openquok/auto-cli
version: 1.0.0
license: MIT
compatibility: Requires the global openquok CLI on PATH (see homepage). Installing this skill does not add the binary.
prerequisites:
commands: [openquok]
metadata: {"openclaw":{"emoji":"📮","always":true,"requires":{"bins":["openquok"]},"homepage":"https://www.npmjs.com/package/@openquok/auto-cli"},"hermes":{"tags":["social-media","openquok","scheduling"],"category":"social-media","requires_toolsets":["terminal"]},"grok-bot":{"tags":["social-media","openquok","scheduling"],"category":"social-media","requires_toolsets":["terminal"],"workspace_skill_path":"/workspace/openquok-core/SKILL.md"},"thinkrail":{"tags":["social-media","openquok","scheduling"],"category":"social-media","requires_toolsets":["terminal"],"skill_paths":["~/.pi/agent/skills/openquok-core/SKILL.md",".pi/skills/openquok-core/SKILL.md"]}}
---
<!-- SPDX-FileCopyrightText: 2026 Rati Montreewat -->
<!-- SPDX-License-Identifier: MIT -->
## Session opening (first turn after reset)
**When:** first assistant reply after `/new`, `/reset`, a new channel thread, or a “new session started” notice.
**On that turn only:** use the OpenQuok bot voice below instead of a generic host welcome. Do **not** reuse this block on later turns.
**One message only.** Run shell (below), then send **exactly one** assistant message. Forbidden on this turn:
- A persona line before tools (e.g. “Hello, … I’m Atlas … What should we focus on?”).
- A second message with only CLI version (e.g. “The OpenQuok CLI version is 0.0.6.”).
- Repeating the host greeting after the system “new session started” line.
**Shell (before any user-visible text):**
```bash
openquok --version
openquok auth:status
```
If `auth:status` shows `"connected": true`, also run `openquok auth:workspace`.
**Required opening sentence (verbatim start):** `Hi, I am the OpenQuok bot.`
**Same message must also include:**
1. Installed CLI version from `openquok --version`.
2. If the user may be on an old build: note that skill install does not upgrade the CLI and offer to walk through upgrade using the [CLI package page](https://www.npmjs.com/package/@openquok/auto-cli) — only after they agree.
3. Auth: if connected, say you are authenticated and name **`workspace.name`**; if not, say not authenticated and offer the **two-step device flow** (below) or a programmatic token (`opo_`). **Never** run `auth:login --json` without `--no-poll` on messaging hosts — the shell exits before credentials are stored.
**Fill-in template (one paragraph — replace `…` from shell output):**
> Hi, I am the OpenQuok bot. OpenQuok CLI is …. [If the version looks stale: Skill updates do not upgrade the CLI — want help up_meta.json
{
"ownerId": "kn7bz73j78bvq5mfqy2c9msscs896h8e",
"slug": "openquok-core",
"version": "1.0.9",
"publishedAt": 1790518260536
}resources/bluesky-examples.md
# Bluesky — CLI examples
```bash
BSKY_ID=$(openquok integrations:list | jq -r '.[] | select(.identifier=="bluesky") | .id')
openquok integrations:settings "$BSKY_ID"
```
Run `integrations:settings` for `output.maxLength` (300) and `rules`. Settings mechanics: [provider-settings.md](./provider-settings.md).
JSON recipes: [examples/EXAMPLES.md](./examples/EXAMPLES.md#bluesky).
## Supported features
| Feature | Supported | Notes |
| --- | --- | --- |
| Text-only post | Yes | No attachment required |
| Images | Yes | Up to **4** per main post or follow-up — upload first (Rule 2) |
| Video | Yes | **1** MP4 per post — never mixed with images |
| 300-grapheme cap | Yes | Main `body`, each `bluesky.replies[].message` on schedule |
| Scheduled follow-up replies | Yes | `bluesky.replies[]` with `delaySeconds`; optional `media` per reply |
| Mention autocomplete | Yes | Composer `@handle`; publish uses facets |
| Link card embed | Yes | `bluesky.linkUrl` (+ optional title/description) on text-only posts — not with media or quote |
| Quote post | Yes | `bluesky.quoteUrl` (`bsky.app` or AT URI) — not with media or link card |
| Thread gate | Yes | `bluesky.threadGate` — who can reply after publish |
| Video limits | Yes | One MP4 — max **300 MB**, **10** minutes |
| Global plugs | Yes | Auto-repost / auto-plug on like threshold — channel **Plugs** tab, not create-post payload |
| Channel / post analytics | Yes | `analytics:platform` / `analytics:post` — likes, replies, reposts, quotes via public App View |
| Cross-post to other channels | Yes | Separate `-i` UUIDs per channel |
## Agent tasks
| User wants to… | JSON example |
| --- | --- |
| Post text only | [bluesky-text-only.json](./examples/bluesky-text-only.json) |
| Post with images | [bluesky-images.json](./examples/bluesky-images.json) |
| Schedule a follow-up reply | [bluesky-follow-up.json](./examples/bluesky-follow-up.json) |
| Check channel limits | `openquok integrations:settings "$BSKY_ID"` |
## Provider settings (`bluesky` bucket)
Use nested keys under `bluesky` in `--providerSettingsByIntegrationId` (matches composer and orchestrator).
| Key | Shape | When |
| --- | --- | --- |
| `bluesky.threadGate` | `"everyone"` \| `"mentioned"` \| `"following"` \| `"followers"` \| `"nobody"` | Who can reply (default `everyone`) |
| `bluesky.linkUrl` | HTTPS URL | Optional link card — text-only; optional `linkTitle`, `linkDescription` |
| `bluesky.quoteUrl` | `bsky.app` or AT post URI | Quote another post — not with media or link card |
| `bluesky.replies` | `[{ "id": "…", "message": "…", "delaySeconds": 60, "media": [...] }]` | Follow-up replies after the root post publishes |
No flat CLI aliases — compose settings and follow-ups use the `bluesky` bucket only.
### Reply media (`bluesky.replies[].media`)
Optional on each reply row. Same shapes as the main post. Upload first (Rule 2); the worker resolves `path` to a public URL before upload to the host.
- Up to four images or one MP4 per reply resources/command-reference.md
# OpenQuok CLI — command reference
Agent-oriented reference for `@openquok/auto-cli` (`openquok`). Hard rules, auth, and workflows live in [SKILL.md](../SKILL.md).
## Environment variables
| Variable | Required | Default | Description |
|----------|----------|---------|-------------|
| `OPENQUOK_API_KEY` | No* | — | Bearer `opo_` programmatic access token |
| `OPENQUOK_API_URL` | No | `https://api.openquok.com` | API base (`{OPENQUOK_API_URL}/api/v1/...`) |
| `OPENQUOK_AUTH_SERVER` | No | `https://cli-auth.openquok.com` | OAuth2 device-flow server (`/device/*`, `/health`) |
\*Either `OPENQUOK_API_KEY` or stored credentials from `openquok auth:login` is required. **Stored credentials take priority** over the env var until `auth:logout`.
## Config
```bash
openquok config:show
```
Prints resolved `api_url`, `auth_server_url`, deployment mode (`openquok_cloud` vs `custom`), and value sources — no secrets.
## Authentication
```bash
# Messaging agents (Telegram/Hermes) — two steps; do not use auth:login --json alone
openquok auth:login --json --no-poll
openquok auth:login:poll --device-code "<device_code from stdout>"
# CI / long-running shell — single process may use auth:login --json (polls until done)
openquok auth:login --json
openquok auth:login --apiKey "opo_…" # fallback when device flow cannot complete
openquok auth:status
openquok auth:workspace # { workspace: { id, name } } for current credentials
openquok auth:logout
```
- **Preference:** device OAuth before a programmatic token when the user can open a browser link.
- **Messaging hosts:** `--json --no-poll` then `auth:login:poll` after the user authorizes — otherwise credentials are never stored.
- **Agents:** forward `verification_uri_complete` from stdout only — never fabricate codes or URLs.
- **Humans with TTY:** `openquok auth:login` without `--json` is fine locally.
- **Session start:** see Rule 0 in [SKILL.md](../SKILL.md) — run version + `auth:status` (+ `auth:workspace` when connected) via shell before the first assistant message; greet as the OpenQuok bot, not the host persona.
- **Invalid or expired code:** Re-run `auth:login --json --no-poll` and `auth:login:poll` with a fresh `device_code` (~30 min).
## Integrations
```bash
# List all connected social channels (integration UUIDs)
openquok integrations:list
# List integrations belonging to a specific channel group (customer)
openquok integrations:list --group <customer-group-id>
# List all channel groups (customers) as {id, name}
openquok integrations:groups
# Get posting rules, character limits, and settings schema for an integration
openquok integrations:settings <integration-uuid>
# Trigger an allow-listed provider method to fetch dynamic data
openquok integrations:trigger <integration-uuid> <method-name> [--data '<json>' | -d '<json>']
```
- `integrations:groups` — channel groups (`integration_customers`); pass an `id` to `integrations:list --group`.
- `integrations:settings` — rules, `maxLeresources/devto-examples.md
# Dev.to (`devto`) — CLI examples
```bash
DEVTO_ID=$(openquok integrations:list | jq -r '.[] | select(.identifier=="devto") | .id')
openquok integrations:settings "$DEVTO_ID"
```
Connect the channel in the OpenQuok dashboard with a personal API key (DEV Settings → Extensions). There is no public OAuth start URL.
Run `integrations:settings` for `output.rules`, `output.maxLength`, typed `settingsSchema`, and allow-listed `output.tools` (`tags`, `organizations`).
Settings mechanics: [provider-settings.md](./provider-settings.md). JSON recipes: [examples/EXAMPLES.md](./examples/EXAMPLES.md#devto).
## Supported features
| Feature | Supported | Notes |
| --- | --- | --- |
| Markdown article body | Yes | Root `-c` caption (up to 100,000 characters) |
| Title | Yes | Required; min 2 characters (`title`) |
| Tags | Yes | Up to 4 names; strings or `{ value, label }` |
| Cover image | Yes | `main_image` / `mainImage` `{ path }` from a prior `upload` |
| Canonical URL | Yes | `canonical` (aliases `canonical_url`, `canonicalUrl`) |
| Organization | Yes | Numeric id from `integrations:trigger … organizations` |
| Series | Yes | Free-text `series`; Dev.to creates the series if missing |
| Tag / org lookup | Yes | `integrations:trigger` `tags` and `organizations` |
| Channel / article analytics | Yes | `analytics:platform` and `analytics:post` — page views, reactions, comments |
| Follow-up comments | No | Out of scope |
| Public OAuth connect | No | Dashboard API key only |
## Agent tasks
| User wants to… | JSON example |
| --- | --- |
| Schedule a markdown article with title and tags | [devto-article-title-tags.json](./examples/devto-article-title-tags.json) |
| Add the article to a series | [devto-series.json](./examples/devto-series.json) |
| Syndicate with a canonical URL | [devto-canonical.json](./examples/devto-canonical.json) |
| Publish under an organization with a cover | [devto-organization.json](./examples/devto-organization.json) |
| List tag suggestions | `openquok integrations:trigger "$DEVTO_ID" tags` |
| List organizations the key can publish under | `openquok integrations:trigger "$DEVTO_ID" organizations` |
| See the typed settings schema | `openquok integrations:settings "$DEVTO_ID"` |
| Track account performance | [Discover integration](#discover-integration) → `analytics:platform` |
| Inspect a published article | [Post insights](#post-insights) |
## Provider settings
Flat JSON on `--settings` or inside `--providerSettingsByIntegrationId` for the Dev.to UUID. Nested `devto.*` matches the web composer bucket.
| Key | Values | When |
| --- | --- | --- |
| `title` | string (min 2 chars) | Required for valid publish |
| `tags` | strings or `[{ "value": "…", "label": "…" }]` | Optional; max 4 |
| `canonical` | URL string | Optional syndication URL |
| `canonical_url` / `canonicalUrl` | URL string | Aliases for `canonical` |
| `organization` | integer id | Optional; from `organizations` tool |
| `organization_id` / `organizationId` | iAionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/ratimon/skills/openquok-core",
"sourceUrl": "https://clawhub.ai/ratimon/skills/openquok-core",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-10T21:52:28.097Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-ratimon-openquok-core/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-ratimon-openquok-core/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-10T21:52:28.097Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1.2K downloads",
"href": "https://clawhub.ai/ratimon/openquok-core",
"sourceUrl": "https://clawhub.ai/ratimon/openquok-core",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-10T21:52:28.097Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "1.0.9",
"href": "https://clawhub.ai/ratimon/openquok-core",
"sourceUrl": "https://clawhub.ai/ratimon/openquok-core",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-09-27T14:11:00.536Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-ratimon-openquok-core/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-ratimon-openquok-core/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 1.0.9",
"description": "openquok-core 1.0.9 - Added Bluesky support: new Bluesky example resources and content. - Expanded example coverage with new Bluesky follow-up, images, and text-only JSON templates. - Updated Instagram example files. - Cleaned up documentation; removed the deprecated skill-card.md file. - No core logic or workflow changes.",
"href": "https://clawhub.ai/ratimon/openquok-core",
"sourceUrl": "https://clawhub.ai/ratimon/openquok-core",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-09-27T14:11:00.536Z",
"isPublic": true
}
]
}Record generated Oct 10, 2026.
