首页龙虾技能列表 › Banana Claws — 技能工具

🍌 Banana Claws — 技能工具

v0.1.9

Generate images via OpenRouter API (文生图) with automation-ready local scripts and a queue-first workflow. Use for single images or batched variants...

0· 195·0 当前·0 累计
by @ironystock·MIT-0
下载技能包
License
MIT-0
最后更新
2026/3/14
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
high confidence
The skill's files, instructions, and requested credential (OPENROUTER_API_KEY) are consistent with its stated purpose (OpenRouter text→image generation); only minor implementation inconsistencies and operational caveats were found.
评估建议
This skill appears to do what it says: it enqueues image-generation jobs and calls OpenRouter using the OPENROUTER_API_KEY you supply. Before installing, verify: (1) you are comfortable giving your OpenRouter key to this skill and that you trust the OpenRouter provider; (2) you understand baseline images will be uploaded only when you pass --confirm-external-upload (do not confirm for sensitive local files); (3) the skill will create and use a local queue directory (generated/imagegen-queue) and...
详细分析 ▾
用途与能力
Name/description match the code and runtime instructions. The package contains local Python scripts that enqueue and run image-generation jobs and posts to OpenRouter. Required binary (python3) and the single required env var (OPENROUTER_API_KEY) are appropriate for this functionality.
指令范围
SKILL.md instructs using the included scripts, running preflight checks, queuing jobs, and draining a local queue. The instructions correctly warn that baseline images are transmitted only when confirm flags are set. Minor concerns: model defaults are inconsistent across docs and scripts (SKILL.md and enqueue scripts default to google/gemini-3.1-flash-image-preview while generate_image.py defaults to openai/gpt-5-image), and generate_image.py uses a hard-coded workspace-root default (/home/brad/.openclaw/workspace) which may not match the user's environment and affects baseline path validation.
安装机制
No install spec is provided (instruction-only skill). Only dependency is the widely used 'requests' Python package, which the SKILL.md documents to install. No external downloads, URL-shorteners, or archive extraction are present in the manifest.
凭证需求
Only one credential is required (OPENROUTER_API_KEY) and that matches the stated external provider. No other tokens, keys, or unrelated environment variables are requested. The scripts read this env var only to authenticate with OpenRouter as expected.
持久化与权限
always:false (normal). The skill spawns local background worker processes (via subprocess.Popen) and writes queue, processing, results, and handoff files under a local 'generated/imagegen-queue' directory; this is expected for a queue-first design but means the skill will create files and may leave background worker processes running. It does not modify other skills or global agent config.
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv0.1.92026/3/14

- Added homepage and user-invocable fields to skill metadata. - Updated metadata to include emoji icon and clarify required environment variables. - No changes made to usage or functional code; documentation/metadata updates only.

● 无害

安装命令 点击复制

官方npx clawhub@latest install banana-claws
镜像加速npx clawhub@latest install banana-claws --registry https://cn.clawhub-mirror.com

技能文档

Generate images from prompts using OpenRouter's image generation endpoint.

Requirements

  • OPENROUTER_API_KEY in environment
  • python3
  • Python package: requests

Install dependency:

python3 -m pip install requests

FTUX preflight (run first)

python3 {baseDir}/scripts/preflight_check.py
python3 {baseDir}/scripts/preflight_check.py --json

If checks fail, tell the user exactly what is missing and provide copy/paste fix steps from the Fixups output.

Default model

  • google/gemini-3.1-flash-image-preview
  • Optional alternatives (if enabled on your account): openai/gpt-5-image, openai/gpt-5-image-mini

Usage

python3 {baseDir}/scripts/generate_image.py \
  --prompt "A cinematic portrait of a cyberpunk crab" \
  --model google/gemini-3.1-flash-image-preview \
  --image-size low \
  --out ./generated/cyber-crab.png

Optional args:

--model openai/gpt-5-image
--model openai/gpt-5-image-mini
--image-size low|medium|high
--clarify-hints      # print prompt-quality hints to stderr
--strict-clarify     # fail fast when prompt appears underspecified
--baseline-image ./path/to/reference.png
--baseline-source-kind current_attachment|reply_attachment|explicit_path_or_url
--confirm-external-upload # required for local baseline file upload
--variation-strength low|medium|high
--must-keep "title placement"
--must-keep "logo mark"
--lock-palette
--lock-composition
--allow-no-baseline-on-edit-intent

Queue -> response pattern (avoid traffic jams)

When a user asks for multiple images/iterations, do not hold one long-running turn per image. Do not block waiting for a "single message with all files" if the adapter does not support it.

Hard contract for queue mode:

  • NEVER run run_image_queue.py in the same foreground turn as enqueue for multi-image requests.
  • ALWAYS enqueue + immediate queued ack first, then background handoff.

Use a queue + batched response flow:

  • Enqueue each requested image quickly.
  • Immediately return with a short "queued" acknowledgement (do not wait for generation in the same turn).
  • Drain queue in background (preferred: sub-agent/session worker).
  • Send one consolidated completion status response when done.
  • Always attach generated image files (never send only paths).
  • If the messaging adapter allows only one media per send, post attachments as reply-chain messages under the consolidated completion status message (one file per message).

Enqueue command:

python3 {baseDir}/scripts/enqueue_image_job.py \
  --prompt "A retro 80s crab poster" \
  --model google/gemini-3.1-flash-image-preview \
  --image-size low \
  --clarify-hints \
  --out ./generated/crab-01.png \
  --request-id "discord-"

Background queue handoff (recommended):

python3 {baseDir}/scripts/queue_and_return.py \
  --prompt "A minimalist snow crab logo" \
  --count 4 \
  --request-id "discord-" \
  --out-dir ./generated \
  --prefix crab-logo \
  --queue-dir ./generated/imagegen-queue

Manual drain command (worker context only; not same foreground turn):

python3 {baseDir}/scripts/run_image_queue.py \
  --queue-dir ./generated/imagegen-queue

# queue_and_return guardrails (optional tuning) python3 {baseDir}/scripts/queue_and_return.py \ --max-background-workers 2 \ --orphan-timeout-sec 1800 \ ...

Batch-enqueue N variants with consistent file names:

python3 {baseDir}/scripts/enqueue_variants.py \
  --prompt "A minimalist snow crab logo" \
  --count 4 \
  --baseline-image ./generated/base-logo.png \
  --variation-strength low \
  --lock-palette \
  --lock-composition \
  --must-keep "wordmark placement" \
  --must-keep "icon silhouette" \
  --out-dir ./generated \
  --prefix crab-logo \
  --request-id "discord-"

Useful options:

--max-jobs 3   # process only a subset for controlled batches
--start-index 5  # continue naming from prior batches

Data transmission notice (external provider)

  • This skill sends prompts and generated/edit inputs to OpenRouter (openrouter.ai).
  • If you pass --baseline-image, that image content is transmitted to the provider as part of the request.
  • Do not submit sensitive/private images unless the user explicitly approves external transmission.

Notes

  • If generation fails due to model/provider mismatch, retry with --model openai/gpt-5-image-mini.
  • Local baseline uploads are deny-by-default; pass --confirm-external-upload only when user explicitly approves sending that local file to provider.
  • Local baseline files are restricted to png/jpg/jpeg/webp, non-symlink regular files, workspace-local paths, and max size threshold.
  • For iterative work, prefer --image-size low; switch to medium or high for final renders.
  • Use --clarify-hints to surface prompt-quality gaps early; use --strict-clarify for workflows that must fail on ambiguity.
  • Keep prompts explicit for text rendering tasks.
  • Save outputs into workspace paths, not /tmp, for durability.
  • When user asks for generated images in chat, attach the generated file in the response (do not only send a path).
  • For queue mode, read results from:
- .../imagegen-queue/results/.json (success) - .../imagegen-queue/failed/.json (failure details)
  • Edit/variant intent prompts fail fast if no baseline is supplied (--baseline-image) unless explicitly overridden.
  • Resolve baseline deterministically in caller: current-message attachment > replied-message attachment > clarification request.
  • Pass --baseline-source-kind current_attachment|reply_attachment|explicit_path_or_url for auditable provenance.
  • When baseline is supplied, rails default to low-variation + locked palette/composition unless explicitly changed.
  • Queue results persist provider metadata (generation id + provider response payload/path) and drift diagnostics (edit_intent_detected, baseline_applied, baseline_source, baseline_source_kind, baseline_resolution_policy, rails_applied) to help edits/debugging and smarter agent continuation.
  • Queue worker writes handoff_mode + same_turn_drain_detected so you can enforce true async behavior in tests/ops.
  • enqueue_variants.py writes -manifest.json with baseline, constraints, variant deltas, and output targets for reproducible reruns.
数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务