节操新番导视 - 社团新番导视自动化工具

一套专为 天央动漫社节操部新番导视活动 打造的自动化配图方案。
作者: 蜥蜴


背景

作为动漫社团的成员,每个季度我们都会制作新番导视图,用来向社团成员推荐当季值得一看的动画。传统的做法是:

  1. 在新番列表网站上查找当季动画
  2. 手动整理番剧信息(标题、类型、播出时间等)
  3. 收集社团成员的评论和头像
  4. 用 Photoshop 或 Canva 一张张制作图片

这个过程重复且耗时。尤其当社团有十几个人都要发表评论时,手动整合评论与制作图片的工作量非常可观。此外,成员分散在不同设备上,如何统一收集评论、保证数据格式一致,也是一大难题。

于是就有了这套工具,将整个流程自动化。


方案概览

整套方案由两个项目协作完成,分别承担评论收集与图片生成两部分工作:

项目 形态 职责
Web 端评论收集工具 网页应用(前后端分离) 成员在线填写评论,导出 JSON
桌面端图片生成工具 Electron 桌面应用 整合评论,批量生成导视图片

二者通过统一格式的 JSON 文件交换数据,形成如下协作流程:

1
2
3
4
5
6
7
8
9
10
11
12
[社团成员] Web 端填写评论
│
▼
导出 JSON ──┐
│
[负责人] 收集全部 JSON
│
▼
桌面端导入合并
│
▼
导出导视图片

Web 端解决「多人分散录入」的问题,桌面端解决「整合与出图」的问题。二者导出的 JSON 结构完全一致,可双向流通。


Web 端评论收集工具

定位

Web 端供社团成员在线填写评论,部署于服务器,成员通过浏览器访问即可使用,无需安装任何软件。

技术架构

  • 前端:原生 HTML / CSS / JavaScript,纯静态页面
  • 后端:Node.js + Express,提供番剧抓取与预览渲染接口
  • 部署:可前后端分离部署至云服务器(推荐),亦支持 Vercel 托管

成员操作流程

  1. 打开 Web 端页面,输入季度代码(如 202607),点击「从 yuc.wiki 抓取」。
  2. 工具自动抓取当季全部动画信息(中文标题、日文标题、类型、播出时间、标签、视觉图等)。
  3. 在「默认信息」栏填写昵称与 QQ 号,系统自动获取对应头像。
  4. 在目标动画下点击「添加评论」或「添加[昵称]的评论」,填写评论内容并选择奖牌。
  5. 点击「预览」查看效果。
  6. 完成后点击「导出评论」,保存 JSON 文件发送给负责人。

主要特性

  • 从 yuc.wiki 实时抓取指定季度番剧列表
  • 输入 QQ 号自动获取头像
  • 支持金牌、银牌、黑牌三种奖牌标记
  • 编辑内容自动保存至浏览器本地存储
  • 响应式布局,兼容桌面端与移动端

桌面端图片生成工具

定位

桌面端由负责人使用,负责整合所有成员提交的评论数据,并批量渲染导出导视图片。

技术架构

  • 框架:Electron
  • 模板引擎:EJS
  • 截图工具:Puppeteer
  • 网页解析:Cheerio
  • HTTP 请求:Axios

负责人操作流程

  1. 收集全部成员提交的 JSON 文件。
  2. 打开桌面端工具,抓取同一季度的番剧列表。
  3. 逐一点击「导入评论」,选择「合并」模式。
  4. 工具按动画标题自动匹配,将各成员的评论合并到对应动画下,并按昵称去重。
  5. 为每部动画选定视觉图。
  6. 点击「导出图片」,选择输出目录,工具自动生成全部选中动画的导视图。

主要特性

  • 从 yuc.wiki 抓取番剧列表,支持批量手动添加
  • 输入 QQ 号自动获取头像
  • 评论中可插入图片,预览与导出时自动嵌入
  • 实时预览渲染效果(iframe 内嵌展示)
  • 一键批量导出全部选中番剧的导视图片
  • 导入评论支持按标题合并或整体替换

界面详解(桌面端)

主界面布局

界面分为左右两栏:

  • 左侧:编辑区,展示番剧列表与评论编辑器
  • 右侧:预览区,点击「预览」后实时显示渲染效果
  • 底部:日志区,输出处理过程中的日志,高度可拖拽调整

工具栏

按钮 功能
从 yuc.wiki 抓取 自动获取当季番剧列表
添加动画 手动添加一个动画条目
导入评论 导入 JSON 评论文件(合并或替换)
导出评论 导出当前全部评论为 JSON 文件
导出图片 生成全部选中动画的导视图
全选 / 取消全选 控制全部动画的选中状态
清除全部 清空所有数据

默认评论者设置

在番剧列表上方设有「默认信息」栏,可设置:

  • 昵称:填写后,点击「添加[昵称]的评论」将自动填充
  • QQ 号:填写后自动获取头像

该功能适用于为多个动画添加同一人的评论。

动画卡片

每个动画以卡片形式展示,包含:

  • 复选框:控制是否导出该动画的图片
  • 标题编辑:中文标题与日文标题均可直接编辑
  • 类型与标签:自动抓取的动画类型与标签
  • 制作人员与声优:自动抓取的信息
  • 播出信息:播出时间与平台
  • 视觉图:可替换为本地图片或网络图片
  • 评论区:管理该动画的全部评论

评论编辑器

每条评论包含:

  • 昵称:评论者名称
  • 奖牌:金牌、银牌、黑牌或无奖牌
  • 头像:评论者头像,支持本地图片或 QQ 头像
  • 评论内容:支持多行文本
  • 插入图片:可在评论中插入图片
  • 删除:移除该评论

奖牌样式:

  • 金牌 🏅:金色渐变背景
  • 银牌 🥈:银色渐变背景
  • 黑牌 ⚫:黑色渐变背景

预览区

点击任意动画的「预览」按钮,右侧实时显示该动画的导视图效果。预览会嵌入全部字体与图片资源,所见即所得。


实际使用案例

场景一:单机使用

仅一人完成全部工作:

  1. 打开桌面端工具,抓取番剧列表
  2. 逐一添加每位社团成员的评论
  3. 选择视觉图
  4. 导出图片

场景二:多人协作

适合社团多人参与:

  1. 负责人在群内发布通知与 Web 端地址:「请在网页中填写评论,导出 JSON 文件发给我」
  2. 每位成员按 Web 端流程操作,导出各自的 JSON 文件
  3. 负责人在桌面端逐个导入并合并
  4. 统一选择视觉图,导出图片
  5. 发布导视图到社团群

技术实现

技术栈

技术 用途
Electron 桌面应用框架
Node.js 运行环境
EJS HTML 模板引擎
Puppeteer 页面截图
Cheerio 网页解析
Axios HTTP 请求
Express Web 端后端框架

核心设计

收集与出图分离

Web 端只负责评论录入与数据导出,桌面端只负责整合与图片生成。两端通过 JSON 交换数据,职责清晰,互不干扰。

预览与导出分离

预览功能不经导出流程,直接在渲染进程中以 iframe 展示,不受选中状态影响,便于快速核对。

按标题匹配合并

导入评论时按动画标题匹配,而非数组索引。即便番剧列表变动,评论也能正确对应。

评论去重

依据昵称去重,避免同一人的评论被重复导入。

移动端整体缩放

Web 端预览采用固定设计宽度渲染,再按容器宽度等比缩放,保证在移动端查看时布局比例不失真。


自定义配置

字体替换(桌面端)

将 src/fonts/ 目录下的字体文件替换为自定义字体:

字体文件 用途
label.ttf 「新番速递」标签
title.ttf 动画标题
footer.ttf 底部版权文字

模板修改(桌面端)

编辑 src/page.ejs 可自定义页面布局、颜色与样式。当前设计宽度为 800px。


常见问题

Q: 抓取番剧列表失败如何处理?

依次检查季度代码是否正确、服务器能否访问 yuc.wiki、后端服务是否已启动。若问题持续,可改用「添加动画」手动录入。

Q: 预览时显示「生成 HTML 失败」?

检查字体文件是否存在,以及视觉图路径是否正确。

Q: 导出图片时提示找不到浏览器?

桌面端工具依赖 Chrome 或 Edge 浏览器。若已安装但仍提示,可在 src/screenshot-html.js 的 BROWSER_PATHS 中手动指定浏览器路径。

Q: 导入评论后评论没有合并到对应的动画?

合并依据动画标题进行匹配,请检查导入 JSON 中的标题与本地数据是否完全一致(包括标点符号与空格)。

Q: 评论数据会丢失吗?

Web 端数据保存在浏览器本地存储,桌面端不持久化存储。建议定期通过「导出评论」备份为 JSON 文件。

Q: 支持 macOS 吗?

开发环境支持 macOS,但打包目前仅测试了 Windows。


获取工具

欢迎 Star、Fork、Issue 和 Pull Request!


🎉 希望这套工具能帮助更多社团轻松制作番剧导视图!