MoonWork CLI

MoonWork CLI 接入指南

为运营团队、开发者和第三方 Agent 提供统一的命令行入口,用同一套命令完成内容生成、指纹浏览器环境准备和长任务交接。

快速开始

$ npm install -g @moonwork-labs/cli
$ moonwork login --email you@example.com --password-stdin
$ moonwork whoami
$ moonwork --help

使用场景

团队直接使用,也可以交给 Agent 调用

运营和开发团队可以按工作流查看命令示例;Agent 接入时则重点关注安装登录、JSON 输出、长任务轮询和浏览器会话交接。

生成内容

通过同一套命令生成商品文案、商品图片和商品视频。

指纹浏览器基础设施

围绕代理、平台账号、Profile、启动和自动填充建立稳定操作链路。

稳定接入

同一套命令既适合团队手动执行,也适合第三方 Agent 集成调用。

开始使用

安装与登录

首次使用 MoonWork CLI 时,先完成安装和账号登录,再进入内容生成或浏览器会话等具体工作流。

安装 MoonWork CLI

将 CLI 安装到本机、服务器、容器,或任何可执行 shell 命令的 Agent 运行环境。

npm install -g @moonwork-labs/cli

登录当前账号

登录后,内容生成和指纹浏览器相关命令都会在当前账号权限范围内执行。

moonwork login --email you@example.com --password-stdin

给 Agent 的补充说明

如果由 Codex、Claude Code、Cursor 或自研 Agent 调用,建议使用 access token,并通过 stdin 传入,避免 token 留在 shell 历史中。
moonwork login --token-stdin

内容生成

生成商品文案、图片与视频

内容生成是最直接的起步工作流。建议先验证素材、平台和语言参数,再逐步增加更复杂的任务组合。

商品文案

用于生成标题、卖点、描述和 Listing 文案。文案任务响应更快,适合优先验证账号、素材和输出链路。

  • 最少需要商品图片、商品名称、平台和语言。
  • 供 Agent 调用时,建议默认增加 --json。
  • 如果图片已经在后端存在,可以换成 --image-asset。
moonwork generate-copy \
  --product-name "Outdoor Knife" \
  --product-image ./product.jpg \
  --product-info "A folding outdoor knife with black handle and metallic blade." \
  --platform AMZ \
  --language English \
  --json

商品图片

按任务类型生成白底图、英雄图、对比图等素材。需要保存结果文件时,建议同时使用 --wait 和 --output-dir。

  • 图片任务通常比视频更快完成。
  • 如果服务商返回失败,CLI 会先给出可读错误,再补充任务 id 或请求 id。
  • 建议先从单任务试跑,再逐步增加组合任务。
moonwork generate-image \
  --product-image ./product.jpg \
  --product-name "Outdoor Knife" \
  --product-info "A folding outdoor knife with black handle and metallic blade." \
  --platform TK \
  --language English \
  --ratio 9:16 \
  --resolution 1080x1920 \
  --task hero \
  --wait \
  --output-dir ./moonwork-results

商品视频

用于商品展示、开箱、口播等视频任务。视频生成耗时更长,等待体验和轮询策略比图片任务更重要。

  • 视频任务默认等待时间比图片更长。
  • 如果本地等待超时但任务仍在 running,不代表生成失败。
  • 继续用 job --wait 轮询即可。
moonwork generate-video \
  --product-image ./product.jpg \
  --product-name "Outdoor Knife" \
  --core-selling-points "portable, camping ready" \
  --video-requirements "show opening, grip, and outdoor usage" \
  --platform TK \
  --language English \
  --ratio 9:16 \
  --duration-seconds 10 \
  --resolution 1080p \
  --task product-showcase \
  --generate-audio true \
  --subtitles true \
  --wait \
  --output-dir ./moonwork-results

指纹浏览器

准备一个可手动操作的指纹浏览器环境

MoonWork 提供指纹浏览器基础设施,而不是页面点击 DSL。典型链路是:代理 -> 平台账号 -> Profile -> 启动。

标准闭环

通常先查看代理和平台账号,再创建或复用 Profile,最后启动浏览器会话。启动完成后 CLI 会退出,不会长期占用终端。

  • 代理、平台账号和 Profile 的关系优先由 CLI 统一维护。
  • 需要人工继续操作时,不必强行改成自动化。
  • 只有在其他工具需要接管浏览器时,再使用 ws 或 cdp。
moonwork browser proxy list --json
moonwork browser business-account list --json
moonwork browser profile init store-us --output-file ./store-us.profile.json --json
moonwork browser profile create --config ./store-us.profile.json --json
moonwork browser launch --business-account-id <business-account-id> --json

接管浏览器时

当其他工具需要控制浏览器时,传递 runtime id、ws 或 cdp 作为交接信息即可,不需要把 MoonWork 变成页面点击 DSL。
moonwork browser cdp <runtime-id> --json

轮询与等待

长任务如何继续等待

如果本地等待窗口结束,但任务仍处于 running 状态,说明只是本地等待超时,并不代表生成失败。

继续轮询

视频任务通常耗时更久。继续使用 job --wait 轮询即可,不需要重新提交任务。

  • 优先读取 data.job.status 和 data.job.progressMessage。
  • still running 状态下的 timeout 不是失败。
  • 等到任务进入终态后再拉取 results。
moonwork job <job-id> --wait --wait-timeout 900 --poll-interval 10 --json

JSON 输出

给接入方和 Agent 的稳定输出约定

接入方和 Agent 不应依赖面向人工阅读的终端输出,建议统一使用 --json 并解析标准响应结构。

成功响应
读取 ok=true,重点看 data.job、data.assets、data.outputDir。
失败响应
读取 ok=false,重点看 error.message、error.status,以及需要时的请求 id 或任务 id。
长任务状态
在 running / provider-submitted 阶段,优先看 data.job.id、data.job.status、data.job.progress、data.job.progressMessage。

参数速查

关键参数速查

当你需要快速确认命令参数时,可以直接查看这一组速查表。它不替代完整说明,但覆盖高频接入场景。

generate-copy

文案生成最少需要商品图片、商品名称、平台和语言。

    --product-name
    必填,商品名称。
    --product-image
    必填,本地商品图片,可重复传入,最多 4 张。
    --product-info
    选填,商品补充描述。
    --platform
    必填,支持 AMZ、TK、TEMU。
    --language
    必填,输出语言,例如 Chinese 或 English。

    generate-image

    图片生成参数主要围绕素材来源、任务类型、画幅比例、分辨率和本地文件保存。

      --product-image / --image-asset
      必填,本地素材或后端已有素材。
      --product-name
      必填,商品名称。
      --platform
      必填,支持 AMZ、TK、TEMU。
      --language
      必填,输出语言。
      --ratio
      必填,图片比例,例如 9:16。
      --resolution
      必填,输出分辨率,例如 1080x1920。
      --task
      必填,图片任务类型,例如 white-bg、hero。
      --wait
      选填,等待任务完成。
      --output-dir
      选填,把结果文件保存到本地目录。

      generate-video

      视频生成在基础素材参数之外,还会涉及时长、音频、字幕和脚本方向。

        --product-image / --image-asset
        必填,本地素材或后端已有素材。
        --platform
        必填,支持 AMZ、TK、TEMU。
        --language
        必填,输出语言。
        --ratio
        必填,视频比例。
        --duration-seconds
        必填,视频时长。
        --resolution
        必填,视频分辨率,例如 480p、1080p。
        --task
        必填,视频任务类型,例如 product-showcase。
        --core-selling-points
        选填,核心卖点。
        --video-requirements
        选填,视频要求或脚本方向。
        --generate-audio / --subtitles
        选填,音频与字幕开关。

        指纹浏览器相关参数

        这些参数主要用于 browser launch、browser login、browser profile 等浏览器工作流。

          --business-account-id
          平台账号 id,launch 或 autofill 常用。
          --proxy-id
          代理资源 id。
          --ttl
          浏览器会话自动清理前的存活时间。
          --idle-timeout
          浏览器会话空闲超时时间。
          --config
          launch / profile 相关 JSON 配置文件。

          等待与轮询参数

          长任务等待、超时和轮询相关参数集中在这里。

            --wait
            等待任务完成。
            --wait-timeout
            本地等待窗口时长。视频默认比图片更长。
            --poll-interval
            轮询间隔。
            --json
            推荐给接入方和 agent 使用的稳定输出模式。

            常见问题

            接入时最常见的几个问题

            为什么 launch 后 CLI 会退出?
            因为浏览器桥接服务会在后台维持会话,CLI 不需要长期占用终端。
            为什么图片或视频会失败?
            通常是服务商拒绝了本次生成请求,CLI 会先给出可读错误,再补充请求 id 或任务 id。
            为什么视频比图片慢?
            视频任务生成链路更长,并且可能包含音频、字幕、服务商轮询等额外步骤。
            什么时候应该用 ws / cdp?
            只有在其他浏览器层或自动化工具需要接管运行中的指纹浏览器会话时才需要。