📖 小说封面不求人:AI一键免费生成,51mazi太牛了

💡 写小说最烦的两件事:一是起名,二是做封面。起名可以交给 AI,封面呢?找设计师贵、自己不会 PS、模板又太丑……本文介绍 51mazi 里「AI 生成小说封面」的完整体验:从提示词里自动带上书名和笔名,到多尺寸、多张生成、确认后一键设为封面,全部在写作软件里完成。文末附实现思路与 GitHub 链接,欢迎直接拿代码、提需求、点 Star。

📋 目录

😫 封面之痛:很多作者的共同烦恼

小说写完了,总要有个封面。现实往往是:

  • 找设计师:贵、排期长、沟通成本高,改一版又要加钱
  • 自己 PS:不会用、没时间学,模板字体丑、排版土
  • 在线模板:千篇一律、书名笔名位置固定,很难做出「这本书」的感觉
  • 随便找图:版权风险、和内容不搭,平台审核还容易翻车

结果就是:很多作者要么将就一张图用到底,要么反复折腾,耽误写下一本的时间。

更理想的方式:在写作软件里,根据「书名 + 笔名 + 风格描述」一键生成多张候选图,选一张确认就成正式封面,全程不离开创作环境。这就是 51mazi 里「AI 生成小说封面」要解决的问题。

在这里插入图片描述

51mazi 书架界面 — 在这里管理书籍,编辑书籍时可打开「AI 生成封面」一键做封面

🤖 AI 封面的优势:快、可控、可迭代

把通义万相(文生图)接到写作软件里之后,可以做到:

  • :几十秒出一张图,不用等设计师、不用学 PS
  • 可控:提示词里明确写「封面上必须显示书名《xxx》和作者笔名 xxx」,模型会尽量把文字画进图里
  • 可迭代:一次生成多张(ai_cover1.png、ai_cover2.png…),不满意就「再生成一张」,直到挑中再「确认使用」
  • 本地落盘:所有生成的图都保存在书籍根目录,确认的那张复制为 cover.png,和书籍数据一起管理,不依赖云端相册

对作者来说,封面从「外包/自学/凑合」变成「在软件里点几下就能搞定」的流程。

🎯 功能长什么样:从填写到确认

在 51mazi 里,从书架进入「编辑书籍」即可看到封面相关入口,打开「AI 生成封面」弹框后,流程大致是:

  1. 填写笔名、选尺寸
    笔名会写进提示词,让封面上出现作者名;尺寸支持常见比例(如 600×800、1280×1280 等),对应不同平台要求。

  2. 写封面要求(风格/元素)
    用户自由描述:古风、现代、玄幻、简约、要有山有海等。这部分会和「书名」「笔名」一起拼成完整提示词发给通义万相。

  3. 点「生成封面」
    弹框内提示「正在努力生图中,不要关闭弹框」,避免用户误关;生成完成后图片出现在列表里,自动选中最新一张。

  4. 多张候选、确认一张
    可继续「再生成一张」,所有图按 ai_cover1.pngai_cover2.png… 保存在书籍根目录;选一张点「确认使用」,这张会被复制为 cover.png,作为该书的正式封面。

  5. 取消/关闭
    关闭弹框不会删除已生成的 ai_cover*.png,方便以后在文件夹里再看或换用。

整体设计原则:生成即保存、确认即定稿,不依赖「会话状态」,所有结果都落在书籍目录里,和 51mazi 的本地存储理念一致。

💡 核心设计:提示词里必须带上书名和笔名

很多文生图接口只会「按你写的提示词画图」。如果只写「古风、山水、唯美」,模型不会自动知道要在封面上写哪本书、哪个作者,所以必须在提示词里显式写清

在 51mazi 里,发送给通义万相的提示词是「三段式」拼接的:

  1. 书名(必填)

    • 例如:封面上必须清晰、醒目地显示书名《xxx》,书名需易于辨认。
    • 这里的 xxx 来自当前书籍的书名(如 props.bookName)。
  2. 笔名(选填)

    • 若用户填了笔名:封面上必须清晰显示作者笔名:xxx。
    • 若未填笔名,这段就不加。
  3. 风格与画面(用户填写)

    • 若用户写了「封面要求」:风格与画面要求:用户输入的内容
    • 若未写:默认 封面风格为小说封面,美观大气。

最终发给 API 的 prompt 就是这三段拼在一起的一条长文本。这样模型会被明确要求:把书名和笔名画在封面上,再在用户描述的风格下发挥,大大降低「只有图、没有字」的情况。

前端示例(逻辑在 AICoverDrawer.vue 的 handleGenerate):

const titlePart = `封面上必须清晰、醒目地显示书名《${bookName}》,书名需易于辨认。`
const authorPart = penName ? `封面上必须清晰显示作者笔名:${penName}` : ''
const stylePart = userPrompt ? `风格与画面要求:${userPrompt}` : '封面风格为小说封面,美观大气。'
const fullPrompt = `${titlePart}${authorPart}${stylePart}`

await generateAICover({ prompt: fullPrompt, size, bookName, negativePrompt })

通义万相是中文友好的,这种提示词能明显提升「封面上有书名、笔名」的出图率。

🎨 体验细节:生图提示、保存规则

  • 生图过程
    点击「生成封面」后,除了按钮 loading,还会弹出 ElMessage.info('正在努力生图中,不要关闭弹框'),并在弹框内显示一条不可关闭的提示:「正在努力生图中,请勿关闭弹框」,避免用户误关导致「不知道生成没生成」。

  • 保存规则

    • 每次生成的图:保存到该书根目录,文件名为 ai_cover1.pngai_cover2.png… 按已有文件自动递增。
    • 用户点「确认使用」的那张:在同一目录下复制cover.png(正式封面),原来的 ai_coverN.png 仍保留,不删除。
    • 关闭弹框不做任何删除,所有 ai_cover*.png 都保留,方便日后查看或更换。

这样既满足「自动保存、按序命名」,又满足「最终确认的图就是 cover.png」的需求。

⚡ 技术要点与代码位置

  • 主进程:调用通义万相 API、下载图片、按 ai_coverN.png 写入书籍目录;确认时把选中文件复制为 cover.png。详见 src/main/index.jstongyiwanxiang:generate-covertongyiwanxiang:confirm-cover
  • 服务层src/main/services/tongyiwanxiang.js 封装文生图请求与错误码解析。
  • 前端src/renderer/src/components/AICoverDrawer.vue 负责表单、提示词拼接、生成/确认/取消的交互;src/renderer/src/service/tongyiwanxiang.js 封装对 window.electron.generateAICoverconfirmAICover 的调用。

若你要在自己的 Electron + Vue 项目里做类似功能,可以直接参考上述文件;51mazi 为开源项目,欢迎 Fork、提 Issue、提 PR。

🎉 小结与 GitHub

「AI 生成小说封面」在 51mazi 里实现了:

  1. 提示词里强制书名 + 笔名,减少「只有图没有字」的情况
  2. 多尺寸、多张生成,自动保存为 ai_cover1.pngai_cover2.png
  3. 确认使用即复制为 cover.png,和书籍数据一起本地管理
  4. 生图过程有明确提示,避免误关弹框
  5. 关闭不删图,历史生成结果都留在书籍目录里

如果你也在做写作/内容工具,想加「一键生成封面」能力,可以把 51mazi 当参考实现;如果你只是作者,想找一个「能写又能做封面」的本地写作软件,也欢迎直接试用并到 GitHub 反馈。

  • GitHub 仓库https://github.com/xiaoshengxianjun/51mazi ⭐ 给个 Star 支持一下!
  • 相关文章:Electron 接入通义万相的技术细节可看同系列博客《Electron 桌面应用接入通义万相:文生图从 0 到 1 实战》。

🏷️ 标签

#AI封面 #通义万相 #小说写作 #51mazi #文生图 #写作软件 #Electron #Vue3 #提示词 #创作效率


💡 如果这篇文章对你有帮助,请在GitHub上给个 ⭐️ 支持一下!

本文基于 51mazi 开源项目,AI 生成小说封面功能

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐