visual-prompt-kit
v0.1.0
Published
Composable visual prompt toolkit for image generation workflows.
Downloads
16
Maintainers
Readme
visual-prompt-kit
面向图像生成工作流的结构化提示词 toolkit。
目标
- 所有内容统一服务于 甜美少女摄影。
- 每个维度都保持 短词、解耦、可随机拼装。
- 第一阶段负责生成结构化关键词。
- 第二阶段负责给 AI 一段重组指令,把关键词写成适合 Google、豆包等通用生图模型理解的最终提示词。
维护者如果要新增或修改关键词,直接看 docs/keyword-authoring.md。
当前主题
目前内置 1 个主题:
sweet-girl
它包含 10 个维度:
sceneexpressionlightingstylevibefacialsubjectoutfitposecamera
目录结构
photo_skills/
package.json
README.md
docs/
keyword-authoring.md
skills/
image-prompt-composer/
SKILL.md
bin/
visual-prompt.js
src/
index.js
cli.js
define.js
generator/
export.js
generateTags.js
locks.js
pick.js
seed.js
prompt/
buildPromptRequest.js
index.js
serializePromptRequest.js
validate/
index.js
rules.js
theme.js
themes/
index.js
sweet-girl/
index.js
manifest.js
presets/
index.js
dimensions/
scene.js
expression.js
lighting.js
style.js
vibe.js
facial.js
subject.js
outfit.js
pose.js
camera.js
test/
cli.test.js
prompt.test.js
theme.test.js两阶段工作流
推荐按两阶段使用:
- 第一阶段:生成视觉骨架关键词。
- 第二阶段:输出给 AI 的重组指令,让 AI 把这些关键词写成适合通用生图模型理解的最终生图提示词。
对应关系:
generate/generateTags():生成关键词prompt/buildPromptRequest():生成给 AI 的重组指令
对外 API
包的主入口在 src/index.js。
当前暴露的核心 API:
getTheme(themeId)listThemes()listDimensions(themeOrId)getDimension(themeOrId, dimensionKey)validateTheme(theme)generateTags(options)buildPromptRequest(options)flattenSelection(tags)serializeSelection(result, format)serializePromptRequest(request, format)
使用示例
第一阶段:生成关键词
const { getTheme, generateTags } = require("./src");
const result = generateTags({
theme: getTheme("sweet-girl"),
seed: "2026-03-28",
preset: "campus",
locks: {
scene: ["樱花步道"],
vibe: ["校园心动感"]
}
});
console.log(result.tags);
console.log(result.flat);第二阶段:生成给 AI 的重组指令
const { getTheme, generateTags, buildPromptRequest } = require("./src");
const selection = generateTags({
theme: getTheme("sweet-girl"),
seed: "2026-03-28",
preset: "flowerhouse"
});
const request = buildPromptRequest({
theme: getTheme("sweet-girl"),
selection
});
console.log(request.system);
console.log(request.user);你可以把 request.system 和 request.user 直接喂给外部 AI,让它输出适合 Google、豆包等常见模型理解的最终生图提示词。
Preset
当前内置 4 个 preset:
campusbeachbedroomflowerhouse
校验规则
validateTheme(theme) 当前会检查:
- 维度 key 是否重复
- 词条是否为空
- 维度内是否有重复词
- 词条长度是否超标
- 是否命中主题禁词
- 词库规模是否低于推荐阈值
命令
在 photo_skills/ 目录下可直接运行:
npm test
npm run validate
npm run sample -- --seed sample-seed --preset beach
npm run prompt -- --seed sample-seed --preset campus安装后 Bin 使用示例
本地开发阶段,先在包目录执行:
cd photo_skills
npm link完成后即可直接调用:
visual-prompt themes
visual-prompt dimensions --theme sweet-girl
visual-prompt presets --theme sweet-girl
visual-prompt validate --theme sweet-girl
visual-prompt generate --theme sweet-girl --preset campus --seed 2026-03-28
visual-prompt generate --theme sweet-girl --preset beach --lock scene=海边栈桥 --format txt
visual-prompt prompt --theme sweet-girl --preset campus --seed 2026-03-28
visual-prompt prompt --theme sweet-girl --preset flowerhouse --lock scene=白色花房 --format txt如果不想全局链接,而是在其他项目里按本地包安装,也可以这样:
npm install ../photo_skills
npx visual-prompt themes
npx visual-prompt generate --theme sweet-girl --preset bedroom --format txt
npx visual-prompt prompt --theme sweet-girl --preset bedroomCLI 命令
当前 CLI 支持:
themesdimensionspresetsvalidategenerateprompt
CLI 关键参数:
--theme, -t--preset, -p--seed, -s--format, -f--lock, -l--count, -c
默认输出策略:
generate默认输出jsonprompt默认输出txtthemes/dimensions/presets/validate默认输出文本
Skill 封装
项目内提供了一个通用 Agent Skills 兼容 skill:
skills/image-prompt-composer
这个 skill 的职责不是重复实现生成逻辑,而是教代理如何调用 visual-prompt generate 和 visual-prompt prompt。它适合给 OpenClaw、Claude 或 Codex 这类支持 SKILL.md 的环境复用。
