Token导航 LogoToken导航

Agent Skill · 开发

clawver-print-on-demand(按需爪印)

clawver-print-on-demand 用于补充开发相关能力,适合在 OpenClaw 中需要让 Agent 承接开发相关任务时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

clawver-print-on-demand 是开发类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为接触敏感数据;许可证为 MIT-0,第三方扫描已通过,按安装量在开发类的 21,746 个 Skill 里排第 821。

总安装 56,164周安装 2,317GitHub Stars 1下载 18,351核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT-0
版本
1.0.12

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:clawver-print-on-demand(按需爪印)
来源仓库:https://github.com/nwang783/clawver-print-on-demand
安装命令:
openclaw skills install clawver-print-on-demand
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install clawver-print-on-demand

这个 Skill 是做什么的

开发类 Skill 面向写代码、改代码和排查问题,一般会读写仓库文件,部分还会执行构建或测试命令。

clawver-print-on-demand 用于在 Clawver 上销售按需印刷商品,支持浏览 Printful 目录和管理产品变体。适合在 OpenClaw 中需要销售实物产品或管理供应链时使用。

通过 clawhub 安装,命令为 openclaw skills install clawver-print-on-demand。使用前需确认权限范围和维护状态,注意可能涉及外部 API 调用或订单跟踪。建议结合来源仓库和 README 文档进一步核验具体功能和使用细节。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 OpenClaw;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 openclaw skills install clawver-print-on-demand;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要接触敏感数据,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

clawver-print-on-demand 怎么安装?

在终端执行 openclaw skills install clawver-print-on-demand。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

clawver-print-on-demand 支持哪些 AI 工具?

公开资料标注支持 OpenClaw。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

clawver-print-on-demand 需要什么权限?

权限级别是接触敏感数据。该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

clawver-print-on-demand 是免费的吗?

来源标注的许可证是 MIT-0。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

clawver-print-on-demand 用的人多吗?

公开数据是累计安装 56,164 次,近一周安装 2,317 次,下载 18,351 次,GitHub 1 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

clawver-print-on-demand 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 需要接触敏感数据,装到常用环境前要先评估影响面。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 OpenClaw,想直接扩展它能力的人。
  • 需要处理开发类任务、又不想每次都手写提示词的人。
  • 需要许可证清楚、并且有第三方扫描结果的团队项目。

不太适合

  • 环境里有大量密钥、凭证,不方便给第三方 Skill 读取的人。
  • 需要厂商级技术支持和 SLA 的生产系统。

开发类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
skill-vetter

技能审查员 · OpenClaw

8,779,018986操作浏览器MIT-0通过
ontology

本体论 · OpenClaw

6,636,960576只读MIT-0通过
entra-app-registration

内部应用程序注册 · Codex、Claude

6,631,872764接触敏感数据未明确通过
entra-app-registration

内部应用程序注册 · Codex、Claude

3,757,680201接触敏感数据未明确通过
nano-banana-pro

纳米香蕉专业版 · OpenClaw

3,526,898364接触敏感数据MIT-0有提醒
clawver-print-on-demand

按需爪印 · 本页

56,1641接触敏感数据MIT-0通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

name
clawver-print-on-demand
description
Sell print-on-demand merchandise on Clawver. Browse Printful catalog, create product variants, track fulfillment and shipping. Use when selling physical products like posters, t-shirts, mugs, or apparel.
version
1.3.1
homepage
https://clawver.store
metadata
{"openclaw":{"emoji":"👕","homepage":"https://clawver.store","requires":{"env":["CLAW_API_KEY"]},"primaryEnv":"CLAW_API_KEY"}}

Clawver Print-on-Demand

Sell physical merchandise on Clawver using Printful integration. No inventory required—products are printed and shipped on demand when customers order.

Recommended Agent Path: Product Artisan First

If your goal is "make me a good POD product on Clawver," prefer the Product Artisan workflow before dropping to the raw POD endpoints below.

Use Product Artisan when you want the platform to handle:

  • brief clarification
  • product and blank selection
  • plan approval before credits are spent
  • automatic draft creation after plan approval
  • automatic design generation and mockup generation after plan approval
  • publish-ready proposal assembly
  • final publish confirmation

Core Artisan endpoints:

# Start a new artisan session
curl -X POST https://api.clawver.store/v1/artisan/sessions \
  -H "Authorization: Bearer $CLAW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "Create a premium oversized vintage Japanese streetwear tee with a quiet front and statement back."
  }'
# Approve the plan and let the automatic pipeline run
curl -X PATCH https://api.clawver.store/v1/artisan/sessions/{sessionId} \
  -H "Authorization: Bearer $CLAW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "Approve the plan and continue."
  }'
# Stream active turn progress via SSE
curl -N \
  -H "Authorization: Bearer $CLAW_API_KEY" \
  -H "Accept: text/event-stream" \
  "https://api.clawver.store/v1/artisan/sessions/{sessionId}/events"

Structured fields to inspect:

  • awaitingDecision: current checkpoint (plan_approval, publish_confirmation)
  • agentGuidance: structured next-step hints
  • proposedPlan: machine-readable plan before approval
  • approvedPlan: plan after approval
  • activeStep: current server-side operation label while processing
  • mostRecentToolEvent: latest summarized tool result for progress UIs

SSE Event Reference

The /events endpoint emits the following Server-Sent Event types:

EventWhenPayload
session.snapshotFirst event after connectionFull ArtisanSessionResponse
session.stateSession state changed (new status, progress update, etc.)Full ArtisanSessionResponse
session.completeProcessing finished; session is waiting for input or terminal{ sessionId, status, awaitingDecision }
session.errorError or stream timeout{ code, message }

Important SSE notes:

  • The stream has a max duration of ~20 minutes. If you receive a STREAM_TIMEOUT error, reconnect or switch to polling.
  • Keep-alive comments (: keep-alive) are sent every 15 seconds. If you stop receiving them, the connection may have dropped.
  • After receiving session.complete, close your connection and inspect awaitingDecision to decide your next action.

Understanding Progress Fields

When status is "processing", inspect these response fields:

FieldExampleMeaning
currentOperation"design_generation"High-level operation category
progressStage"generating_design"Granular stage: starting, thinking, catalog_lookup, creating_product, generating_design, polling_design, generating_mockup
progressSubstep"waiting_for_image_provider"Human-readable sub-step within the stage
progressHint"Generating design…"Display-friendly message
estimatedWaitMs45000Estimated time for the current stage (design/mockup generation ~45s, catalog lookup ~12s, thinking ~8s)
estimatedCompletionAt"2025-..."ISO timestamp of estimated completion
retryAfterMs5000Suggested poll interval when not using SSE

awaitingDecision Values

ValueWhat to do
plan_approvalReview proposedPlan and send approval or revision
publish_confirmationConfirm publish to make the product live

When status is "processing", check pendingAwaitingDecision — it shows what decision will be required once processing completes.

Simple Artisan Flow

  1. Start the session with a concrete product brief.
  2. Wait for awaitingDecision = "plan_approval" and inspect proposedPlan.
  3. Approve the plan with a PATCH /v1/artisan/sessions/{sessionId} message. This automatically kicks off draft creation, design generation, mockup generation, and publish-ready proposal assembly.
  4. Wait for awaitingDecision = "publish_confirmation", review proposal.products[].designs for the mockup-backed draft, then publish only if the caller wants it live.

Session Lifecycle

  • sessionExpiresAt in every response shows when the session will expire (1 hour from last activity).
  • sessionTtlMs shows the TTL in milliseconds.
  • Expired sessions cannot be resumed; start a new session.

Simplified Publish Response

After publish, the response includes convenience fields:

  • productId: the published product ID
  • productUrl: direct link to the product (currently null; use proposal.products[0].productId to construct the URL)
  • mockupUrls: { "front": "https://...", "back": "https://..." } extracted from proposal.products[].designs

Operational advice for agent clients:

  • Prefer SSE during active turns; fall back to polling if SSE drops
  • Use retryAfterMs from the response as your poll interval (typically 5s)
  • In the standard happy path, there are only two explicit caller approvals: plan approval and publish confirmation
  • Plan approval is not just advisory; it starts the automatic production pipeline for the approved blank and variants
  • Check estimatedWaitMs for realistic wait time estimates per stage

Use the raw POD APIs below when you need manual control over catalog selection, design uploads, or custom fulfillment flows.

Prerequisites

  • CLAW_API_KEY environment variable
  • Stripe onboarding completed
  • High-resolution design files as HTTPS URLs or base64 data (the platform stores them — no external hosting required; optional but highly recommended)

For platform-specific good and bad API patterns from claw-social, use references/api-examples.md.

How Print-on-Demand Works

  1. You create a product with Printful product/variant IDs
  2. Customer purchases on your store
  3. Printful prints and ships directly to customer
  4. You keep the profit margin (your price - Printful base cost - 2% platform fee)

Key Concepts (Read This First)

Printful IDs Are Strings

printOnDemand.printfulProductId and printOnDemand.printfulVariantId must be strings (e.g. "1", "4013"), even though the Printful catalog returns numeric IDs.

Variants Are Required For Activation

When publishing a print_on_demand product (PATCH /v1/products/{id} {"status":"active"}), your product must have a non-empty printOnDemand.variants array configured.

Uploading Designs Is Optional (But Highly Recommended)

You can sell POD products without uploading design files (legacy / external sync workflows), but uploading designs is highly recommended because it enables:

  • Attaching design files to orders (when configured)
  • Mockup generation for storefront images
  • Better operational reliability and fewer fulfillment surprises

If you want the platform to enforce design uploads before activation and at fulfillment time, set metadata.podDesignMode to "local_upload".

Variant Strategy for Size Selection

When you sell multiple sizes, define one entry per size in printOnDemand.variants.

  • Each variant maps to a buyer-facing size option in the storefront.
  • Use explicit priceInCents per variant when size-based pricing differs.
  • Include optional fields when available: size, inStock, availabilityStatus.
  • Prefer buyer-friendly name values such as "Bella + Canvas 3001 / XL".

Pricing Behavior

  • Storefront, cart, and checkout use the selected variant's priceInCents when provided.
  • Legacy products with only printOnDemand.printfulVariantId fall back to product-level priceInCents.

Stock Visibility

  • Out-of-stock variants are disabled in the storefront size selector.
  • Out-of-stock variants (inStock: false) are rejected at checkout (HTTP 400).
  • Keep variant stock metadata updated (inStock, availabilityStatus) so buyer-facing availability remains accurate.

Browse the Printful Catalog

  1. List catalog products:
curl "https://api.clawver.store/v1/products/printful/catalog?q=poster&limit=10" \
  -H "Authorization: Bearer $CLAW_API_KEY"
  1. Get variants for a Printful product:
curl "https://api.clawver.store/v1/products/printful/catalog/1?inStock=true&limit=10" \
  -H "Authorization: Bearer $CLAW_API_KEY"

Create a POD Product

Step 1: Create the Product (Draft)

curl -X POST https://api.clawver.store/v1/products \
  -H "Authorization: Bearer $CLAW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "AI Studio Tee",
    "description": "Soft premium tee with AI-designed front print.",
    "type": "print_on_demand",
    "priceInCents": 2499,
    "images": ["https://your-storage.com/tee-preview.jpg"],
    "printOnDemand": {
      "printfulProductId": "71",
      "printfulVariantId": "4012",
      "variants": [
        {
          "id": "tee-s",
          "name": "Bella + Canvas 3001 / S",
          "priceInCents": 2499,
          "printfulVariantId": "4012",
          "size": "S",
          "inStock": true
        },
        {
          "id": "tee-m",
          "name": "Bella + Canvas 3001 / M",
          "priceInCents": 2499,
          "printfulVariantId": "4013",
          "size": "M",
          "inStock": true
        },
        {
          "id": "tee-xl",
          "name": "Bella + Canvas 3001 / XL",
          "priceInCents": 2899,
          "printfulVariantId": "4014",
          "size": "XL",
          "inStock": false,
          "availabilityStatus": "out_of_stock"
        }
      ]
    },
    "metadata": {
      "podDesignMode": "local_upload"
    }
  }'

Required for POD creation/publishing:

  • printOnDemand.printfulProductId (string)
  • printOnDemand.printfulVariantId (string)
  • printOnDemand.variants (must be non-empty to publish)

Optional but recommended:

  • metadata.podDesignMode: "local_upload" to enforce design uploads before activation and at fulfillment time

Before publishing, validate:

  • printOnDemand.variants is non-empty
  • each variant has a unique printfulVariantId
  • variant priceInCents aligns with your margin strategy
  • optional size is normalized (S, M, L, XL, etc.) when available
  • inStock is accurate per variant—out-of-stock variants are rejected at checkout

Step 2 (Optional, Highly Recommended): Upload POD Design File

Upload one or more design files to the product. These can be used for previews and for fulfillment (depending on podDesignMode).

Option A: Upload from URL

curl -X POST https://api.clawver.store/v1/products/{productId}/pod-designs \
  -H "Authorization: Bearer $CLAW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "fileUrl": "https://your-storage.com/design.png",
    "fileType": "png",
    "placement": "default",
    "variantIds": ["4012", "4013", "4014"]
  }'

Option B: Upload base64 data

curl -X POST https://api.clawver.store/v1/products/{productId}/pod-designs \
  -H "Authorization: Bearer $CLAW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "fileData": "iVBORw0KGgoAAAANSUhEUgAA...",
    "fileType": "png",
    "placement": "default"
  }'

Notes:

  • placement is typically "default" unless you know the Printful placement name (e.g. front, back for apparel).
  • Use variantIds to map a design to specific variants (strings). If omitted, the platform will fall back to the first eligible design for fulfillment and previews.

Option C: Generate a design file with AI (credit-gated)

curl -X POST https://api.clawver.store/v1/products/{productId}/pod-design-generations \
  -H "Authorization: Bearer $CLAW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Minimal monochrome tiger head logo with bold clean lines",
    "placement": "front",
    "variantId": "4012",
    "idempotencyKey": "podgen-1"
  }'

curl https://api.clawver.store/v1/products/{productId}/pod-design-generations/{generationId} \
  -H "Authorization: Bearer $CLAW_API_KEY"

Use idempotencyKey for retry safety. Identical retries reuse the same generation task; conflicting payloads return validation errors.

Step 3 (Optional, Recommended): Generate Seeded AI Mockups

Use the seeded AI flow so another agent can execute with consistent grounding: 1) preflight to resolve compatible inputs, 2) read data.recommendedRequest and reuse those exact values, 3) call ai-mockups (which first generates a real Printful seed mockup), 4) poll generation status, 5) approve a candidate for storefront use.

# 3a) Preflight and extract recommendedRequest
PREFLIGHT=$(curl -sS -X POST https://api.clawver.store/v1/products/{productId}/pod-designs/{designId}/mockup/preflight \
  -H "Authorization: Bearer $CLAW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "variantId": "4012",
    "placement": "front"
  }')
echo "$PREFLIGHT" | jq '.data.recommendedRequest'
REC_VARIANT_ID=$(echo "$PREFLIGHT" | jq -r '.data.recommendedRequest.variantId')
REC_PLACEMENT=$(echo "$PREFLIGHT" | jq -r '.data.recommendedRequest.placement')
REC_TECHNIQUE=$(echo "$PREFLIGHT" | jq -r '.data.recommendedRequest.technique // empty')

# 3b) Generate seeded AI mockups
# Internal order of operations: Printful seed first, then GenAI candidates.
curl -X POST https://api.clawver.store/v1/products/{productId}/pod-designs/{designId}/ai-mockups \
  -H "Authorization: Bearer $CLAW_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"variantId\": \"$REC_VARIANT_ID\",
    \"placement\": \"$REC_PLACEMENT\",
    \"idempotencyKey\": \"ai-mockup-1\",
    \"promptHints\": {
      \"printMethod\": \"$REC_TECHNIQUE\",
      \"safeZonePreset\": \"apparel_chest_standard\"
    }
  }"

# 3c) Poll generation status
curl https://api.clawver.store/v1/products/{productId}/pod-designs/{designId}/ai-mockups/{generationId} \
  -H "Authorization: Bearer $CLAW_API_KEY"

# 3d) Approve chosen candidate and persist product mockup
curl -X POST https://api.clawver.store/v1/products/{productId}/pod-designs/{designId}/ai-mockups/{generationId}/approve \
  -H "Authorization: Bearer $CLAW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"candidateId":"cand_white","mode":"primary_and_append"}'

If you need a non-AI deterministic path, use the direct Printful task endpoints:

  • POST /v1/products/{productId}/pod-designs/{designId}/mockup-tasks
  • GET /v1/products/{productId}/pod-designs/{designId}/mockup-tasks/{taskId}
  • POST /v1/products/{productId}/pod-designs/{designId}/mockup-tasks/{taskId}/store

When calling mockup-tasks, pass the same REC_VARIANT_ID, REC_PLACEMENT, and REC_TECHNIQUE. If task creation or polling returns 429/RATE_LIMITED, retry with exponential backoff and jitter.

Step 4: Publish

Publishing requires a non-empty printOnDemand.variants array. If metadata.podDesignMode is "local_upload", you must upload at least one design before activating.

curl -X PATCH https://api.clawver.store/v1/products/{productId} \
  -H "Authorization: Bearer $CLAW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"status": "active"}'

Note: POD products must have printOnDemand.variants configured before activation.

Manage POD Designs

List Designs

curl https://api.clawver.store/v1/products/{productId}/pod-designs \
  -H "Authorization: Bearer $CLAW_API_KEY"

Get a Signed Preview URL (Owner)

curl https://api.clawver.store/v1/products/{productId}/pod-designs/{designId}/preview \
  -H "Authorization: Bearer $CLAW_API_KEY"

Public Preview (Active Products)

If the product is active, you can request a public preview (no API key). This will attempt to generate a Printful mockup and fall back to returning a signed source image URL if mockup generation fails.

curl https://api.clawver.store/v1/products/{productId}/pod-designs/{designId}/public-preview

Update Design Metadata

curl -X PATCH https://api.clawver.store/v1/products/{productId}/pod-designs/{designId} \
  -H "Authorization: Bearer $CLAW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Front artwork v2",
    "placement": "default",
    "variantIds": ["4012", "4013", "4014"]
  }'

Archive a Design

curl -X DELETE https://api.clawver.store/v1/products/{productId}/pod-designs/{designId} \
  -H "Authorization: Bearer $CLAW_API_KEY"

Track Fulfillment

Monitor Order Status

curl "https://api.clawver.store/v1/orders?status=processing" \
  -H "Authorization: Bearer $CLAW_API_KEY"

POD order statuses:

  • confirmed - Payment confirmed (order status)
  • processing - Sent to Printful for production
  • shipped - In transit with tracking
  • delivered - Delivered to customer

paymentStatus is tracked separately (paid, partially_refunded, etc.).

Get Tracking Information

curl https://api.clawver.store/v1/orders/{orderId} \
  -H "Authorization: Bearer $CLAW_API_KEY"

Response includes trackingUrl and trackingNumber when available.

Webhook for Shipping Updates

curl -X POST https://api.clawver.store/v1/webhooks \
  -H "Authorization: Bearer $CLAW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://your-server.com/webhook",
    "events": ["order.shipped"],
    "secret": "your-secret-min-16-chars"
  }'

平台分布

OpenClaw

74.31%
按下载量换算13,637

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

通过

权限和风险

接触敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills