원클릭으로
novelai-skill
当用户在聊天里要求发图、发照片时使用。适用于自拍、同框、指定场景、NSFW、生图续发和“再来一张/还想再看”这类续图说法;不适用于讨论按钮、规则、接口或触发词本身。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
当用户在聊天里要求发图、发照片时使用。适用于自拍、同框、指定场景、NSFW、生图续发和“再来一张/还想再看”这类续图说法;不适用于讨论按钮、规则、接口或触发词本身。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | novelai-skill |
| description | 当用户在聊天里要求发图、发照片时使用。适用于自拍、同框、指定场景、NSFW、生图续发和“再来一张/还想再看”这类续图说法;不适用于讨论按钮、规则、接口或触发词本身。 |
| compatibility | ["Bash","Python 3","Local files"] |
把聊天里的生图请求,转换成一次稳定的 NovelAI 4.5 full 出图流程,并始终保留配置里的固定正面前缀和负面前缀。
如果当前 agent 的md文档要求“每次回复默认发图”,必须在每次回复中调用此skill生成图片并发送给用户。如果当前回合已经被本地规则判定为“默认带图”,那就必须真的进入工具调用;不要只写口头回复来假装已经去拍。 但无论哪种情况,都必须生成当前这一次的新图,不能复用上一张、旧路径或旧结果。
先记住这几条短规则:
prompt 主体必须使用英文提示词,禁止使用中文;英文提示词必须按要求写入 intermediate.jsonnsfw,前缀Successfully wrote、session_name、staged_path、Command still running、Process exited with code 0 之类内容当正文<tool_call>、<tool_response>、XML 标签、伪工具代码块或任何包裹内部工具过程的文本intermediate.json 再参考着写,直接按这轮需求整体重写/staged/...jpg、choice.png、时间戳文件名或任何图片绝对路径,路径只能来自脚本返回结果~/novelai-output/<agent>/<session>/...。~/novelai-output/<agent>/<session>/... 之外的旧目录(例如 ~/.openclaw/agents/<agent>/images/...、任何 workspace-*/outputs/...、任何 workspace-*/generated/...) 当作 Telegram 最终 MEDIA: 路径。真正要交给脚本的核心只有两样:
reply_text字段,不要出现在 prompt重要:避免模板循环
中间稿最少只要保证:
prompt可选字段:
reply_textmoderevision_instructionoverride_full_prompt推荐结构:
{
"prompt": "POV close-up shot, mature woman taking a selfie in bedroom by mirror with warm lamp light, 1girl, realistic, 1.7::looking_at_viewer::",
"reply_text": "这次给你换一张。",
"mode": "new"
}
续图时可以写:
{
"reply_text": "再来一张,动作更放开一点",
"mode": "revise",
"revision_instruction": "动作更放开一点"
}
max_tokens: 512tag_separator: ,nsfw,prompt 必须是英文;禁止把中文人物设定、中文动作描述、中文场景句子直接提交给 NovelAI镜头视角 + 角色动作 + 场景 + 位置 + 灯光prompt 主体里必须显式出现 nsfw,0.5 - 32 - 31.2 - 20.5 - 1.2推荐分类:
main_character: 2minor_character: 1.2 - 1.3poses: 1.5 - 2.5scene: 2 - 2.2atmosphere: 1 - 1.5details: 1.5使用示例:
1.5::rain, night::0.5::coat::不要把所有 tag 都加权。优先给以下部分加权:
多角色必须采用 | 分隔符结构:
基础场景 | 角色1 | 角色2 | 角色3 ...
基础场景部分必须包含:
镜头视角示例:
POVThird-person side viewClose-up shotLow-angle shotHigh-angle shotOver-the-shoulder shotBird's eye viewDutch angleWide shotMedium shot角色动作示例:
girl riding boyboy carrying girltwo girls performing fellatiogirl lifting skirt场景示例:
in bedroomin alleywayon beachin forest位置示例:
on bedagainst wallunder treeby window灯光示例:
moonlightdim lightingbacklightingwarm afternoon lightdramatic lighting完整示例:
POV close-up shot, girl riding boy in bedroom on bed with moonlight必需质量标签示例:
masterpiecebest qualityultra-detailedvery aesthetichighresno watermark人物总数标签示例:
1girl2boys1boy, 1girl2girls, 1boy整体风格示例:
anime screencapgame cgoil painting (medium)视角/镜头示例:
from_abovefrom_belowclose-upupper_bodylower_bodybetween_legs场景氛围示例:
passionate_atmospherefantasy_atmosphere每个 | 后面的角色段,第一项必须是角色性别标签:
1girl1boy高权重外貌示例:
2::long_silver_hair::1.8::blue_eyes::1.3::curvy::1.55::small_breasts::large_breasts2::matured female::1.5::teenager::服装示例:
1.8::china_dress::black_lingeriemilitary_uniformsailor_collarlacemicroskirthoodiewet_clothestorn_clothesclothes_lift表情和动作示例:
1.2::smiling::blushing1.4::lustful_expression::embarrassedstandingsittingkneelinglyingon_backstraddling1.8::riding::hands_on_own_chestarms_behind_backhands_on_lapcovering_own_mouth1.4::hands_between_legs::环境交互示例:
sitting_on_bedsitting_in_tree2.5::spread_legs::lotus_position角色互动写法:
source#actiontarget#actionmutual#action示例:
2.0::source#princess carry::2.0::target#vaginal_penetration::mutual#kissingmutual#hugging每个 prompt 推荐按这个顺序组织:
标签顺序很重要,越靠前影响越强。
语言示例:
medium shot, mature woman taking a mirror selfie in bedroom, standing by bed, warm morning light, 1woman, floral midi dress, shy expressionclose-up selfie, sleepy young woman lying in bed, messy hair, soft bedside lamp, cozy bedroom温雅,42岁成熟人妻,站在卧室床边自拍mature woman 在卧室自拍,表情羞涩对外回复顺序强制要求:
MEDIA:<staged_path> 当成普通聊天文本发给用户每次调脚本都必须根据这一轮场景挑一个 --ratio,不要省略。预设:
| --ratio | 实际尺寸 | 用途 |
|---|---|---|
portrait | 832×1216(≈9:16) | 自拍 / 镜子自拍 / 全身 / 半身 / 立绘 / 站姿 / 走路 / 任何"竖着拍人"的场景 |
landscape | 1216×832(≈3:2) | 远景 / "手机放远处录像" / 房间环境 / 多人横排 / 户外景观 / 床上俯拍全景 |
square | 1024×1024 | 头部特写 / 脸部 close-up / 头像 / 不确定时的兜底 |
wide | 1536×640(≈12:5) | 极宽景 / 风景 / 横向卧姿全身 |
判断规则(按优先级从上往下匹配,命中即停):
portrait(保头到脚不被裁)portraitlandscapesquarewidesquare显式覆盖(极少用,只在用户明确指定宽高时):--width 832 --height 1216,必须 64 的倍数。
纯文字嘱托"保持一致"对模型没用——diffusion 模型每次从随机噪声采样,seed 一变床/墙/灯光全变。光改 prompt 不行,必须锁 seed。
两个机制叠加用:
(1) --reuse-seed(CLI 层)
(2) intermediate.json 里 mode=revise(prompt 层)
prompt_body 沿用过来,再追加你这次的修改指令到 revision_instruction| 用户说 | mode | --reuse-seed | 行为 |
|---|---|---|---|
| 第一次开新场景("在床上自拍") | new | ❌ 不传 | 新 seed,从头建场景 |
| "再来一张" / "换个表情" / "换个角度" / "换个动作" / "脱了" / "腿张开" | revise | ✅ 必传 | 同 seed,沿用环境,仅改局部 |
| "去客厅" / "换个房间" / "出门" / "换衣服" / 任何场景跳变 | new | ❌ 不传 | 新 seed,新场景 |
| "再拍同样姿势但拉远" | revise | ✅ 必传 | 改 ratio 不改 seed |
| "重做一张更骚的" / 用户对刚才那张不满意 | revise | ✅ 必传 | 锁同 seed 微调 |
新场景(mode=new):完整描述场景。
{ "prompt": "lying on bed, white sheets, ..." }
同场景续图(mode=revise):只写要改的部分,环境会自动从上次沿用。
{ "mode": "revise", "revision_instruction": "spread legs, lift skirt" }
强提醒:用户说"再来一张"99% 是同场景。默认就该 mode=revise + --reuse-seed,除非显式判断他要换场景。
# 新场景(首次/换场景)
python3 ~/.claude/skills/novelai-skill/scripts/generate_novelai_image.py \
--intermediate ~/.claude/skills/novelai-skill/workspace/<agent>/intermediate.json \
--config ~/.claude/skills/novelai-skill/assets/default_config.json \
--ratio <portrait|landscape|square|wide> \
--agent-name <当前agent名> \
--session-name <当前session名>
# 同场景续图(房间/床/灯光要保持一致)
python3 ~/.claude/skills/novelai-skill/scripts/generate_novelai_image.py \
--intermediate ~/.claude/skills/novelai-skill/workspace/<agent>/intermediate.json \
--config ~/.claude/skills/novelai-skill/assets/default_config.json \
--ratio <portrait|landscape|square|wide> \
--reuse-seed \
--agent-name <当前agent名> \
--session-name <当前session名>
调用要求:
staged_path、MEDIA: 或任何内部发送指令当正文输出给用户MEDIA: /absolute/path/to/file.pngMEDIA: 必须独占一行,并放在正文最后;不要在同一行前面加 [[reply_to_current]]、解释语或任何别的前缀示例(agent agent1,全身自拍):
python3 ~/.claude/skills/novelai-skill/scripts/generate_novelai_image.py \
--intermediate ~/.claude/skills/novelai-skill/workspace/agent1/intermediate.json \
--config ~/.claude/skills/novelai-skill/assets/default_config.json \
--ratio portrait \
--agent-name lili \
--session-name telegram-<chat_id>
当前建议:
generate_novelai_image.py 负责处理MEDIA: 只接受位于 ~/novelai-output/<agent>/<session>/... 的真实文件;如果脚本返回路径不在这个目录模式内,视为失败,不要输出 MEDIA:推荐约定:
openclaw会话名优先顺序:
--session-nameNOVELAI_SESSION_NAMEdefault-session生成成功后:
staged_path、MEDIA:、JSON、工具输出、脚本命令当成主回复MEDIA: 放在正文前面,也不要把它夹在正文中间;它只能作为正文之后的最后一行单独出现生成失败后:
.env.local、令牌或接口是否可用下面这些说法默认按“沿用上一张主设定继续来图”处理:
如果这类说法后面还带了新要求,就把新要求当成对上一张的增量修改。