🐛 Bug 反馈 / 💡 建议 / 👨💻 插件开发交流,欢迎加群:
💬 插件使用问题 / 🐛 Bug反馈 / 👨💻 插件开发交流,欢迎加入QQ群:1085190201 🎉
💡 在群里直接艾特我,回复的更快哦~ ✨
定型文生成器。给一段示例文案,再给一个主题,让大模型照着它的措辞和语气写一篇新的。
移植自 nonebot-plugin-copywrite,感谢原作者 Yan-Zero 的文案模板与 prompt 设计。
你说得对,但是 koishi-plugin-copywrite 定型文生成器是由 Koishi 社区开发者打造的一款全新文案仿写插件。插件运行在一个被称作「示例文案」的语言世界中,在这里,被用户选中的人将被授予「主题」,导引措辞与语气之力。用户将扮演一位名为「生成器」的神秘角色,在自由的仿写中邂逅风格各异、腔调独特的示例文案们,和它们一起提炼句式、复刻语气,生成贴合主题的新文案——同时,逐步发掘「定型文生成」的真相。
示例输入:
文案 你说得对 claude账号被Anthropic封禁
示例输入:
汉语新解 claude账号被Anthropic封禁
👉 查看更多预览
使用 Yarn:
yarn add koishi-plugin-copywrite使用 npm:
npm install koishi-plugin-copywrite启用后会自动把内置模板释放到 data/copywrite/presets/,开箱即用。
/文案 的别名为 /模仿文案。指令名与别名都可以在配置里修改(默认主指令 copywrite,别名 文案、模仿文案;汉语新解默认 new-meaning,别名 汉语新解)。
| 指令 | 说明 |
|---|---|
/文案 |
完整帮助:实时列出全部分类与模板,并附用法 |
/文案 --help |
简洁的指令语法与选项说明 |
/文案 【类型】 |
查看该模板的说明 |
/文案 【类型】 【题材】 |
生成文案 |
/文案 【类型】 【关键词…】 【题材】 |
该模板需要多个关键词时按顺序填写 |
/文案 reload |
重新扫描模板目录 |
/文案 reset |
重新释放内置模板(覆盖同名文件) |
/文案 clone 【原名】 【新名】 |
复制一份模板到用户目录 |
/文案 rm 【名字】 |
删除用户目录里的模板 |
/汉语新解 【词】 |
用全新角度解释一个词,输出图片 |
管理指令默认需要 Koishi 权限等级:clone / rm 为 3,reload / reset 为 4,均可在配置里调整。
- 引用触发消息:
enableQuote(默认开启)作用于所有指令回复,包括帮助、列表、错误与生成结果。 - 等待提示:
enableWaitingHint(默认开启)只在调用模型时发送「正在生成」提示,完成后自动撤回。 - 思考消息:
sendReasoning(默认关闭)开启后在正文之前单独发送模型的思考过程。 - 思考消息走 QQ Markdown:
enableReasoningViaQQMarkdown(默认关闭)仅对platform = qq生效,用> xxx引用块发送思考消息;正文始终是普通文本。 - 思考消息长度:
reasoningMaxChars(默认2222)超出后保留开头 80%、结尾 20%,中间以「省略 N 字」代替。 - QQ 官方 Bot 按钮:
enableQQButtons(默认开启)仅在platform = qq时,于帮助/生成结果后追加一条「查看文案 / 再来一条」按钮消息;群聊点击只会把指令填入输入框。按钮 JSON 可在qqButtonsJson里调整,支持变量${commandName}、${randomType};为空或 JSON 无效时不会发送按钮,并在聊天中提示。
两种方式,在 llmMode 里选优先级:
- ChatLuna:装了
koishi-plugin-chatluna就能直接选模型,chatlunaModelMap可把模板里的模型名映射成 ChatLuna 的platform/model。 - 自定义 API:在
customProviders里按模板的model字段配置baseURL/apiKey,支持 OpenAI 兼容与 Anthropic 两种格式。
四种模式:仅 ChatLuna、仅自定义、先 ChatLuna 后自定义、先自定义后 ChatLuna。默认先 ChatLuna,没装则自动回退自定义。
自定义 API 的温度、最大 token 数、超时和思考等级是全局配置,在「⚙️ 调用参数」里调整。
思考等级支持 auto / off / low / medium / high / xhigh / max:
auto:不发送reasoning_effort,由上游决定off:关闭思考(CommandCode / goat 实测有效,reasoning_tokens归零)- 其余为具体强度;Anthropic 通道会映射为
thinking.budget_tokens
不同中转支持的取值可能不同。例如 CommandCode 只接受
off|low|medium|high|xhigh|max,传none会返回 400。
输出被截断(finish_reason=length / stop_reason=max_tokens,无论是否已有部分正文)时,插件会自动兜底,两个开关可独立关闭:
retryWithoutReasoning(默认开启):先关闭思考重试一次retryWithMoreTokens(默认开启):关闭思考仍失败时,把maxTokens翻倍重试一次(OpenAI 上限 10240,默认值 5120 下会提到 10240)
重试后仍然截断时,由 truncateBehavior 决定:
partial(默认):返回最后一次的半截内容;汉语新解若没有完整 SVG 会提示输出被截断error:直接报错,不返回半截内容
__category__: 分类名
__model__: sol # 可选:该文件所有条目的默认模型
文案名:
examples:
- |
第一段示例
第二段示例
addition: "对模型的额外约束,可以用 {} 引用关键词。"
model: gemini-2.5-flash-nothinking # 可选:覆盖文件级默认模型
keywords: 1
help: 这条文案的使用说明__model__是文件级默认模型,条目内写了model时以条目为准。- 模型名可以对应
customProviders的 key,也可以用chatlunaModelMap映射到 ChatLuna。 - 放进
data/copywrite/presets/就生效,目录被监听,改完保存即可,不用重启。
「汉语新解」使用 霞鹜文楷(LXGW WenKai Mono) 渲染 SVG 卡片,遵循 SIL Open Font License 1.1。
- 插件启动时会检查
<koishi>/data/fonts/LXGWWenKaiMono-Regular.ttf,缺失或 hash 不匹配时自动从 Gitee release 下载,失败后回退 GitHub release。 - 可在
svgFontPaths里追加字体文件或目录(相对路径按 KoishibaseDir解析),并用svgContentFontFamily/svgTitleFontFamily指定实际字体名。 - 关闭
svgEnableCustomFont或svgAutoDownloadFont后,会回退到系统字体与svgFontFamily。
本项目移植自 nonebot-plugin-copywrite (作者 Yan-Zero,Apache-2.0),包含其文案模板 YAML、prompt 构造逻辑与「汉语新解」prompt (prompt 原作者:李继刚)。
主要改动:Python → TypeScript,并针对 Koishi 重新实现指令与 LLM 接入层。详见 NOTICE。


