- 新增独立
dashboard/前端工程,使用 React、Vite、TypeScript 和 Tailwind CSS 构建运行看板,不再使用原来的内联 HTML 作为主实现。 - Dashboard 固定挂载到
/dashboard,本地服务、Docker 镜像和 Cloudflare Worker 使用同一套构建产物。 - 新增 API key 登录页,密钥仅保存在浏览器
sessionStorage,后续请求通过Authorization: Bearer <key>调用后端 API。 - 首页展示运行环境、健康状态、脱敏配置摘要、最近运行和当前存储 / workflow 状态,便于快速判断部署是否可用。
- 运行列表支持状态筛选、手动刷新和自动刷新;运行详情展示步骤时间线、状态、耗时、 attempt、错误信息、summary 和产物列表。
- Artifact 面板支持 HTML、JSON、文本和图片预览,所有产物仍通过认证 API 读取, 不直接公开本地目录或 R2 bucket。
- 触发任务弹窗默认执行 dry-run;真实发布必须勾选确认并发送
forcePublish: true,降低误发布风险。
- 本地服务新增
GET /api/health,与 Cloudflare Worker 健康检查接口保持一致。 - 新增
GET /api/config/summary,仅返回脱敏后的运行配置摘要,不暴露 provider secret。 - 本地服务新增 dashboard 静态资源托管。存在
dist/dashboard时直接读取;缺少构建产物时返回提示页。 - Cloudflare Worker 新增 Workers Static Assets 支持,
/dashboard和/dashboard/*直接托管前端资源,/api/*继续走 Worker 后端逻辑。 - Cloudflare Worker 同步支持
/api/config/summary,Dashboard 在本地、Docker 和 Cloudflare 下使用一致 API。 - 微信文章 workflow 识别
forcePublish,Dashboard 二次确认后可以覆盖默认 dry-run 配置并创建微信公众号草稿。
- Dockerfile 在镜像构建阶段自动构建 dashboard,GHCR
镜像内置控制台,部署后可直接访问
/dashboard。 - Docker 基础镜像固定为 Deno
2.7.14,满足 Vite 8 对 Node 兼容 API 的要求。 - Docker 默认启动命令改为
deno task dev,避免引用已删除的旧start任务。 wrangler.jsonc增加 Workers Static Assets 绑定,Cloudflare 部署会同时上传 dashboard 静态资源。deno task cf dry-run和deno task cf deploy会自动先构建 dashboard,再执行 Wrangler 打包或部署。- 文档站构建改为 Deno 直接驱动 VitePress,GitHub Pages workflow 不再依赖 Node/npm 安装步骤。
- 删除
package.json和package-lock.json,项目命令、文档站、Dashboard 和 Wrangler 入口统一由 Deno task / npm compatibility 执行。 - 微信 relay 继续支持源码运行、Docker 运行和 systemd 保活安装;systemd 模板和
compose 配置统一使用新的
deno task relay入口。
- 新增基于
@cliffy/command的统一任务入口scripts/task-runner.ts。 - 任务入口由声明式命令树维护,不再手写 if/else 分发。
- 精简
deno task公共命令,只保留日常入口:dev、doctor、verify、test、article、preview、relay、docker、cf、build、dashboard、docs。 - 将大量重复别名收敛为参数式子命令:
deno task article --dry-rundeno task docker logsdeno task docker relaydeno task docker relay logsdeno task cf dry-rundeno task cf migratedeno task cf deploydeno task relay installdeno task relay systemddeno task docs builddeno task dashboard build
- 暂时保留
deno task weixin:relay作为兼容别名,避免已经安装的旧 systemd 服务立即失效。
- 重写 README 常用命令和部署说明,突出 Deno-only、Docker、Cloudflare、relay 和 dashboard 的推荐入口。
- 更新
docs/deployment.md,补充 Docker 推荐部署和 Cloudflare dashboard 静态资源说明。 - 补充 relay 源码部署、Docker 部署、systemd 保活安装,以及新的参数式命令。
- 更新快速开始、配置说明、帮助文档和 JSON-RPC API 文档,统一使用
deno task article --dry-run、deno task cf deploy等新命令。 - 文档中不再推荐 npm 命令、旧
article:dry、旧cf:*、旧docker:*或旧relay:*任务。
- 已通过
deno task verify:格式检查、lint、后端类型检查、dashboard 类型检查、 dashboard 生产构建和 78 个测试全部通过。 - 已通过
deno task doctor:当前配置 0 个失败,提醒项仅为 Cloudflare 绑定、通知渠道、未启用向量去重。 - 已通过
deno task docs build:VitePress 文档站可以正常构建。 - 已通过
deno task cf dry-run:Wrangler 能识别 Worker、Workflow、KV、D1 和 Workers Static Assets 绑定。沙箱环境下 Wrangler 写本地日志会出现 EPERM 提示, 但 dry-run 打包本身成功。
- 重构项目为以
src/app/weixin-article组装、features/weixin-article承载业务、integrations适配外部服务、core/ports定义端口的模块化结构。 - 使用
trendpublish.config.ts作为唯一运行配置入口,移除旧环境变量配置兼容, 配置类型提供中文 TSDoc 和更完整的字段提示。 - 收敛配置模型:
providers只保留凭证和 provider 默认参数,功能开关与 provider 选择统一放入features.article。 - 新增
features.article.notifications.channels,通知渠道由 feature 显式启用,providers.notify.*只保存 webhook / URL。 - 新增 URL 数据源前缀和
fetchGroups抓取分组,支持按分组顺序 fallback。 - 将向量去重、图片生成、发布、通知和抓取能力通过 port / registry / app 组装层注入,减少业务层对具体实现的依赖。
- 聚焦微信文章发布流程,移除旧的非文章工作流和按周 workflow 机制。
- 新增多套提示词风格:
technology、general、business、product、developer、research,统一影响排序、摘要、标题、动态模板和配图提示词。 - 新增正文 AI 智能配图能力,可通过
features.article.bodyImages开关控制。 - 优化 LLM 输出清理,统一兼容
<think>、Markdown fence、JSON 包裹文本等响应。 - 标题生成失败时使用本地兜底标题,降低发布链路失败率。
- 封面图和正文配图失败时保持 workflow 可继续,减少外部生图服务波动影响。
- 更新
deno task:推荐doctor、verify、preview、article:dry。 - 更新 README、配置文档、架构文档、模板文档和快速开始,统一说明新配置结构。
- 新增 release readiness 静态检查,防止旧配置名、旧路径和已删除 workflow 回流到文档或示例。
- 修复 GitHub Release workflow,改为编译
src/index.ts并包含新的微信模板目录。 - 调整生产部署 workflow 为手动触发,避免 release tag 自动触发旧部署流程。
- 新增
dynamic微信文章模板,支持根据文章内容调用 AI 实时生成公众号内联 HTML。 - 新增动态模板后处理与校验,清理公众号不兼容标签和属性,并在生成失败时回退
minimal。 - 简化模型配置,内容排序、摘要、标题和动态模板默认统一使用
providers.ai配置。 - 新增
deno task doctor配置体检命令,方便快速定位缺失配置。 - 新增
deno task preview:weixin微信模板预览命令。 - 新增
deno task run:article:dry微信文章 dry-run 调试模式,跳过发布并输出本地 HTML。 - 统一清理 LLM 输出中的
<think>和 Markdown 代码围栏,覆盖排序、摘要、标题、动态模板与内容润色。 - 拆分微信文章标题、封面、渲染和 dry-run 输出逻辑,降低 workflow 主流程复杂度。
- 新增
longform、product、minimal、darktech四套微信文章模板。 - 优化
default、modern、tech、mianpro模板的公众号兼容性与排版层级。 - 将微信模板结构统一调整为更适合公众号编辑器的内联样式与
section标签。 - 更新模板预览测试,使用稳定占位图生成本地预览,避免示例图片失效。
- 更新模板展示文档,补充所有微信文章模板截图与
features.article.renderer.template可选值。
- 优化内容排名系统
- 更新内容排名提示词,调整评分权重
- 在用户提示中添加图片URL日志记录
- 改进ID解析机制,提升内容排名结果的一致性
- 增强微信工作流程
- 添加内容过滤功能
- 实现动态文章数量配置
- 增加调试日志记录
- 优化内容处理的错误处理机制
- 改进文章模板渲染系统
- 新增
processArticleContent方法,支持段落间自动插入图片 - 更新基础模板渲染器,支持数据预处理
- 优化文章模板,移除默认文本缩进
- 重命名
ArticleTemplateRenderer为WeixinArticleTemplateRenderer
- 新增
- 微信图片处理优化
- 实现
uploadContentImage方法,支持微信图片上传 - 重构
WeixinImageProcessor,改进图片处理方法
- 实现
- 增加媒体内容支持
- 添加Media和Size接口定义
- 实现推文媒体内容提取
- 支持引用推文的内容和媒体提取
- 性能优化
- 将推文获取限制从10条增加到20条
- 改进错误日志记录
- 优化配置刷新机制
- 新增文章数量配置
- 在旧配置示例中添加文章数量配置项
- 更新README.md文档,添加相关配置说明
- 升级axios至1.8.2版本
- 更新npm源配置,优化包管理
- 移除husky包依赖
- 重构模板类型定义
- 将
template.type.ts重命名为article.type.ts - 新增
GeneratedTemplate和WeixinTemplate接口 - 更新相关文件的导入路径
- 将
- 更新环境变量配置说明
- 完善README文档
-
重构LLM工厂模式,提升代码复用性和可维护性
- 实现统一的LLM提供者接口,支持多种AI服务商
- 优化模型切换机制,支持动态指定模型名称
- 增强错误处理和重试机制
-
增强模型配置灵活性
- 多模型配置支持:可在配置中为同一提供商定义多个可用模型
- 使用竖线分隔多个模型名称,例如:
DEEPSEEK_MODEL="deepseek-chat|deepseek-reasoner" - 默认使用列表中的第一个模型
- 使用竖线分隔多个模型名称,例如:
- 指定特定模型支持:可在使用LLM提供商时指定特定模型
- 使用格式:
提供商:模型名称,例如:DEEPSEEK:deepseek-reasoner - 适用于所有支持指定模型的配置项
- 使用格式:
- 多模型配置支持:可在配置中为同一提供商定义多个可用模型
-
LLM工厂类技术改进
- 重构getLLMProvider方法,支持解析
PROVIDER:model格式的配置 - 优化提供商缓存机制,使用
PROVIDER:model作为缓存键 - 添加配置字符串解析方法
- 重构getLLMProvider方法,支持解析
-
OpenAI兼容LLM类增强
- 添加多模型支持和管理
- 新增模型选择和查询方法:
setModel(model: string):设置当前使用的模型getModel():获取当前使用的模型getAvailableModels():获取所有可用模型列表
- 支持在请求时通过options指定模型
-
优化AISummarizer模块
- 重构摘要生成接口,支持自定义语言和长度
- 增加JSON格式响应支持,提升数据处理效率
- 完善错误处理机制,提供更详细的错误信息
-
改进ContentRanker模块
- 优化内容排名算法,提升准确性
- 支持自定义排名规则和权重
- 增加批量处理能力
- 封装RetryUtil工具类
- 实现统一的重试机制,支持自定义重试策略
- 添加指数退避算法,优化重试间隔
- 提供详细的重试日志,便于问题排查
- 重构环境变量配置
- 优化配置项结构,提升可维护性
- 支持多环境配置,便于开发和部署
- 完善配置文档,提供详细的配置说明
- 优化项目目录结构,提升代码组织性
- 更新依赖包版本,修复潜在安全问题
- 完善错误处理机制,提供更友好的错误提示
- 增加单元测试覆盖率,提升代码质量
- 更新环境变量配置文档
- 完善API接口文档
- 添加开发指南和最佳实践
- 升级sharp至0.33.5
- 升级mysql2至3.12.0
- 升级typeorm至0.3.20
- 升级其他依赖包到最新稳定版本