CYAI 素材组 (创建/查询)
Creating an AIGC asset group in ComfyUI
- group_id
- info
Assets in Volcengine's system don't float loose - every one of them belongs to a group, and the group's type decides what the platform will let you do with the material inside it. This node is the boring administrative half of that system: create a group, list your groups, look at one in detail. It generates no pixels and it's the node you'll run once, write down the id from, and then stop thinking about.
You still need it. The video node's multi-reference mode wants asset:// ids when real faces are involved, and every asset:// id lives in a group. Getting the group right the first time saves you from a confusing error later.
What it actually calls
Under the hood this isn't the Ark v3 generation API at all - it's the older Action-style endpoint, POST {base_url}/api/?Action=CreateAssetGroup&Version=2024-01-01, authenticated with the same Bearer key and no HMAC signing. The action dropdown maps to three of those calls: CreateAssetGroup when you pick 创建素材组, ListAssetGroups for 查询素材组列表, and GetAssetGroup for 查询素材组详情.
The important distinction baked into the group_type field is AIGC versus a real-person group. AIGC means virtual persona - anime characters, illustrations, anything the platform doesn't consider a photograph of a human. You can create that here, right now, and upload into it freely. A real-person group can't be created by hand at all: it only comes out of the liveness-verification flow, because the whole point is that a human proved they're the person in the pictures. Set group_type to something else and either the call fails or you get a group you can't upload a face into - so leave it at AIGC unless you're deliberately testing.
Inputs and outputs
Required: api_key, base_url, action, project_name (default default - and if you change it anywhere in this pack, change it everywhere, because the asset nodes and the video node all filter on it).
Optional fields apply per-action rather than globally. name is mandatory for create and should stay under 64 characters; description is free text you'll never read again. group_id only matters for the detail query, where it's mandatory.
Outputs are group_id (populated on create and on detail queries, empty on a list) and info, which is either a summary line for a create or a pretty-printed JSON dump for a detail. Both are plain STRING, which means the list mode's output is only visible if you wire info into something that displays text - otherwise it's computed and thrown away.
The list mode is genuinely useful once: it's how you find the id of a group you made last month, and it's the only place the pack shows you GroupType next to Name.
Installing it
Part of the pack. ComfyUI Manager → search CYAI Seedance → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Gin3601/comfyui_transit_node.git
Restart and look under CYAI/Asset. Nothing to download, no requirements.txt - the pack declares zero dependencies and leans entirely on ComfyUI's own torch/PIL/numpy plus stdlib HTTP.
Where people get burned
Nothing happens when you queue it alone. This is the trap that eats an afternoon. None of the asset nodes set OUTPUT_NODE, and ComfyUI only executes the part of the graph that feeds an output node - so a lone CYAI 素材组 node with its outputs dangling never runs. Connect group_id somewhere (the upload node's group_id, say) or hang info off a text-display node, and it'll actually execute.
name 不能为空 is a real check, not a suggestion. Create mode needs a name and the node refuses to move without one, so you can't lazily let the platform assign one.
The list is capped at 20 and there's no paging. The call hardcodes page 1 with PageSize: 20, and the node exposes no fields to change it. If you have more than twenty groups, this view won't show you the rest - go to the relay's web console instead.
An empty filter is invalid upstream, not in the node. The source carries a comment about it: the list call sends Filter: {"GroupType": group_type} because Ark errors with Filter is required when you send nothing. It's already handled - but if you clear the group_type field entirely and get a validation error back, that's the mechanism complaining.
A group id is a per-account handle. It's meaningless on a different relay or a different key, so don't carry it across projects expecting it to resolve.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | 中转站 API Key(sk-xxx) | |
| base_url | STRING | https://www.cyai.club | 中转站地址 |
| action | COMBO | 创建素材组(AIGC) | 选择要执行的操作 |
| project_name | STRING | default | 项目名,默认 default |
| nameopt | STRING | 创建:素材组名称(必填,建议 ≤64 字符) | |
| descriptionopt | STRING | 创建:素材组描述(可选) | |
| group_typeopt | STRING | AIGC | 创建:素材组类型。AIGC=虚拟人像;真人素材组须走真人认证流程 |
| group_idopt | STRING | 查询详情:素材组 ID |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| group_id | STRING | 创建成功/详情查询的素材组 ID(可接「上传素材」的 group_id) |
| info | STRING | 列表或详情文本 |