Skip to content

T8mars/comfyui-anima-t8

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

贞贞网站:https://ai.t8star.org

致谢企鹅的云端画布:https://art.pebbling.cn

Online workflow overseas:

https://www.runninghub.ai/?inviteCode=rh-v1121

在线工作流国内版:

https://www.runninghub.cn/?inviteCode=rh-v1121

👋🏻 Welcome to Zhenzhen

My favorite girl

My favorite girl Go YounJung

comfyui-anima-t8

Anima 动漫提示词生成器 · ComfyUI 自定义节点

风格库三段式(52 条预设 / 15 分类)+ 1000+ 画师库 + Danbooru 四类(画师 / 作品 IP / 角色 IP / 风格·meta)+ Civitai 一键抓取 + 实时风格预览图

version ComfyUI license


✨ 简介

comfyui-anima-t8 是为 Anima 动漫文生图模型 设计的 ComfyUI 提示词工作站,把"风格库 + 画师库 + IP 库"完整搬进 ComfyUI 主面板,让你无需离开画布就能完成提示词组装。

核心特色

  • 📚 风格库 52 条 Pony 兼容预设 × 15 分类:画质 / 媒介 / 镜头 / 构图 / 光影 / 服装 / 表情 / 季节 / 时代 / 场景 / 风格 / 情绪 / 角色 / NSFW / 测试,开箱即用
  • 🌐 一键 Civitai 抓取:输入模型 ID 自动拉高赞图 prompt,按 14 组关键词自动归类(兼容 Civitai 直 prompt / 嵌套 / ComfyUI workflow 三种 meta 结构)
  • 🎨 5 个素材库 Tab 一键切换:mooshieblob 画师 + Danbooru 画师 / 作品 IP / 角色 IP / 风格·meta
  • 🖼️ 实时风格预览图:选画师后运行节点即可在 PreviewImage 看到代表作首图
  • 🚀 本地缓存 + 并发拉取:首次切 Tab 仅 2~5 秒可用,后台异步补全 30000+ 标签
  • 🧬 增量种子机制:升级版本会按 name / title 增量补入新预设,不覆盖用户已编辑的内容
  • 📌 Pin 收藏 / 仅固定 / A-Z 字母筛选 / 关键字搜索 一应俱全
  • 🛡️ 图片代理:所有 Danbooru CDN 图片走后端同源代理,绕开浏览器防盗链/CSP

📦 节点清单

节点 说明 主要输入 输出
Anima Prompt T8 三段式提示词组装(正向 / 负向 / 风格) positive / negative / style POSITIVE / NEGATIVE
Anima Artist Style T8 画师风格输出 + 实时预览 artist_tags(多选)/ default_weight / use_artist_prefix STYLE_PROMPT / PREVIEW_IMAGES
Anima Prompt Combiner T8 把多段提示词合并为单段 text_a / text_b / separator COMBINED
Anima Saved Prompt Loader T8 从风格库一键加载已保存提示词 preset_id POSITIVE / NEGATIVE / STYLE

🚀 安装

方式 1:手动 clone

cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-anima-t8
cd comfyui-anima-t8
pip install -r requirements.txt

方式 2:通过 ComfyUI Manager

在 ComfyUI Manager 搜索 comfyui-anima-t8 后一键安装(待发布到 manager 列表)。

依赖

  • Python ≥ 3.10
  • ComfyUI 主分支(任意近期版本)
  • Pillow / numpy / torch(ComfyUI 自带,无需额外)
  • requests(已写入 requirements.txt

🎯 使用流程

1. 拖入节点

在 ComfyUI 画布右键 → Add NodeAnima/T8 → 选择需要的节点。

2. 打开素材库

每个 Anima 节点上方都有按钮:

  • 📚 风格库:浏览/搜索/收藏已保存的三段式提示词,支持 📥 导入 / 📤 导出 / 🌐 Civitai 抓取
  • 🎨 艺术家 / IP 库:5 个 Tab 切换
    • 👤 Danbooru 画师 —— 30000+ Danbooru 真实标注画师标签
    • 📚 作品 IP —— 5000+ 动画/游戏/漫画作品名
    • 🧑‍🎤 角色 IP —— 30000+ 角色名
    • 🎭 风格·meta —— Danbooru meta tag(画风 / 媒介 / 题材描述)
    • 🎨 画师库·mooshieblob —— 1000+ 精选画师 + 高质量预览图

3. 选择 → 添加

  • 在卡片上点击 → 进入选中状态
  • 点击右上角"➜ 添加 N 个" → 自动写入对应节点的 widget
    • 画师类 → 写入 artist_tags widget(Anima Artist Style T8)或 style widget(Anima Prompt T8)
    • 作品 / 角色 IP → 写入 positive widget

4. 运行查看预览

把 Anima Artist Style T8 的 PREVIEW_IMAGES 端口连到 PreviewImage 节点,运行后会自动从 Danbooru 拉每个画师的代表作首图(≤16 张,6 路并发,约 2~5 秒)。

小提示PREVIEW_IMAGES 仅展示"本次选中"的画师;STYLE_PROMPT 始终拼接 textarea 全部画师。如需预览全部,清空 last_picked widget 即可。

5. 一键 Civitai 抓取(v1.2 新增)

在风格库面板点 🌐 Civitai 按钮 → 输入目标模型 ID(例如 2458426)→ 系统会:

  1. 调 Civitai images API 拉该模型 Most Reactions × Month 的高赞图(默认 100 张,1 页)
  2. 自动从每张图的 meta 中提取 prompt(兼容直 prompt / 嵌套 meta / ComfyUI workflow 三种结构)
  3. 按 prompt 内容自动归类到 14 个分类(每条最多 3 个 tag)
  4. 按 reactions 倒序,取 top 30 增量写入风格库(标题 Civitai-{modelId} #{imageId},按 title 去重)

⚙️ 数据来源

来源 用途
Danbooru 画师 / 作品 IP / 角色 IP / 风格·meta 标签库 + 预览图首图
mooshieblob Anima Artist Gallery 1000+ 精选画师 + 高质量风格预览图
Civitai 按模型 ID 抓取高赞图 prompt(公开 API,免 token)

所有数据按需缓存到本地 SQLite (comfyui-anima-t8/data/anima_t8.sqlite),首次拉取后即离线可用。


🔌 HTTP 路由

节点会自动注册以下路由到 ComfyUI 服务器:

路径 说明
GET /anima_t8/prompts 列出已保存的提示词预设
GET /anima_t8/artists mooshieblob 画师列表
GET /anima_t8/dtags?category=artist|copyright|character|meta Danbooru 四类标签(v1.2 加 meta)
GET /anima_t8/dtags/preview?name=xxx 拉取某 tag 的代表作首图 URL(带本地 LRU 4096 缓存)
GET /anima_t8/dtags/image?u=xxx 同源图片代理(白名单 cdn.donmai.us / danbooru.donmai.us)
POST /anima_t8/dtags/refresh 强制刷新某 category 的标签库
POST /anima_t8/artists/pin Pin / 取消 Pin 一个画师
POST /anima_t8/civitai/refresh v1.2 按 model_id 抓取 Civitai 高赞图 prompt 并写入风格库

🗂️ 项目结构

comfyui-anima-t8/
├── __init__.py              # ComfyUI 节点注册入口
├── pyproject.toml           # 包元数据(v1.0.0)
├── requirements.txt         # Python 依赖
├── api/
│   ├── danbooru_client.py   # Danbooru 标签拉取(4 路并发, 4 类: artist/copyright/character/meta)
│   └── civitai_client.py    # v1.2 Civitai images API 客户端 + ComfyUI workflow 解析 + 自动归类
├── core/
│   ├── db.py                # SQLite 自愈连接
│   ├── artist_manager.py    # mooshieblob 画师管理
│   ├── danbooru_manager.py  # Danbooru 标签管理 + 预览图代理
│   ├── tag_manager.py       # 风格库分类标签(增量种子)
│   └── prompt_manager.py    # 风格库 prompt 预设(增量种子,按 title 去重)
├── nodes/
│   ├── anima_prompt_node.py
│   ├── anima_artist_node.py # Anima Artist Style T8(含 PREVIEW_IMAGES 输出)
│   ├── anima_combiner_node.py
│   └── anima_loader_node.py
├── server/
│   └── routes.py            # aiohttp 路由(含图片代理 + 后台补全)
└── web/                     # 前端注入到 ComfyUI 主面板
    ├── anima_t8.js          # 入口扩展
    ├── api.js               # 前端 API 封装
    ├── components/
    │   ├── prompt_panel.js  # 风格库面板
    │   ├── artist_gallery.js # 4 Tab 画师 / IP 画廊
    │   └── tag_chip.js
    └── styles/
        └── anima_t8.css

🧠 设计要点

首屏快速 + 后台补全

切到 Danbooru 任一 Tab 时:

  1. 后端先拉前 2 页(2000 条)立即返回,前端 25 秒可用
  2. 同时启动后台 fetch(force_refresh=True, max_pages=30) 4 路并发补全
  3. 响应附带 backfilling: true 标记 → 前端显示"· 后台补全中…",并在 8s 后自动重拉
  4. 第二次进入相同 Tab → 直接从 SQLite 秒开

浏览器兼容的图片代理

直连 cdn.donmai.us 在某些网络/扩展环境下会被拦截(防盗链 / CSP / 本地拦截器),所有 Danbooru 图片统一走 /anima_t8/dtags/image?u=... 后端同源代理:

  • SSRF 防护:仅允许 cdn.donmai.us / danbooru.donmai.us
  • Referer 头:https://danbooru.donmai.us/ 绕过防盗链
  • HTTP 缓存:Cache-Control: public, max-age=86400

"本次选中"语义

Anima Artist Style T8 的 artist_tags 是累积式 textarea(保留历史选择),但 PREVIEW_IMAGES 应该只反映本次操作。解决方案:

  • 新增隐藏 last_picked widget,每次"添加选中"前端覆盖式写入
  • 节点 build() 优先用 last_picked,为空才退回 artist_tags 全部

📝 版本历史

v1.4.3 (2026-05)

  • 🎨 STYLE_PROMPT 合并 last_picked 额外 tokenlast_picked 里不在 artist_tags 中的裸 token(作品 IP / 角色 IP / 风格·meta 等)以裸名追加输出,以 , 连接。例:artist_tags=@dairi, @ebifurya + last_picked=dairi, ebifurya, original@dairi, @ebifurya, original(画师去重,额外 meta 追加)

v1.4.2 (2026-05)

  • 🎨 STYLE_PROMPT 输出格式修正:原不论画师还是 IP/角色/meta 全部输出为 (artist:xxx);改为按 @ 标记区分:画师输出 @name / (@name:weight),其他裸 name / (name:weight)use_artist_prefix 语义重定义为“是否保留画师 @ 前缀”
  • 🐛 修复名字里右括号被误删:原 name.rstrip(")") 会把合法名字中的尾部 ) 吃掉(如 kouji_(campus_life)kouji_(campus_life);改为仅在左右括号不平衡时才逐个剔除

v1.4.1 (2026-05)

  • 🐛 修复 last_picked widget 被覆盖问题:原 appendArtistsToWidget / setLastPickedRaw 是覆盖式写入,每次选新 token 都会清空之前的列表;改为累加去重(a, b + b, ca, b, c),与上面 artist_tags widget 行为保持一致
  • ♻️ 抽出 helper _stripToRawName / _appendLastPicked:去重复的 token 归一化逻辑(括号 / @ / artist: / :weight 剥离)集中到一处,避免两处维护不同步

v1.4.0 (2026-05)

  • 🐛 修复预览图黑屏(last_picked 带 @ 前缀):前端 appendArtistsToWidgetlast_picked 时剥离 @ / 括号 / artist: / :weight;后端新增 _strip_name_for_query 工具,_parse_names + build() 同步剥离 @ 作双保险,避免 Danbooru 查询返回 0 结果触发 64×64 黑图兜底
  • 🐛 修复 AnimaArtistStyleT8 节点上 IP/角色/风格·meta 运行无反应:原逻辑遇到非画师类直接 toast 拒绝;改为写入 last_picked(用于 PREVIEW_IMAGES 拉 Danbooru 代表作首图,不污染 STYLE_PROMPT)+ 同步追加到画布 AnimaPromptT8 的 positive widget;新增 helper setLastPickedRaw
  • 🎨 预览图改为等比缩放 + 居中黑边填充(letterbox):替换原 im.resize((512, 768)) 强制拉伸;用 min(512/w, 768/h) 算缩放比例后 Image.LANCZOS 缩放,再 paste 到 (512, 768) 黑底画布居中位置;保持 ComfyUI batch tensor 形状一致,画面不再变形
  • 🛠 Civitai 拉取 0 条修复:兼容 2026 年新 meta 结构变体(直 meta.prompt / 嵌套 meta.meta / ComfyUI workflow JSON);新增 _extract_from_comfy_workflow(按 _meta.title 区分 Positive/Negative,支持 ["nodeId", 0] 引用追溯最深 4 层);新增 _extract_score(reactionCount fallback heart+like+laugh+cry+comment)
  • Civitai 自动归类:新增 _auto_classify + 14 组优先级关键词(画质 / 媒介 / 光影 / 镜头 / 构图 / 服装 / 表情 / 季节 / 时代 / 场景 / 风格 / 情绪 / 角色 / NSFW),每条模板按 prompt 内容自动打 ≤3 个分类 tag

v1.3.0 (2026-05)

  • 🔧 风格库"应用"按字段映射 + 空字段保护:模板某字段为空则不覆盖对应 widget,保护用户已选画师 / 已调节词;想强制清空可在模板里填一个空格
  • 🔧 艺术家库统一写入 STYLE widget:画师 / 作品 IP / 角色 IP / 风格·meta 全部去重追加到 Anima Prompt T8 的 style 字段(不再污染 positive 主体词框);新增公用工具 appendTokensToStyle
  • 🐛 修复 PREVIEW_IMAGES 黑图:v1.1 起 last_picked widget 写入了带 @ 前缀的 token,后端 _fetch_preview_pil@xxx 查 Danbooru 永远 0 结果。前端写入时剥离 @ / 括号 / artist: / :weight;后端 _parse_names + build() 同步剥离 @ 作双保险
  • 🐛 修复风格库"应用"按钮无反应:兼容新版 ComfyUI Frontend selected_nodes 三态(Object / Array / Map),加 try/catch + 明确 toast;为 AnimaSavedPromptLoaderT8 节点补 onApply fallback(自动写到画布上的 AnimaPromptT8)
  • 🧹 保留 STYLE_PROMPT 仍带 @ 前缀(v1.1 行为不变);保留 AnimaArtistStyleT8 节点的 artist_tags widget 专用路径

v1.2.0 (2026-05)

  • 风格库扩充 12 → 52 条预设,全部 Pony 兼容(开头 score_9, score_8_up, score_7_up
  • 15 个分类(新增:媒介 / 镜头 / 情绪 / 季节 / 时代)
  • 🌐 Civitai 一键抓取:按 model_id 拉高赞图 prompt,自动按关键词归类
    • 兼容 Civitai 三种 meta 结构(直 prompt / 嵌套 meta.meta / ComfyUI workflow)
    • 14 组关键词自动分类(画质 / 媒介 / 光影 / 镜头 / 构图 / 服装 / 表情 / 季节 / 时代 / 场景 / 风格 / 情绪 / 角色 / NSFW),每条最多 3 个 tag
  • 🎭 风格·meta Tab:新增 Danbooru meta category 拉取(CATEGORY_NAMES 加 5: meta)
  • 🧬 增量种子机制ensure_default_tags / ensure_default_prompts 改按 name / title 去重,升级版本不覆盖用户已编辑的预设
  • 🔌 新路由 POST /anima_t8/civitai/refresh

v1.1.0 (2026-05)

  • 🔧 Anima Prompt T8 节点默认正向词追加 score_9, score_8_up, score_7_up
  • 🔧 艺术家库写入画师统一加 @ 前缀,避免与作品 / 角色 IP 混淆

v1.0.0 (2026-05)

  • ✨ 完整 4 Tab 素材库(mooshieblob + Danbooru 三类)
  • ✨ Anima Artist Style T8 新增 PREVIEW_IMAGES 输出,运行节点即出风格图
  • ✨ 后端图片代理 + 4 路并发标签拉取 + 首屏 2 页快速返回
  • ✨ Pin 收藏 / A-Z 字母筛选 / 关键字搜索 / 仅固定模式
  • 🛡️ SQLite 自愈机制(损坏自动重建)
  • 🛡️ SSRF 白名单 + Referer 头绕开防盗链

🙏 致谢


📜 License

MIT © 2026 T8mars

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors