TK Prompt Cards
Build a prompt out of bilingual tag cards, and get the LoRAs with it
- clip
- STRING
- CONDITIONING
- lora_syntax
If you write Anima prompts, the hard part isn't the model - it's remembering that the tag is dutch angle and not angled shot, that the character's tag is kisaki (blue archive) and not kisaki, and that you wanted a specific artist's style on this one.
TK Prompt Cards is the pack's prompt workbench: a card library of English/Chinese tag pairs you click to assemble a prompt, with Chinese-name autocomplete, translation, and a LoRA bridge. It's the biggest node in TK Toolkit (anima-toolkit by 时运tk), and the one whose UI you'll spend the most time in.
Inputs and outputs
There's genuinely one input you fill:
- positive - the prompt text. Cards clicked in the library append here; you can also type, and it persists with the workflow.
And three optional sockets:
- opt_text - external text merged in, comma-joined with
positive. This is the slot for anything another node produces. - clip - connect a CLIP and the node can encode directly.
- lora_syntax - the LoRA tag string, maintained by the front end when you click trigger-word cards.
Three outputs:
- STRING - the assembled prompt, for any text input.
- CONDITIONING - only meaningful if you wired
clip. Then it's a text encode in a node, and you skip a separate encoder. - lora_syntax - a
<lora:name:weight>string, meant to be wired into TK 批量 LoRA 加载器. Click a LoRA's trigger card, and the corresponding tag lands on the loader. That link is the reason this node and the batch loader are in the same pack.
What the library does that matters
The autocomplete is the good part. It indexes a bundled Danbooru tag database with Chinese descriptions plus an alias index, so Chinese character names work: type 望 and get nozomi (blue archive), type 妃咲 and get kisaki (blue archive). Type a series name like 碧蓝档案 and it offers that series' characters. Results sort by match quality and by Danbooru post count, which is a decent proxy for whether the model actually knows the tag - the same reasoning behind animadex.net, which exists because "does Anima know this character" is the question that decides whether a LoRA is necessary.
Insertion handles two Anima-specific details for you. Underscores become spaces (Anima's tag style), and parentheses are escaped as \(\) by default, because a bare ( in a ComfyUI prompt is weight syntax and your character's disambiguation would otherwise be read as one. There's a bracket-escape toggle if you want the raw form.
Translation has pluggable sources - a local dictionary, DeepLX, Baidu (APPID + API key), MyMemory, Google, 通义 - and a mode that calibrates Chinese fragments into canonical Danbooru tags rather than literal translations. If you have no network, the local dictionary still handles common tags.
Fragments in section two can be hidden and restored individually. A hidden fragment stays in the card region but drops out of the prompt output, which is how you A/B a clause without deleting it.
And the prompts you assemble aren't stranded in the node: they go into the shared Prompt library that the toolkit's panel, TK Prompt Saver and the browser-side library all read, mirrored to data/prompt_library.json in the plugin folder so clearing site data doesn't wipe your collection.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Ararararararaki/comfyui-anima-toolkit
# restart ComfyUI
ComfyUI Manager: search TK Toolkit (anima-toolkit). Required packages are aiohttp and requests. Optional, if you want the local GGUF translation provider, llama-cpp-python from requirements-optional.txt. Registration is under TK/prompt.
Two environment notes. The Chinese autocomplete index is built from a ~20MB CSV shipped in the pack and warmed in the background at startup - the very first search after an install can feel slow, then it's milliseconds. And Baidu translation credentials are written to data/translation_providers.json in the plugin directory, which is git-ignored; they are stored locally, never in the repo.
Gotchas
CONDITIONING output is conditional. No clip wired, no conditioning - the port just sits there. That's the most common "why does nothing happen" with this node.
Bilingual cards are a reading aid, not a prompt strategy. The output is English tags. Writing Chinese into the prompt box does nothing for an Anima graph; the card's Chinese side is there so you know what you're selecting.
The library lives in two places on purpose. IndexedDB gives fast reads; the JSON mirror survives browser cleanup and updates. Open ComfyUI on localhost and the panel on 127.0.0.1 and the browser treats those as different origins with different storage - pick one and stick with it, or your library will look like it half-vanished.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| positive | STRING | 当前提示词文本:可由批文件组/卡片库点击填充,逗号分隔 tag。随工作流持久化。 | |
| clipopt | CLIP | — | |
| opt_textopt | STRING | 外部文本并入(接其他节点输出):与 positive 逗号拼接。 | |
| lora_syntaxopt | STRING | 当前 LoRA 语法文本(前端点击触发词卡片时自动维护),输出端口直连 TK Batch LoRA Loader。 |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |
| CONDITIONING | CONDITIONING | — |
| lora_syntax | STRING | — |