Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sd-tag-editor

轻量的 Stable Diffusion 标签编辑器(Vue 3 + Vite)。

目的:为 Stable Diffusion 提供一个本地化的、基于 CSV 的标签(tag)挑选、加权和复制工具,支持通用/画师/角色三类标签、权重调整、符号分层和拖拽排序。

主要特性

  • 支持从项目根目录 tags/ 中读取 CSV(开发环境)或从 public/tags/ 读取(生产静态部署)。
  • 兼容 Danbooru 风格的 6 列 CSV:tag,category,post_count,aliases,is_locked,antecedent_alias,也能容忍没有表头的老式 CSV(只要每行至少包含 tag,category,post_count)。
  • 分页(每页 30 条)、搜索、页码跳转、按 post_count 过滤(全局最小阈值)。
  • 选择多标签、拖拽重排、为单个标签设置权重(默认 1,步进 0.1)和符号加权(可多层的 (){}),复制时将按顺序输出。

快速开始(开发)

# 安装依赖并启动开发服务器
npm install
npm run dev

打开浏览器访问 http://localhost:5173(终端会显示实际端口)。

如何放置你的标签文件

  • 开发时(推荐调试与本地使用):把 CSV 放到项目根的 tags/ 目录(即仓库根下的 tags/),开发服务器会通过内置中间件自动枚举并提供 /tags/_list/tags/<name>.csv 两个接口供前端读取。中间件会:

    • 优先识别含有标准表头的 CSV(tag,category,post_count,aliases,is_locked,antecedent_alias);
    • 若 CSV 为无表头格式,也会尝试基于首条数据行(检查 categorypost_count 是否为数字)判定并包含该文件;
    • 如果目录下没有任何符合条件的文件,前端将回退到 public/tags/list.json 中列出的示例文件。
  • 生产部署(静态主机):构建后不含开发中间件,建议将需要在生产读取的 CSV 放到 public/tags/,并确保 public/tags/list.json 列出这些文件名,或者由你的服务器提供与开发中间件等效的静态接口。

CSV 格式说明(务必遵守)

  • 文件按 CSV,每行代表一个 tag(可以是包含别名的老式无表头 CSV):
    1. tag — 标签本身,使用下划线格式(例如:long_hair1girl)。
    2. category — Danbooru 分类编号,重要:0=general,1=artist,3=copyright,4=character,5=meta。
    3. post_count — 在 Danbooru 上的出现次数(用于强度过滤与排序)。
    4. aliases — 用 | 分隔的别名(可为空)。
    5. is_locked — 管理员锁定标记(0/1,可忽略)。
    6. antecedent_alias — 如果当前行为别名,该列为主标签;否则为空。

注意:本仓库包含大量真实标签示例(请勿让工具在内存中一次性加载整个大表以避免性能/内存问题)。开发中间件与前端组件已设计为只读取文件内容并按需分页渲染,但如果你有百万级别的行,请在将文件放入 tags/ 前先对其进行裁剪或分割。

UI 使用说明(简要)

  • 标签列表:搜索 / 筛选(按 post_count 与 alias)并分页显示。
  • 选择:点击标签将其加入右侧“已选标签”面板,不同 Tab(通用/画师/角色)之间切换不会清空已选项。
  • 已选项:可为单个标签设置权重(默认 1,步进 0.1)、切换符号类型 (){}、增加/减少符号层级、拖拽重排、删除。
  • 复制:点击复制按钮将按当前顺序生成带符号和权重的文本并写入剪贴板(权重为 1 时省略 :1),UI 会短暂显示 “已复制” 提示。

开发者说明

  • 中间件实现位于 vite.config.ts(开发环境),提供 /tags/_list/tags/<file>.csv。这仅在 npm run dev 时生效。
  • 前端 CSV 解析使用 PapaParse(已包含在依赖中),并支持有表头和无表头两种情况。

示例文件

  • 项目自带一些示例 CSV 存放在 public/tags/public/tags/list.json 列出了可用示例。

常见问题

  • Q: 我把 CSV 放到 tags/ 里但前端没有列出它们? A: 请确认 CSV 行至少包含 tag,category,post_count 三列,且 categorypost_count 能解析为数字。开发中间件会尝试判定但不会深度校验整个大文件的每一行。

下一步 / 贡献

  • 若你希望我把你的无表头大表自动转换为带完整表头的 CSV(不修改原文件,生成到 public/tags/),我可以帮你批量生成一个带表头的副本并更新 public/tags/list.json

License

  • 本项目为个人/内部工具演示,未附加特定开源许可证(如需许可证请告诉我)。

联系方式

  • 在仓库中直接编辑/提交 issue,或通过当前会话告诉我接下来要我做的事。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages