ComfyUI Appstore Param (ComfyUI_Appstore)
ComfyUI Appstore Param, the knob-marker node
- 标注节点接入
ComfyUIAppstoreParam is the node that decides what a paying customer can touch when you publish your workflow as an app on huaxiaobao.net (画小宝). It takes a knob on your graph and turns it into a button, a file picker, or a text box in the app's web UI.
The whole pitch of the ComfyUI_Appstore pack - from its own pyproject.toml - is "convert a ComfyUI workflow into a web app with one click, and support payments." You don't hand end users the full graph. Instead you mark which parts of the workflow are user-adjustable, and this is the node that does the marking. It's an annotation, not a computation: it returns nothing, produces no outputs, and its run method is a no-op. Everything it records is metadata the pack's frontend reads when it renders the app's form.
The fields that matter
The one connection that matters is the first input, 标注节点接入 ("annotation node input"), a wildcard * socket. Wire it to whatever node's value should become user-facing - the prompt input, a model loader's filename, an image you want the user to upload. The rest describe how the control appears:
- 类型 (type) - the control kind:
file,mask,selection,text,image_editer,image_selection, orcombo_image_selection. That's a file upload, a user-drawn mask, a dropdown, a text field, or three progressively fancier image-picking widgets. - 参数名称 (parameter name) - the label shown to the user. The default is literally the Chinese for "parameter name," a placeholder - rename it or your users get a form full of 参数名称.
- 数值约束或依赖项 (value constraint or dependency) - for a
fileparam this is the accepted extensions; the default is.png,.jpg,.jpeg,.webp. - 替换项 (replacement) - the token in your workflow text that the user's value swaps out. The default
amountis telling: if your prompt contains the word "amount" and the user picks a value, that's the string that gets replaced. That's how one published workflow serves a hundred choices without a hundred nodes. - 序号 (order) - where the control sits in the app's form. Default 20.
Installing it
Same pack, same story as the rest of ComfyUI_Appstore: search "ComfyUI_Appstore" in ComfyUI Manager, or
cd ComfyUI/custom_nodes
git clone https://github.com/ronaldzgithub/ComfyUI_Appstore
# restart ComfyUI
No models, no heavy dependencies - the pack's requirements are everyday web stuff (aiohttp, requests, numpy) plus piexif for EXIF.
Where people get burned
Nothing in the README documents these fields, and the field names are Chinese, so you're decoding the schema by hand - this article's the translation you won't find elsewhere. The type enum is the fiddly part: expect to experiment with image_editer vs image_selection vs combo_image_selection to see which renders the way you want, since the differences aren't explained anywhere. And because the node returns nothing, you can't debug it by looking at wires - the place to check is the published app's form, not the graph.
One honest caveat: this pack has effectively no English-speaking community footprint, so there's no tutorial ecosystem to save you when a field misbehaves. Treat this as an experiment, and keep your source workflow backed up separately - remember, the app's output images come out of this pack without embedded workflow metadata, so you can't recover your graph from a published output later.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| 标注节点接入 | * | — | |
| 序号 | INT | 201–10000 | — |
| 参数名称 | STRING | 参数名称 | — |
| 类型 | COMBO | 7 options: file, mask, selection, text, image_editer, image_selection, +1 | |
| 数值约束或依赖项 | STRING | .png,.jpg,.jpeg,.webp | — |
| 替换项 | STRING | amount | — |
Outputs (0)
No outputs