Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Zopia Skills

v1.1.0

Zopia AI 视频创作技能 - 通过 Zopia 平台的 AI Agent 进行视频/图片创作。覆盖场景包括:AI 视频生成(文生视频、图生视频)、AI 图片生成(角色设定图、分镜关键帧)、剧本创作(对话/旁白/场景描述)、角色设计、分镜设计、多集连续剧制作。当用户提到 zopia、视频创作、短剧制作、分镜、...

0· 966·1 current·1 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for lambdua/zopia-skill.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Zopia Skills" (lambdua/zopia-skill) from ClawHub.
Skill page: https://clawhub.ai/lambdua/zopia-skill
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Required env vars: ZOPIA_ACCESS_KEY
Required binaries: python3
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install zopia-skill

ClawHub CLI

Package manager switcher

npx clawhub@latest install zopia-skill
Security Scan
Capability signals
Requires OAuth tokenRequires sensitive credentials
These labels describe what authority the skill may exercise. They are separate from suspicious or malicious moderation verdicts.
VirusTotalVirusTotal
Pending
View report →
OpenClawOpenClaw
Suspicious
medium confidence
Purpose & Capability
Name/description match the code and required env var: scripts call a Zopia HTTP API and require ZOPIA_ACCESS_KEY. Required binary (python3) and the primaryEnv are appropriate for a Python-based API client.
!
Instruction Scope
SKILL.md instructs the agent to trigger whenever users mention many broad keywords (e.g., 'zopia', 'video creation', 'storyboard'), which may cause unexpected activations. The runtime behavior also specifies automatic downloading of generated assets to local disk and extracting URLs from message text (regex) — this can result in the skill fetching arbitrary external URLs present in session messages. While these actions align with the stated goal, they widen the attack surface and could lead to unexpected downloads.
Install Mechanism
No install spec; code is included and uses only the Python standard library. No downloads from untrusted URLs or package manager installs are present. This is low-risk from an install mechanism perspective.
Credentials
Only ZOPIA_ACCESS_KEY is required (plus optional ZOPIA_BASE_URL). That is proportionate for a service-integrating skill, but the bearer token grants account-level API access; users should confirm token scope/expiry and treat it as sensitive.
Persistence & Privilege
always is false and the skill doesn't request any special platform-wide privileges. It doesn't modify other skills or system-wide agent settings.
What to consider before installing
This skill appears to be a coherent client for the Zopia API, but review these points before installing: - Token sensitivity: ZOPIA_ACCESS_KEY is a bearer token that the scripts use for all API calls. Only provide a token you control and understand (check its scope and expiration). Prefer creating a limited-scope key if Zopia supports it. - Auto-triggering: The SKILL.md requires the agent to trigger on broad keywords. If you want tighter control, either disable automatic invocation in your agent or restrict triggers to narrower phrases. - Automatic downloads: The skill will automatically download media and will also regex-extract URLs from messages. That can cause the agent to fetch files from arbitrary external hosts and write them to disk. To reduce risk, run the skill in a sandboxed environment, inspect session outputs before downloading, or run download_results.py only manually with a trusted session_id. - Verify base URL: By default calls go to https://zopia.ai, but ZOPIA_BASE_URL can be overridden; confirm the URL so you don't accidentally point the skill to an attacker-controlled server. - Operational limits: The downloader relies on Content-Length to skip very large files but will still download when Content-Length is absent — consider adding further safeguards (size caps, file-type checks) if you plan to run this on a sensitive host. If you need the skill's functionality and can accept these trade-offs (or can sandbox it), the code and requirements are mostly consistent with the stated purpose. If you cannot accept automatic downloads or broad triggers, do not install or adjust the skill before use.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

🎬 Clawdis
Binspython3
EnvZOPIA_ACCESS_KEY
Primary envZOPIA_ACCESS_KEY
latestvk979k0vx72t7q95gnd14nytmsn85gdxp
966downloads
0stars
4versions
Updated 3d ago
v1.1.0
MIT-0

Zopia AI 视频创作

Zopia 是一个项目制的 AI 视频创作平台。每个项目包含完整的创作流水线:剧本 → 角色 → 分镜 → 视频,由后端 AI Agent 自动驱动。你通过脚本管理项目、传达用户意图、追踪进度、获取成果。

环境配置

export ZOPIA_ACCESS_KEY="zopia-xxxxxxxxxxxx"   # 必需,30天有效
export ZOPIA_BASE_URL="https://zopia.ai"  # 可选

仅使用 Python 标准库,无需额外安装。

核心概念

概念说明
Project (Base)创作项目,包含设置、剧集、所有资产。创建时自动生成首集
Episode剧集,同一项目下可创建多集,每集有独立的剧本/角色/分镜
Session一次 Agent 对话。异步执行,通过轮询获取进展
Workspace项目的实时工作区快照,包含角色(entities)、分镜(storyboard)、各媒体的生成状态

脚本速查

脚本用途关键参数
create_project.py创建项目[名称]
save_settings.py项目设置--base-id --style --aspect-ratio --video-model --storyboard-image-model --entity-image-model ...
send_message.py发送创作指令(异步)--base-id --episode-id 消息
query_session.py查询进展SESSION_ID --poll --after-seq N
download_results.py下载媒体资源SESSION_ID --output-dir --type image|video
get_balance.py余额查询
list_projects.py列出项目--page --page-size
manage_episodes.py剧集管理list|create|delete
render_episode.py合成最终视频trigger|status --base-id --episode-id --poll

项目设置参考

创建项目后,必须配置基础设置(locale / aspect_ratio / style)才能开始创作。

python3 {baseDir}/scripts/save_settings.py --base-id BASE_ID \
  --locale zh-CN --aspect-ratio 16:9 --style realistic_3d_cg

风格

ID说明
anime_japanese_korean日韩动漫
realistic_3d_cg3D CG 写实 🔥
pixar_3d_cartoonPixar 3D 卡通
photorealistic_real_human真人写实
3D_CG_Animation3D CG 动画 🔥
anime_chibiQ版可爱
anime_shinkai新海诚
anime_ghibli吉卜力
stylized_pixel像素艺术

别名支持:realisticrealistic_3d_cgghiblianime_ghiblishinkaianime_shinkaipixelstylized_pixel

视频模型 × 生成方式

不同模型支持不同的生成方式(generation_method),不匹配会报错。

模型 ID名称支持的方式默认
generate_video_by_seedance_20Seedance 2.0 Pro ⭐n_grid, video_ref, multi_ref, multi_ref_v2video_ref
generate_video_by_seedance_20_fastSeedance 2.0 Fastn_grid, video_ref, multi_ref, multi_ref_v2video_ref
generate_video_by_kling_o3Kling O3start_frame, n_grid, multi_ref, multi_ref_v2n_grid
generate_video_by_kling_v3_0Kling V3.0start_frame, n_gridn_grid
generate_video_by_pixverse_c1PixVerse C1start_frame, multi_refstart_frame
generate_video_by_hailuo_02Hailuo 2.3start_framestart_frame
generate_video_by_wan26_i2vWan 2.6start_framestart_frame
generate_video_by_wan26_i2v_flashWan 2.6 Flashstart_framestart_frame
generate_video_by_viduq2_proVidu Q2 Prostart_framestart_frame
generate_video_by_viduq3_proVidu Q3 Prostart_framestart_frame
generate_video_by_viduq3Vidu Q3n_grid, multi_ref, multi_ref_v2n_grid
generate_video_by_seedance_15Seedance 1.5 Prostart_framestart_frame

图片模型

分镜关键帧(storyboard_image_model)与角色/场景设定图(entity_image_model)使用独立的图片模型,可分别配置。

模型 ID名称默认场景
generate_image_by_nano_banana_2Nano Banana 2storyboard 默认
generate_image_by_doubao_seedream_4Doubao Seedream 4entity 默认
generate_image_by_nano_bananaNano Banana
generate_image_by_gpt_image_2GPT Image 2

不传则后端使用默认值。传非法 ID 后端会返回 invalid_storyboard_image_model / invalid_entity_image_model 400 错误,并在响应的 allowed_values 字段给出当前可用列表。

其他设置

字段可选值
--aspect-ratio16:9, 9:16
--image-size1k, 2K, 4K(注意 1k 小写)
--video-resolution480p, 720p, 1080p
--generation-methodn_grid, multi_ref, multi_ref_v2, start_frame, video_ref
--storyboard-image-model见上方"图片模型"表
--entity-image-model见上方"图片模型"表

典型场景

理解这些场景,才能正确组合脚本完成用户需求。

场景 1:用户给出创作需求,从零开始(最常见)

1. get_balance.py                          → 确认余额 ≥ 10
2. create_project.py "赛博朋克短剧"        → 拿到 baseId, episodeId
3. save_settings.py --base-id B \
     --locale zh-CN --aspect-ratio 16:9 \
     --style anime_japanese_korean         → 配置项目
4. send_message.py --base-id B \
     --episode-id E "用户的原始描述"        → 拿到 session_id
5. query_session.py S --poll               → 自动轮询直到完成
6. download_results.py S \
     --output-dir ./赛博朋克短剧 \
     --prefix storyboard                   → 自动下载到本地

生成完成后自动执行下载,不需要用户额外请求。下载目录和前缀根据任务语义自动命名(如分镜用 storyboard,角色设定用 character,最终视频用 video 等)。

展示时机: 生成过程中只告知进度("角色图生成中..."、"分镜关键帧 5/8 完成"),不要提前给出项目链接。全部完成后,同时给出:本地文件列表 + 项目链接{ZOPIA_BASE_URL}/base/{baseId}?session_id={sessionId},用户可在浏览器中查看和编辑完整项目)。优先使用脚本输出中的 projectUrl 字段。

场景 2:在已有会话中追加新需求(如"再改一下角色造型")

1. send_message.py --base-id B --episode-id E \
     --session-id S "用户的新指令"          → 复用已有会话
2. 轮询 → 下载 → 展示

使用同一个 session_id 可保持上下文连续。

场景 3:在已有项目中继续创作

1. list_projects.py                         → 让用户选择项目
2. manage_episodes.py list --base-id B      → 查看剧集列表
3. send_message.py --base-id B \
     --episode-id E "新的创作指令"           → 新建会话
4. 轮询 → 下载 → 展示

场景 4:多集连续剧制作

一个项目(Project)可以包含多个剧集(Episode)。每集有独立的剧本、角色表、分镜表,但共享项目级设置(风格、画幅、模型)。

创作流程:

1. create_project.py "我的连续剧"              → 拿到 baseId, episodeId (自动创建第一集)
2. save_settings.py --base-id B ...            → 配置项目(所有剧集共享)

── 第一集 ──
3. send_message.py --base-id B \
     --episode-id EP1 "第一集:主角进入废墟..."  → 创作第一集
4. 轮询 → 下载

── 第二集 ──
5. manage_episodes.py create --base-id B       → 拿到新 episodeId (EP2)
6. send_message.py --base-id B \
     --episode-id EP2 "第二集:发现地下实验室..." → 创作第二集
7. 轮询 → 下载

── 更多剧集:重复步骤 5-7 ──

多集注意事项:

  • 每集有独立的角色和分镜,不会互相干扰
  • 如果后续剧集需要沿用前集角色形象,在消息中说明即可(如"延续第一集的角色设定"),后端 Agent 会处理
  • 创建新剧集前,建议先确认当前剧集已完成(status: "completed"
  • 可以随时用 manage_episodes.py list --base-id B 查看所有剧集状态
  • 删除剧集是不可逆操作,会清除该集所有内容

场景 5:将分镜视频合成为最终 MP4

所有分镜视频生成完毕后,可一键触发云端渲染,将所有片段按时间轴顺序合成为完整 MP4 文件。

1. render_episode.py trigger \
     --base-id B --episode-id E            → 拿到 render_id,渲染开始(异步)
2. render_episode.py status \
     --base-id B --episode-id E \
     --render-id RENDER_ID --poll          → 自动轮询,完成后输出 video_url

触发时机: 用户明确要求「导出视频」「合成 MP4」「生成完整视频」时才触发。分镜视频生成阶段不要触发。

渲染前提: storyboard 中至少有一个分镜有 video_urls(即已完成视频生成),否则渲染内容为空。

完成标志: status: "completed" 且返回 video_url(S3 直链,可直接下载或分享)。

轮询说明: 渲染由 Remotion Lambda 执行,通常需要 1–5 分钟,--poll 参数每 8 秒检查一次进度(progress 字段 0→1),超时上限 10 分钟。


读懂 workspace 进度

query_session.py 返回的 workspace 是项目的实时快照,用来判断创作走到哪一步了:

{
  "status": "running",
  "workspace": {
    "entities": [{"name": "角色A", "images_status": "done", "image_urls": [...]}],
    "storyboard": {
      "total_shots": 8,
      "images": {"done": 5, "pending": 3, "failed": 0, "none": 0},
      "videos": {"done": 2, "pending": 1, "failed": 0, "none": 5}
    },
    "shots": [{"index": 1, "description": "...", "image_urls": [...], "video_urls": [...]}]
  }
}

怎么读:

  • status: "running" + workspace 空 → 刚开始,Agent 还在理解需求
  • entities 出现,images_status: "pending" → 正在生成角色图
  • storyboard.images.pending > 0 → 正在生成分镜关键帧
  • storyboard.videos.pending > 0 → 正在生成视频片段
  • status: "completed" → 全部完成,检查有无 failed 项

轮询策略:

  • 间隔:每 8 秒查询一次
  • 增量拉取:首次 --after-seq 0,后续传上次拿到的最大 seq 值
  • 完成判断status 变为 completed(全部完成)或 idle
  • 超时:连续 3 分钟无新进展,告知用户「生成时间较长」并给出项目链接供自行查看,停止轮询
  • 错误重试:单次查询失败可重试 1 次;连续 3 次失败则停止并告知用户
  • 自动轮询:使用 --poll 参数可自动执行上述策略,无需手动循环

你的角色

Zopia 后端有完整的 AI 创作 Agent(对模型能力、prompt 工程、创作流程远比用户侧专业),你负责的是项目管理和需求传达

你要做的三件事:

  1. 配置 — 根据用户意图创建项目,选择合适的风格、模型、画幅
  2. 传话 — 把用户的原始需求原封不动发给后端 Agent
  3. 取件 — 追踪进度,在关键节点通知用户,完成后自动下载结果并展示

不要做的事:

  • 不替用户扩写、润色、翻译创作描述(用户说"帮我推演分镜",就直接传这句话,不要自己先写个分镜表再逐条发)
  • 不自行拆分任务(用户说"生成8个分镜图",发一条消息给后端,后端自己拆解)
  • 不在消息中添加自己编的描述词(如"超写实风格,电影级光影,8K分辨率")

正确:

用户说:「帮我做一个赛博朋克风格的短剧,讲一个机器人在废墟中寻找最后一朵花」

→ create_project.py "赛博朋克短剧"
→ save_settings.py --base-id B --locale zh-CN --aspect-ratio 16:9 --style anime_japanese_korean
→ send_message.py --base-id B --episode-id E "帮我做一个赛博朋克风格的短剧,讲一个机器人在废墟中寻找最后一朵花"
→ 轮询 → 下载到 ./赛博朋克短剧/ → 展示文件列表 + 项目链接

错误:

❌ 先自己写了个详细的 5 场剧本和分镜描述
❌ 把自己编的内容逐条发给后端
❌ 在用户描述后面追加 "cinematic lighting, 8K, ultra detailed"

错误码速查

状态码含义处理
400参数缺失或设置不合法检查必填字段和枚举值
401Token 无效或过期提醒用户重新获取
402余额不足提醒充值
403无权限检查 baseId 归属
404资源不存在检查 ID 是否正确
409会话执行中等待当前会话完成再发新消息

Comments

Loading comments...