ARTCLAW AI Creative Suite
ARTCLAW is an all-in-one AI content creation platform. This skill uses scripts/artclaw.py as the single CLI entry point for authentication, submission, polling, retry, history, and JSON output.
Mandatory Startup Flow
- Detect the current agent platform.
- Read exactly one matching adapter document from
docs/adapters/before running generation or workflow commands. - Run the pre-flight API key check before authenticated operations.
- Never mix execution rules from multiple adapters.
If platform detection is ambiguous, ask the user which platform they are using. If the platform is unsupported, use docs/adapters/others.md.
Platform Adapter Map
| Platform | Adapter document |
|---|---|
| OpenClaw | docs/adapters/openclaw.md |
| Claude Code | docs/adapters/claude-code.md |
| Hermes Agent | docs/adapters/hermes.md |
| Unknown / unsupported platform | docs/adapters/others.md |
Universal Rules
- Use the CLI, not raw curl:
python3 scripts/artclaw.py .... - Run
python3 scripts/artclaw.py verify-keybefore authenticated operations. - Generation and workflow commands are long-running and must not block the main agent silently.
- In Claude Code, prefer Bash
run_in_background: trueso/taskscan track the local background task. DO NOT manually poll withjob-statusafter the background task completes — the background task already polls internally and returns the final result in its output. - In non-spawn platforms, use
--no-waitby default unless the selected adapter explicitly defines a different async strategy or the user explicitly asks the agent to wait. - In OpenClaw-compatible spawn platforms, use
--spawninstead of--no-wait. - Immediately tell the user after a generation/workflow job is submitted or a background task is started.
- Analysis commands are synchronous and do not require spawn/background execution.
- Guide users to https://artclaw.com/settings for API key creation and credit top-up.
- Deliver generated media as native platform messages when the adapter supports it; otherwise return the result URL and job metadata.
- Platform-specific async behavior, delivery semantics, and anti-blocking rules must be defined only in the selected adapter document under
docs/adapters/and followed strictly.
API Key & Account
Run this before authenticated operations:
python3 scripts/artclaw.py verify-key
{"status": "valid"}: continue.- Missing, invalid, or revoked key: stop and guide the user to configure a key.
Setup:
- Open https://artclaw.com/settings.
- Create an API key in the API Keys section.
- Copy the generated key. It is prefixed with
vk_and is shown only once. - Configure locally:
python3 scripts/artclaw.py config-init --api-key "vk_xxx"
Useful account commands:
python3 scripts/artclaw.py account-info
python3 scripts/artclaw.py config
All local ARTCLAW data is stored under ~/.artclaw/, including config.json, last_job.json, and history/.
Generation Commands
Generation and workflow commands are long-running. Always follow the current platform adapter before choosing --spawn, Claude Code run_in_background, --no-wait, or explicit waiting.
Safe default:
- OpenClaw-compatible adapters use
--spawn. - Claude Code uses Bash
run_in_background: truewhen available. - Other non-spawn adapters use
--no-wait— unless the adapter defines its own background strategy (e.g. Hermes uses background terminal; see adapter doc). - Only omit both when the user explicitly asks the agent to wait for completion.
Generate Image
python3 scripts/artclaw.py generate-image \
--prompt "Cyberpunk cityscape at night, neon lights reflected in rainwater" \
--aspect-ratio 16:9 \
--no-wait
With references:
python3 scripts/artclaw.py generate-image \
--prompt "Landscape painting in the same style" \
--reference-urls https://example.com/style_ref.jpg \
--no-wait
| Parameter | Description | Values |
|---|---|---|
--prompt | Image description, required | Text |
--aspect-ratio | Aspect ratio | 16:9, 9:16, 1:1, 4:3, 21:9 |
--resolution | Resolution | 1K, 2K, 4K |
--reference-urls | Reference image URLs or base64 data URIs | One or more values |
--reference-files | Local reference files, auto-converted to base64 | One or more paths |
--model | Model override | Model ID |
Generate Video
python3 scripts/artclaw.py generate-video \
--prompt "Waves crashing on rocks, slow motion" \
--aspect-ratio 16:9 \
--duration 5 \
--resolution 720p \
--no-wait
Image-to-video:
python3 scripts/artclaw.py generate-video \
--prompt "Make the person in the frame turn their head and smile" \
--reference-urls https://example.com/portrait.jpg \
--no-wait
| Parameter | Description | Values |
|---|---|---|
--prompt | Video description, required | Text |
--aspect-ratio | Aspect ratio | 16:9, 9:16, 1:1, 4:3, 21:9 |
--duration | Duration in seconds | 2 - 12 |
--resolution | Resolution | 480p, 720p, 1080p |
--reference-urls | Reference image URLs or base64 data URIs | One or more values |
--reference-files | Local reference image files, auto-converted | One or more paths |
--model | Model override | Model ID |
Generate Marketing Image
python3 scripts/artclaw.py generate-marketing-image \
--prompt "Summer cool drinks promotional poster" \
--size 1080x1920 \
--no-wait
Execute Workflow
python3 scripts/artclaw.py list-workflows
python3 scripts/artclaw.py run-workflow \
--workflow-id "text-to-image-basic" \
--inputs '{"prompt": "Anime-style forest"}' \
--no-wait
Replace --no-wait with --spawn, --deliver-to, and --deliver-channel only when the current platform adapter says to do so.
Analysis Commands
Analysis commands are synchronous. They do not require --spawn or background execution.
Image Analysis
python3 scripts/artclaw.py analyze-image \
--reference-urls https://example.com/photo.jpg \
--query "Describe the main content of this image"
Video Analysis
python3 scripts/artclaw.py analyze-video \
--reference-urls https://example.com/clip.mp4 \
--query "Summarize the video content"
Script Extraction
python3 scripts/artclaw.py analyze-script \
--reference-paths https://example.com/drama.mp4
Character Profiles
python3 scripts/artclaw.py analyze-characters \
--text "Li Ming is an introverted but brilliant programmer..."
Job Management & Errors
python3 scripts/artclaw.py job-status --job-id "job_xxxxxxxx"
python3 scripts/artclaw.py list-jobs --status success --limit 10
python3 scripts/artclaw.py cancel-job --job-id "job_xxxxxxxx"
python3 scripts/artclaw.py last-job
python3 scripts/artclaw.py history --limit 50
Use job-status, last-job, and history for follow-up instead of resubmitting generation requests. There is no latest-job command.
| Error | Cause | Resolution |
|---|---|---|
401 Unauthorized | API key invalid, missing, or revoked | Guide user to regenerate the key |
402 / insufficient credits | Account balance depleted | Guide user to top up at https://artclaw.com/settings |
404 Job not found | Job ID does not exist or expired after 24h | Tell user the job expired and ask whether to regenerate |
404 Workflow not found | Workflow does not exist | Run list-workflows first |
429 Too Many Requests | Rate limit exceeded | Wait and retry |
Delivery Targets
Use delivery options only when the platform adapter supports spawn/delivery mode.
--spawn must be paired with both --deliver-to and --deliver-channel.
| Scenario | --deliver-channel | --deliver-to value | Source |
|---|---|---|---|
| Feishu group chat | feishu | oc_xxx chat ID | conversation_label or chat_id, strip chat: prefix |
| Feishu direct message | feishu | ou_xxx open ID | sender_id, strip user: prefix |
| Telegram | telegram | chat_id | Inbound message context |
| Discord | discord | channel_id | Inbound message context |
For Feishu, check is_group_chat in inbound metadata: true → use oc_ chat ID; false → use ou_ open ID.
| Channel | Credential source |
|---|---|
feishu | ~/.openclaw/openclaw.json → channels.feishu.accounts.main |
telegram | TELEGRAM_BOT_TOKEN environment variable |
discord | Framework built-in message tool |
Self Update
python3 scripts/artclaw.py self-update
Preview without writing files:
python3 scripts/artclaw.py self-update --dry-run
Downloads https://github.com/ArtClaw1/artclaw-skill/archive/refs/heads/main.zip, atomically applies added or modified files, and reports a JSON summary. Does not delete local-only files.