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.
docs/adapters/ before running generation or workflow commands.If platform detection is ambiguous, ask the user which platform they are using. If the platform is unsupported, use docs/adapters/others.md.
PlatformAdapter documentOpenClawdocs/adapters/openclaw.mdClaude Codedocs/adapters/claude-code.mdHermes Agentdocs/adapters/hermes.mdUnknown / unsupported platformdocs/adapters/others.md
python3 scripts/artclaw.py ....python3 scripts/artclaw.py verify-key before authenticated operations.run_in_background: true so /tasks can track the local background task. DO NOT manually poll with job-status after the background task completes — the background task already polls internally and returns the final result in its output.--no-wait by default unless the selected adapter explicitly defines a different async strategy or the user explicitly asks the agent to wait.--spawn instead of --no-wait.docs/adapters/ and followed strictly.Run this before authenticated operations:
bash
python3 scripts/artclaw.py verify-key
{"status": "valid"}: continue.Setup:
vk_ and is shown only once.bash
python3 scripts/artclaw.py config-init --api-key "vk_xxx"
Useful account commands:
bash
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 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:
--spawn.run_in_background: true when available.--no-wait — unless the adapter defines its own background strategy (e.g. Hermes uses background terminal; see adapter doc).bash
python3 scripts/artclaw.py generate-image \
--prompt "Cyberpunk cityscape at night, neon lights reflected in rainwater" \
--aspect-ratio 16:9 \
--no-wait
With references:
bash
python3 scripts/artclaw.py generate-image \
--prompt "Landscape painting in the same style" \
--reference-urls https://example.com/style_ref.jpg \
--no-wait
ParameterDescriptionValues--promptImage description, requiredText--aspect-ratioAspect ratio16:9, 9:16, 1:1, 4:3, 21:9``--resolutionResolution1K, 2K, 4K``--reference-urlsReference image URLs or base64 data URIsOne or more values--reference-filesLocal reference files, auto-converted to base64One or more paths--modelModel overrideModel ID
bash
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:
bash
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
ParameterDescriptionValues--promptVideo description, requiredText--aspect-ratioAspect ratio16:9, 9:16, 1:1, 4:3, 21:9``--durationDuration in seconds2 - 12``--resolutionResolution480p, 720p, 1080p``--reference-urlsReference image URLs or base64 data URIsOne or more values--reference-filesLocal reference image files, auto-convertedOne or more paths--modelModel overrideModel ID
bash
python3 scripts/artclaw.py generate-marketing-image \
--prompt "Summer cool drinks promotional poster" \
--size 1080x1920 \
--no-wait
bash
python3 scripts/artclaw.py list-workflows
bash
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 are synchronous. They do not require --spawn or background execution.
bash
python3 scripts/artclaw.py analyze-image \
--reference-urls https://example.com/photo.jpg \
--query "Describe the main content of this image"
bash
python3 scripts/artclaw.py analyze-video \
--reference-urls https://example.com/clip.mp4 \
--query "Summarize the video content"
bash
python3 scripts/artclaw.py analyze-script \
--reference-paths https://example.com/drama.mp4
bash
python3 scripts/artclaw.py analyze-characters \
--text "Li Ming is an introverted but brilliant programmer..."
bash
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.
ErrorCauseResolution401 UnauthorizedAPI key invalid, missing, or revokedGuide user to regenerate the key402 / insufficient creditsAccount balance depletedGuide user to top up at https://artclaw.com/settings404 Job not foundJob ID does not exist or expired after 24hTell user the job expired and ask whether to regenerate404 Workflow not foundWorkflow does not existRun list-workflows first429 Too Many RequestsRate limit exceededWait and retry
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 valueSourceFeishu group chatfeishu``oc_xxx chat IDconversation_label or chat_id, strip chat: prefixFeishu direct messagefeishu``ou_xxx open IDsender_id, strip user: prefixTelegramtelegram``chat_idInbound message contextDiscorddiscord``channel_idInbound message context
For Feishu, check is_group_chat in inbound metadata: true → use oc_ chat ID; false → use ou_ open ID.
ChannelCredential sourcefeishu``~/.openclaw/openclaw.json → channels.feishu.accounts.main``telegram``TELEGRAM_BOT_TOKEN environment variablediscordFramework built-in message tool
bash
python3 scripts/artclaw.py self-update
Preview without writing files:
bash
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.