返回 ToolKnit
更新日志

每次更新均会记录在案。

自上线以来,每项新工具、优化改进和深夜修复的持续记录。

历史条目记录当时版本的情况。后续更新可能改变功能、限制、数据与隐私细节,当前行为请以工具页和指南为准。

117
更新

PDF 工具升级与全站中英文独立页面

PDF 工具
  • PDF 转 Word: 采用作者独立打包的桌面引擎,并固定其依赖项。使用原页面或 A4 布局、页面选择、源预览、密码处理和取消功能,将原生文本页面转换为 DOCX 格式。扫描页面的 OCR 功能不可用;在复杂区域,图像可能仍保留为图片。
  • PDF 转图像: 将已完成页面组合为纵向或横向长图,或 4/9 页缩略拼版,支持间距、像素保护和编号下载。原有页面选择、PNG/JPG/WebP、重试/继续和 ZIP 分卷仍可使用。
  • 实用帮助: 添加原始练习PDF文件,完善双语控制面板和扩展的常见问题解答。重写文字格式指南和图像DPI及布局指南,加入实际示例与限制说明。
  • 全站双语页面:为工具、指南、故事、节日、法律说明与更新日志新增可独立访问的简体中文页面,保留原英文网址并共用工具逻辑。语言链接在支持的工具中保留当前操作状态。内容页导航链接与语言切换统一靠右,小屏缩小间距,空间不足时整组换行。
  • 搜索与内容发现:同步翻译标题、描述、可见 FAQ 与结构化数据,配置双语规范地址与语言对应链接、分语言地图和中文内容索引。相关链接跟随当前语言。
  • 更准确的说明:逐篇核对指南中的格式支持、导出行为、设备限制与数据流程。文章目录复用已审核的文章摘要;节日日期保留原始已存数据,并明确覆盖范围与数据日期。
  • 本地流程修复:改进月末年龄计算、计时边界、有界文本比较、中文账单 PDF、闪卡 JSON 恢复、存储失败提示和 Wi-Fi 二维码转义。双语统计按同一工具归类,站点访客总量不因语言副本重复计算。

更清晰的导航和更准确的工具

导航 准确性
  • 新增轮播切图: 将一张图片切成 2–20 张连续横向幻灯片或纵向分段。可保留原始像素,或明确选择裁剪/留白比例,检查切线与滑动预览,再保存编号 PNG/JPEG 或 ZIP。包含原创练习全景图、完整中英文控件、取消和设备保护,以及画布尺寸计算指南。原有 3×3 九宫格工具仍独立保留。
  • 下一步建议: 已用稳定、可爬取的工具链接替代随机推荐区域,并补充缺失的指南链接,提供中英文标签。修复了旧的导航路径和分类锚点。
  • 时间戳转换器: 可选择秒或毫秒,以及UTC或本地时间输入。拒绝非法输入,保留支持的分数秒,解释自动单位推断、设备时钟及夏令时限制的机制,内容详见更新后的指南。
  • D6骰子投掷器: 修正了D&D预设描述和随机数说明。指南现已详细说明实际的D6支持情况、各面出现频率与总和概率关系、批量实验及CSV导出功能。
  • 番茄钟: 空闲时保留原页面标题,不把跳过的专注时段计为完成,并在浏览器延迟更新后按截止时间校正剩余时间。FAQ 解释后台运行和音频限制。
  • 更可靠的加载: 已将缺失的英文和中文“挑战转盘”数据文件恢复至发布列表。PDF压缩使用现有本地输出库;文本提取仅在选择特定格式时才加载对应文档引擎。
  • WebP转PNG: 明确静态图像支持范围、批量处理限制、透明度及元数据处理方式,详见工具和指南。六个图像转换器现在均显示未裁剪预览、透明度检查棋盘、像素尺寸和可见下载按钮。单个输出文件明确标注其真实格式,而非ZIP。
  • 表情符号查找器: 支持多词搜索、中文标签、短代码或表情符号字符。结果避免重复分类项;仅支持的表情符号提供有效的肤色选择。最近搜索项保留复制的变体并可清除。键盘菜单和翻译后的控制标签已优化。
  • 输入速度测试: 统计正常文本输入和输入法提交,忽略修饰键快捷键,且评分上限为设定截止时间。在更新后的指南中解释英文单词练习、退格修正和WPM含义;避免使用不支持的人群排名。
  • 情感忽视测试: 明确指出自定义问卷仅用于自我反思,无明确诊断准确性。解释其20–100评分机制,用响应主题替代诊断性结果标签,并统一英文、中文、元数据及评分指南。使用明确的“下一步”或“Enter”导航,防止自动跳转导致点击目标错位。问题和评分规则保持不变。
  • 呼吸放松: 用实际的节律和周期信息替代不支持的健康效果声明。明确浏览器和离线模式的限制,增加一个通用的NHS参考,并使六项常见问题解答在两种语言中均具备键盘可访问性。
  • AI前伴侣聊天: 调整双语界面、指南和常见问题解答,使其与实际服务提供商请求一致,使用仅存储在内存中的API密钥,明确API费用的变动性,并确认本地数据的删除。说明导出或服务端副本的留存情况;移除不支持的治疗承诺,但不改变聊天流程。
  • AI设置与隐私: 修复AI轨迹工具在中文访问历史后仍以英文加载提供商控制选项的问题。明确AI工具间的数据流向,区分生成场景与可靠预测,并使前伴侣聊天常见问题解答在双语中具备键盘可访问性。
  • 页面信息一致性: 同步可见的常见问题、翻译和结构化答案,针对已审核的工具移除不支持的API 额度和固定费用承诺,修正旧的GitHub链接和剩余不支持的日期标签,使AI爬虫排除规则与公开爬行策略保持一致。现有工具URL保持不变,面向搜索的源内容仍以英文呈现。

向宇宙提问,按你的方式

创意工具 可靠性
  • 更清晰的向宇宙提问工作区: 可选择神谕、魔法 8 球或是/否,尝试问题示例,并在独立结果面板中查看答案;中英文控件完整。
  • 答案与模式匹配: 修复跨模式重复问题,并从新是/否抽签中移除‘可能’选项。每日答案保持一致,由问题、模式和UTC日期决定;新抽签提供随机选择,仍可重复。
  • 自主控制历史: 回看每日答案、停止新增保存、删除单条或清空历史。在 30 个 UTC 日期范围内最多保留 100 条近期答案,保留可识别的旧记录;浏览器存储不可用时仍可继续回答。
  • 分享选项: 复制答案或保存一个1200×900 PNG卡片。除非明确选择,问题将被排除;X会打开一个草稿供用户查看。
  • 更实用的帮助: 十二个双语匹配的常见问题解答和扩展的问题示例指南 解释答案池、重复规则、隐私政策和故障排查。答案仍属于娱乐性质,而非预测或建议。
  • ToolKnit 桌面版 v3.2.0: 可直接从 ToolKnit 下载官方 Windows 安装包和 SHA-256 文件。该版本包含 12 类、73 个工具,新增文本型 PDF 转可编辑 Word、图片转 PDF,以及更丰富的悬浮剪贴板历史。中英文版本说明区分源码中的 77 项 CLI/MCP 能力与当前 npm 2.3.1 包,并链接 PDF 转 Word 引擎单独的源码查看条款。

对AI转PNG导出拥有更多控制权

图像工具 可靠性
  • AI转PNG工作区: 查看完整预览,可单独选择或按范围选择检测到的页面,导出时可设定像素比例或精确的宽高,同时保持比例不变。
  • 背景控制: 保留未着色的透明区域,或添加白色背景。棋盘格、浅色和深色源预览有助于检查;着色的白色艺术作品仍保留在图像中。
  • 清晰的输出与恢复: 显示真实的PNG尺寸、文件大小和透明像素存在情况。将成功、失败和未处理的页面分开,可重试失败页面或继续已取消的批次,并在替换失败后保留有效下载。
  • 更安全的渲染: 设置加载边界、取消机制、过期任务保护以及明确的页面、像素和编码输出限制。生成的ZIP文件具有可重复下载的链接;若打包失败,单个PNG文件仍可单独获取。
  • 一致的页脚与推荐内容: 将AI转PNG页脚与合并PDF对齐,并在精确的发布文件列表中包含相关工具目录。
  • 更有用的帮助: 添加明确标注的原创 PDF 练习文件,补齐动态中英文标签及十二条相互对应的 FAQ。现有指南补充尺寸、透明度、兼容内容限制和故障排查。

中文界面及视频截图

本地化
  • 首次访问时记住语言: 共享的导航栏、面包屑和页脚会自动应用所选语言,无需进行中英文来回切换。延迟的工具名称请求不再覆盖更新后的语言选择。
  • 视频截图: 增加了中文指南卡片、相关链接和按钮提示。切换语言时会刷新播放和位置标签,同时保留已加载的视频和捕获的图像。
  • 视频捕获工作流: 增加了点击加载原始示例、可拖动的键盘可访问时间轴、实际输出文件大小以及更清晰的加载/错误状态。取消或失败的视频替换会保留之前的成果;过时的编码不会覆盖新的选择。
  • 下一步截图操作: 将与PDF转图片相关的工具标签统一,下载后新增裁剪/压缩链接,并更新原有指南,包含实际的导出示例和故障排查内容。
  • 视频工作区: 加载的视频会替换示例邀请,显示一个来源卡片,提供上传我的视频、重置和指南选项。预览/定位和捕获/下载使用两个桌面面板,移动端则堆叠显示。指南中增加了实用的定位建议、图像质量提示以及手机视频拍摄建议。
  • 标记时刻: 可保存最多30 时间戳,点击可重新访问,可选择或删除时刻,并将选定帧导出为ZIP文件,包含顺序捕获、取消操作及64 MB编码图像预算。新增控件和反馈均提供中英文标签;控制器URL会刷新以避免使用过时的翻译字典。
  • 捕获优化与恢复: 对齐了选择标签并居中了下载操作;新增可逆删除按钮悬停效果、当前时刻高亮显示,以及八秒内删除的撤销功能。之前的ZIP导出结果在选择变更或导出取消后仍可保留。部分结果会识别失败的时间戳,并支持仅重试失败的时刻。指南中增加了导航指引、格式对比以及一个经过验证的批量导出示例。
  • 导出完成: ZIP下载详情现在以本地弹窗形式显示,并伴有底部简短通知和继续编辑操作。常规的点列表编辑保留了简洁的重新打开按钮。预留的状态空间防止播放和短步控制反复移动页面。
  • 视频帮助内容: 扩展了工具的双语常见问题解答,涵盖兼容性、解码尺寸、选定时刻的ZIP文件、实际使用限制和恢复方法,并配有匹配的结构化数据。原有的指南现已增加工作流选择、基于症状的故障排查以及对测试示例的明确描述;其目录摘要也已更新。
  • 缺失的界面翻译: 已完成指南卡片、噪声生成器说明、语音语言标签、键盘提示以及世界时钟时区名称中的确认缺失项。页面仍保留其英文SEO身份和原有URL;视频描述和结构化数据现已反映工具的改进。
开发者手记——雨天的更新

现在是 2026 年 10 月 19 日。好久没有动笔写点内容了,嗯,这次写一点!

我正在连续经历高强度的工作,每天的内容很多:桌面端和网页端,一百多个工具等着维护,还有运维和各种杂七杂八的开发。我还有一份室内设计师的工作。不过你们看,我没有倒下,我还在不停地更新。

我们的官方域名邮箱info@toolknit.com现已启用。你可以通过该邮箱联系我,我会每周检查一次。我依然在这里,出于热爱,坚持推动这个项目前进。

外面全天都在下雨,我感觉有点迷茫。她已经走了,我却似乎找不到她曾经在我心中的样子。该放手了。我们还能做朋友,这已经不错了。但最近,她对我的感情好像在慢慢淡去。我怀疑,等今年过去,明年我们可能就成了完全陌生的人。我只能接受这一切。

哈哈哈,现在下午六点多,快下班了,我还对着电脑不停地改工具。嗯……一个人也挺好的,不用担心别人管控你,也少了一些不必要的压力。总之,现在一个人过得比前几个月好多了,情感总要经历这个阶段吧!

祝她,和所有人都能过得安稳快乐。这是最后一次手记里还写着那个念念不忘的人了!尽情享受这次雨天的更新吧~
—— Dong Zihang

页面加载更快,工具更可靠

性能 可靠性
  • 页面能更快显示: 外部字体样式表不再影响首次渲染。设备在请求字体加载的同时,可以显示备用字体。
  • PDF文本提取: 使用共享且版本锁定的PDF引擎和中文字体资源,解析更安全。扫描页仍需OCR处理。
  • 语音生成: 更新了与语音服务提供商的连接及纯文本处理方式。英文和中文语音在新主机上已测试,可用性仍取决于上游服务。
  • 重放生成语音: 修复了音频播放结束后播放按钮的问题。你可以无需重新生成文件,直接再次播放、暂停和恢复播放,或在浏览器阻止自动播放时手动启动播放。
  • 唯一官方联系方式: 网站的联系链接和弹窗现在都使用 info@toolknit.com。
  • 更稳妥的依赖与访问报告: 锁定 Markdown 渲染器,并加强访问记录校验。报告区分每日访问、可比较的月度浏览器数和不完整历史数据;浏览器数不等于经核实的真实人数,也不等于成功转换次数。

ToolKnit桌面版V3.1现已上线

桌面版 V3.1
  • 更新 Windows 下载: 桌面端下载按钮统一指向官方 v3.1.0 x64 安装包,附有匹配的版本说明和 SHA-256 校验文件。
  • 12 类、71 个工具: 新增快速截图、重复文件清理和 PDF 扫描效果。截图支持标注、OCR 以及可选的本地中英翻译,翻译模型单独下载。
  • 更清晰的版本信息: 更新了中英文描述,涵盖一键录制模式、剪贴板和截图历史、背景去除的CPU降级方案以及更优的运行时/模型下载体验。现有46 CLI/MCP功能仍可使用,本次桌面版更新无新的npm发布。
  • 安装与授权说明: 页面说明支持Windows 10 1803+ / Windows 11 x64,未签名安装程序及当前源代码授权条款。原有Apache-2.0授权及第三方权利保持不变;新授权的作者代码和修改内容采用PolyForm非商业1.0.0许可。

背景去除更可靠

背景移除 兼容性
  • 更稳妥的设备选择: 处理前检查浏览器 GPU 支持,GPU 初始化或处理失败时切换到 CPU;CPU 处理可能更慢。
  • 空结果保护: 检测无效或完全透明的AI输出,对GPU失败尝试一次CPU重试,若未生成可用掩码则报错。重试失败后,保留之前的输出结果。
  • 资源加载更清晰: 显示模型和引擎下载进度,检查已下载资源,并对中断或损坏的分块进行重试。CPU降级可能需要额外的运行时文件。
  • 取消并重试: 处理在独立的后台线程中运行,可被停止。支持英文和中文进度提示、键盘取消、手动优化,以及 PNG、WebP 或 JPG 导出。
  • 本地处理: 图像像素始终保留在您的设备上。浏览器、驱动程序和图像差异仍可能影响处理时间和分割质量。

更大的 PDF 文件,更安全的图像导出

PDF转图像 可靠性
  • 100 MB PDF 输入: 将文件限制从 20 MB 提升至 100 MB(104,857,600 字节),支持本地读取过程中的进度显示和读取或打开过程中的取消操作。
  • 更小的预览: 视觉页面选择使用受限渲染队列,缩略图大小不超过 320 像素。生成的缩略图与全分辨率下载相互独立。
  • 更安全的转换: 在转换前会检查每页的尺寸,并在累计输出达到设备感知的安全预算时自动停止。取消操作会保留已生成的图像,并列出剩余页面以便恢复。
  • 更清晰的 ZIP 下载: 大批量处理使用编号分段,每个部分都有独立的下载按钮。生成 ZIP 期间,设置和转换控件保持锁定状态。
  • 真实限制: PDF 文件始终保留在您的设备上。大型或复杂的文件仍可能需要减少页数或降低 DPI,尤其是在手机上;更高的输入限制并不意味着无限制的渲染。

实用的 AI 字幕修复指南

新指南 视频工具
  • AI 字幕修复指南: 详细说明了如何诊断和修复持续的时序延迟、渐进漂移、剪辑后突然跳变、重叠字幕、乱码中文文本以及 SRT 导入错误等问题。
  • 测试示例: 包含小型 SRT 下载文件、一个合成参考视频、两张真实的 ToolKnit 界面截图以及最终播放检查清单。这些示例是刻意设计的练习,而非模型性能基准。
  • 直接工具路径: 该指南链接至 字幕修复与同步,工具现在也从其提示部分(中英文)链接回该指南。
  • 范围说明: 不承诺任何转录、翻译或自动语音对齐功能;指南始终清晰展示原始文件、本地处理和格式限制。

搜索友好型工具优化

SEO 可用性
  • 更明确的搜索意图: 更新了绘图板、WebP 转 PNG、反应时间、表情符号查找器和视频截图页面的标题、描述、结构化数据和可见文本内容。
  • 表情符号查找器可靠性提升: 修复了最近使用时的渲染问题,验证了存储的历史记录,使复制失败更透明,并统一了肤色选择器的样式、键盘关闭行为和窄屏布局。
  • 视频截图工作流: 增加了秒数或 HH:MM:SS.mmm 时间输入,等待定位完成,预览解码后的尺寸和格式再下载,并拒绝空或不匹配的输出数据块。
  • 范围保持不变: URL、本地处理边界、现有表情符号数据以及支持的视频/图像格式均未改变。

照片动态制作:本地相机路径与导出

新工具 本地处理
  • 照片动态制作: 可使用相机预设或最多六个直线段和七个可编辑节点,本地化地为单个 JPEG、PNG 或 WebP 文件生成动画。
  • 控制每段运动: 调整每段速度与缓动,设置节点缩放及可选停留,编辑后手动生成预览。选择一段运动时,静态预览同步显示其起点。
  • 编辑中的帮助: 提供双语、可扩展的指导,位于预览旁,涵盖路径编辑、构图、时间设置、预览、导出、文件传输及键盘快捷键。可直接从卡片中删除一个点,并撤销误删操作。编辑状态提示位于工具栏下方;在移动端,帮助信息紧跟在运动设置之后,并附带专属快捷键。
  • 专注编辑: 开始自定义路径时自动折叠预设,可直接选择编号点,并返回上传页面以清空项目。填帧模式在整个动画过程中保护图像边缘;当允许边框时,全图模式仍可使用。
  • 导出选项: 支持最多 30 秒的 MP4;GIF、Android 动态照片 JPG 以及配对的 JPEG+MOV 资源打包为 ZIP,适用于 iPhone/Mac 工作流,时长最多 10 秒。所有限制均包含节点停留时间。图片和项目均保留在浏览器中;加载网站及导出组件时可使用网络。
  • 传输与导入指导: 已在小米 17 Pro 设备上搭载 HyperOS 3.0.318 及抖音图文帖子中经用户确认。Android 导出通过原文件或 ZIP 传输可保留运动效果;Apple 导出包含匹配的 JPEG/MOV 元数据,支持导入流程中保持 Live Photo 配对。相册和分享应用支持因平台而异。常见问题解答说明了静态图片输入的限制以及 H.264 浏览器对预览和基于视频的导出的必要性;GIF 不需要 H.264。
  • 目录与语言支持: 新增了英文和中文工具发现、当前数量、搜索数据及缓存引用。

实用指南与直接工具链接

指南 导航
  • 工具直达链接: 修正 30 篇指南和故事中的 60 个工具按钮,方便读者直接打开相关工具。
  • 图片转 PDF 指导: 详细说明了页面尺寸、混合图像方向、图像顺序及大图限制,并以两个图片示例进行说明。
  • 字符数量说明: 明确了空格、表情符号、中文文本及空行段落的计数方式,并与英文和中文工具帮助内容保持一致。
  • 两个 2,000 字符示例: 说明了为何字符限制并不决定固定段落数或打印页数。
  • 原有链接保留: 保留了文章地址,并在字符计数器与其指南之间添加了相关阅读路径。

新增两个本地工具及更清晰的 ToolKnit

新工具 本地处理 界面优化 可访问性 数据准确性 清晰度

本地检查与调整字幕时间

推出 字幕修复与同步:可检查 SRT 和 WebVTT 字幕,查看建议修改内容,并导出独立结果,无需上传文件。

  • 了解输入内容: 可选择文本编码,并检查编号、时间戳、空字幕、排序及重叠情况,再决定是否进行修改。字幕输入限制为 5 MiB 及 20,000 条字幕。
  • 明确的修复选项: 支持标准化编号和时间码语法,可选排序、移除空字幕、反向时间修复及重叠裁剪。建议在查看修改前后差异后再决定是否修复每一个警告。
  • 调整同步: 可对整个文件或选定范围应用偏移,或使用两个已知时间点进行线性漂移校正。此功能不分析音频,也无法保证在剪辑或非线性时间调整中的对齐。
  • 便携式输出: 可下载 SRT、VTT 或诊断 JSON 报告,附带中英文指导,以及可选的本地视频预览(仅支持浏览器支持的编码格式)
  • 范围明确: 不包含 AI 语音转写、翻译、自动音频对齐或文件上传。使用前需对照原始视频核对修复后的字幕内容。

阅读图像实际承载的信息

推出AI图像元数据查看器:可检查支持的PNG、JPEG和WebP文件,无需上传图像

  • 保存的提示词与参数: 读取可用的 Stable Diffusion、ComfyUI 生成记录,按节点分组展示,并分别导出界面工作流和 API 节点图。
  • 清晰的证据边界: 可查看可用的内容凭证及已执行的检测。仅凭软件标签无法验证来源,缺少元数据并不意味着图像不是AI生成的
  • 实用的报告: 可复制参数或下载可读及JSON格式的报告。文件元数据可能包含隐私信息,请在分享前仔细审查
  • 英文和中文: 响应式结果、取消操作和安全错误处理,仅在需要时加载解析资源
  • 熟悉布局: 共享的导航栏和页脚与现有工具保持一致,信息区域对齐,FAQ切换流畅且支持键盘操作,同时尊重减少运动设置

每个工具卡片都更富个性

  • 柔和的图标倾斜: 首页工具图标在鼠标悬停时会轻微放大并倾斜,而图标边框保持稳定,原有卡片高亮不变
  • 运动效果的合理使用: 该效果仅适用于支持悬停操作的精细指针设备,当用户偏好减少运动时将被禁用
  • 轻量级设计: 仅使用CSS变换,不引入任何脚本、图片或网络请求,工具链接、卡片文本和布局尺寸均保持不变

准确的站点数据和更清晰的工具信息

  • 内容总数一致: 将首页资源数量、日志总数和指南分类与实际条目同步,包括脚本加载前显示的静态数值
  • 更清晰的处理与隐私信息: 英文和中文首页文案、隐私信息及使用说明已对齐,明确标注本地处理、可选在线服务、分析功能以及共享的每日配额
  • 更新后的工具说明: 更新了PDF转Word指南、ToolKnit概览及机器可读信息,更准确地描述支持模式和实际限制
  • 更精确的节假日覆盖范围: 区分了完整的节假日集合、公共假日覆盖和国家指南,总数量直接从加载数据中可见
  • 更真实的服务概览: 区分访问活动与实时健康监控,明确显示数据刷新失败情况,并修正了热门工具列表中的节假日链接

中文首页卡片与搜索功能协同工作

  • 完整的卡片翻译: 中文模式现已更新工具卡片的标题和描述,包括首页当前的标题结构和推荐卡片。切换回英文模式后恢复原始英文文本
  • 搜索遵循可见标题: 首页搜索现在读取当前卡片的标题,因此可找到翻译后的工具名称,同时原有的中文关键词仍可正常使用
开发者手记——好久不见

大家好,我是 Dong Zihang,ToolKnit 的开发者。好久不见!已经有一阵子没静下来写点心里话了。

时间真的过得飞快。我三月份开始搭建这个网站,没想到现在已经到了九月底。这段时间,越来越多的你们加入了我们,ToolKnit也已经在互联网上找到了自己的位置。有时我会停下来想想,自己是如何从一个单纯使用工具的人,变成现在为他人构建和维护工具的人。给人们提供可靠的好工具——这依然是我坚持做的事。

最近生活对我挺好的,尤其是过去几天,我感到特别开心。这其中有个个人原因:我和前女友重新在一起了。QAQ。这对我意义重大,也给了我继续坚持开发的新动力。

网站仍在持续维护,桌面应用也一样。我们已经突破了1,200 GitHub星标!感谢大家帮助我们达成这个里程碑。目标很简单:持续让ToolKnit变得更好,一次更新,一点进步。

今天的更新带来了一些新东西,欢迎试试。如果遇到问题、有想法,或觉得哪里可以更好,请告诉我。无论你在中国还是世界其他地方,ToolKnit 都欢迎你,也很期待听到你的声音。

感谢大家使用ToolKnit,支持它,并分享它,让更多人能发现有用的内容。你们的帮助,让这个小小的项目逐渐成长,成为我愿意持续投入去维护的东西。

把爱送给大家。♥
—— Dong Zihang

首页搜索图标已恢复

界面修复 响应式
  • 恢复了完整的搜索图标: 修复了盒模型冲突,避免左侧放大镜被裁剪,同时防止占位符或输入文字挤压它。
  • 所有屏幕尺寸下间距稳定: 图标、搜索文本、清除按钮、分类范围和搜索按钮在桌面端和紧凑型移动端均保持清晰分离。

更稳定、更易访问的首页

性能 可访问性 质量
  • 首次渲染更稳定: 非必要分析功能现在等待空闲时间加载,可选的网页字体加载则避免了字体切换延迟导致目录和导航移动。
  • 结构更清晰: 工具目录和架构功能现在遵循完整的标题层级结构,使无障碍技术用户更容易浏览首页。
  • 对比度更佳: 次级标签、描述、页脚说明和链接在深色和浅色主题下都拥有更强的可读对比度,且不改变整体视觉风格。
  • 控制更易用: 桌面截图轮播图保留了小圆点样式,同时提供全尺寸的键盘和触控目标;动态提示仅向屏幕阅读器暴露当前激活的信息。
  • 发布交接更安全: 首页缓存和发布标记同步前进,原有的/index.html到/标准重定向保持不变并已验证。

更快的首页加载和更安全的离线更新

性能 可靠性 PWA
  • 图标包体积更小: 首页现在加载专用的97图标子集,而非完整的Phosphor库,图标CSS和字体体积减少了约92%,且未改变设计。
  • 首次渲染更稳定: 分类快捷方式在初始HTML中已存在,合作伙伴徽章保留真实比例,防止后续内容推移搜索框和工具目录。
  • 更易访问的文章弹窗: 关闭状态的弹窗链接不再可获得焦点,打开面板后键盘焦点会转移到关闭控件上。
  • 轻量级离线安装: 服务工作线程现在仅安装经过验证的首页壳,而不再在后台下载完整的工具、博客、PDF、OCR 和 WebAssembly 库。
  • 关键场景下的离线访问: 工具及同站资源在您实际访问后会被保存,而所有 92 静态工具链接和无 JavaScript 的体验依然保持不变。

工具更清晰,操作指南更实用,后续步骤更明确

指南 发现 可靠性
  • 五项更新的工具指南: 为视频截图、Illustrator AI 转 PNG、绘图白板、PDF 压缩和图片压缩提供了更清晰的英文和中文说明,包含经过测试的示例和实际限制。
  • 压缩原理说明: 新增说明区分了最大文件大小与最终输出大小,并解释了基于图像的 PDF 输出、透明度、动画以及质量之间的权衡。
  • 实用的后续操作建议: 专注的工具页面现在包含指向相关工具及其指南的固定链接,PDF 指南也提供了更明确的任务导向建议。
  • 小幅可用性优化: AI 转 PNG 在首次加载时尊重用户保存的中文语言设置;无法播放的视频会显示清晰错误并允许用户更换文件。
  • 搜索元数据清理: 修正了应用和节日结构化数据,并移除了一个未经验证的评分声明。

PDF 转 Word 现在能更完整地还原原始页面

PDF 转 Word 布局 表格与图片
  • 可编辑表格重建: 支持带边框的表格、合并单元格、空单元格以及多种表单式布局的表格,现在被重建为真实的 Word 表格,而非扁平化的截图。
  • 更优质的双语文档: 改进了英文和中文文本的分组、间距、列数、页面方向,以及对扫描页的 OCR 布局恢复能力。
  • 图片、印章和签名: 可靠的独立图像现在可以保持其在页面中的测量位置,不再强制添加空白行或导致意外分页。
  • 两种真实输出模式: 可编辑模式优先保留可复用的文本和表格,而外观模式则在精确编辑不那么重要时,保留复杂页面的视觉完整性。
  • 真实文档修复: 修正了图像与文本重叠检测及页脚间距问题,经过对一份两页中文考试文档的测试,成功保留了其中的图片、印章、表格和原始页数。

PDF 转 Word 的 OCR 现在更可靠,支持离线使用

PDF 转 Word OCR 可靠性
  • 自托管转换栈: PDF 转 Word 现在从 ToolKnit 自身的资源中加载 OCR、DOCX 和下载组件,不再依赖第三方运行时 CDN。
  • 中英文识别: 将英文、简体中文和繁体中文 OCR 数据打包到本地,并根据页面的语言设置选择。
  • 更安全的 OCR 生命周期: 当支持时,预处理在主线程之外运行,大页内容被限制,取消操作会终止活跃的线程,未完成的文档绝不会被提供下载。
  • 更真实的输出结果: 文本类页面保留了测量间距和基本样式;扫描页明确标注为 OCR 推导结果,当识别质量较弱时,会显示低置信度提示。

大图、更优质的 PDF 以及一点更精致的细节

图片转 PDF 可靠性 开发者手记
  • 大图像空间:桌面端处理预算现已支持每张图像高达 40 兆像素。更大尺寸的图像支持明确的缩放选择;移动端和兼容模式仍保留保守限制。
  • 减少不必要的 PDF 体积膨胀: 使用 PNG 压缩、小尺寸缩略图和后台处理降低额外开销。除非确认缩放,已接受的图片保留原分辨率。
  • 更清晰的选择: 重新设计的确认对话框将原始尺寸与工作副本尺寸并列显示,提供更流畅的悬停状态、键盘焦点以及移动端友好的布局。其可复用的样式表已为未来 ToolKnit 对话框做好准备。
  • 更可靠的导出: 改进了长页面比例、照片方向、透明度处理以及可操作的错误提示。转换过程仍完全在您的设备上完成。
开发者的一封信

最近几周非常忙碌!!我一直努力优化和更新 ToolKnit 桌面端。

ToolKnit 桌面端 v3.0 已上线——感谢大家一直关注!

ToolKnit · 2026 年 9 月 12 日

AI 工具现已支持 OpenAI、DeepSeek 及兼容的中继服务

重大升级 AI 工具 兼容性
  • 四个 AI 工具共享一套服务配置: AI 塔罗、AI 文本冒险、AI 轨迹预测和 AI 前伴侣聊天现已通过统一的浏览器端适配器连接。
  • 更多服务支持: 可选择 DeepSeek、OpenAI 或任何提供 OpenAI 兼容 API 的服务。支持自定义基础 URL、完整端点以及自定义模型。
  • 现代 API 格式: Chat Completions 和 Responses 请求支持普通 JSON、流式 SSE 和网络分块传输;自动处理 GPT-5 与 o 系列的 token 限制。
  • 配置更简便: 可导入常见的 JSON 或 TOML 服务配置文件,包括 model_provider、base_url 和 wire_api。API 密钥可带或不带 Bearer 前缀输入。
  • 本地隐私保障: 密钥保留在页面内存中,并直接发送至您选择的服务提供商;ToolKnit 不会存储这些密钥。离线缓存已更新为 toolknit-v327。

最后的告白

个人日志

也许,我亲手放走了我最爱的人。

那一刻,我觉得人生好像突然没有了什么意思;可也是在那一刻,我仿佛终于解脱了。

最近两天,我常常在听陈绮贞的《太聪明》。

我不知道自己究竟是对还是错。

可是,我已经没有勇气再面对一次、再重来一遍。我怕结局仍然是这样,怕我们都没有丝毫改变。我知道自己会后悔。其实从那条消息还没有发出去时,我就已经开始后悔了。可我真的没有办法。哪怕眼泪一滴一滴落下来,我还是没有勇气重来一遍,也不知道她究竟想不想重来。

上天仿佛在反复鞭打我。我明明已经没有透露出半点想她的痕迹,她却就这样莫名其妙地再次出现了。我开心,也难过。当然,开心大于难过;可开心过去以后,剩下的似乎只有难过。

我不知道我们之间还算是什么关系。你会和自己爱着、喜欢着的人做一辈子朋友吗?我做不到,也不敢。那会让我的心一次次被勾起,又一次次落下。她的一举一动,都会牵动我的心情。

想了两天以后,我觉得还是放手吧。也许,这依然只是我单方面的决定,哈哈。我不知道她还喜不喜欢我,不确定,也不敢再问了。我怕一旦问出口,结局会比现在更加糟糕。

我只希望她能快乐一点。至少,不必再因为我有额外的顾虑,也不必再承受我的情绪。我爱她,但我不想再拖累她了。我这个人本来就有很多很多情绪,我不想再把这些带给她。

希望你以后过得越来越好,遇到真正爱你、与你性格相合的人,过上幸福美满的日子。至少,我们都曾在彼此的生命里添过一段明亮的色彩。

希望以后你还能偶尔记得我,但不要再想念了。想念本身就是一种负担。我想关心你,却不知道该怎么说;也想再见你一面。不过,就当我已经在心里见过你最后一面,也最后拥抱过你一次吧。

我是开心的,也希望你一直开开心心。时间过得真快,一转眼已经这么久了。希望你看到这里,能想开一点、开心一点,也不要再总是熬夜了。

我想送你一束花,却不知道你现在在哪里。可能,这就是我最后的遗憾吧。

那些用文字说不清的,就让它们成为一段模糊的记忆吧。

也许以后,你我都还能回忆起那段时间里的我们。

祝好,mm。

其实,我还爱着你。

三个视频工具现已准确描述其真实的浏览器行为

内容准确性 搜索质量
  • 视频压缩 现在描述了其真实的本地 Canvas 和 MediaRecorder 重编码路径,不再提供固定尺寸、格式或质量的保证,而是根据浏览器特性支持输入和输出。
  • 视频转音频 现在区分了其 PCM WAV 路径与浏览器录制器的 WebM 或 M4A 备用路径。解码的多通道音频也以匹配的通道数据和 WAV 元数据写入。
  • 视频截图 现在在等待待定的跳转位置后才进行截图,并解释浏览器解码帧选择的真实限制、支持的文件类型以及输出尺寸。
  • 指南与搜索数据一致: 相关文章、可见的常见问题、结构化数据和站点地图日期现已使用与工具相同的验证边界。
  • 新的离线缓存: 服务工作线程现在使用 toolknit-v324 并加载更新后的视频工具脚本。

噪声生成器文案与产品保持一致

内容准确性 搜索质量
  • 噪声生成器 现在一致地记录了其七个通道:三个由浏览器生成的噪声颜色,以及四个短时自然声音循环。
  • 说明更加准确: 移除医疗效果、固定耗电量、保证后台播放及无条件离线使用等承诺,这些表现会受到设备和浏览器影响。
  • 指南 现在专注于对比白噪声、褐噪声和粉噪声,并帮助用户构建个性化的混合方案,而工具页面仍保留直接的混音体验。
  • 目录说明同步准确: 掷骰子卡片改为说明实际支持的 1–6 点 D6 骰子,不再列出未支持的类型。
  • 新的离线缓存: 服务工作线程现在使用 toolknit-v323,并包含更新后的噪声生成器脚本。

GIF故事现已与当前转换器保持一致

内容准确性 搜索质量
  • GIF 故事明确说明:45 秒的源视频选取了 3.8 秒片段导出,符合转换器 30 秒的片段上限。
  • 界面信息已更新: 故事现在描述了选择的起始和结束时间,不再使用过时的颜色标签。
  • 性能承诺更加现实: 原先关于转换时间、文件大小和速度的承诺已被替换为反映视频片段设置和设备差异的实际描述。
  • 新的离线缓存: 服务工作线程现在使用 toolknit-v322。

三个真实世界的故事现已链接至其对应的实用指南

网站结构 搜索质量
  • 简历 PDF 故事新增链接,引导读者查看在线压缩 PDF 的详细指南。
  • 合同转图像故事 现在连接到PDF转图像的指南,提供更完整的操作流程。
  • GIF故事 现在链接到逐步指导的视频转GIF指南,以实现可重复的操作流程。
  • 新的爬取和离线信号: 三个故事页面在博客站点地图中已更新修改日期,服务工作线程现在使用 toolknit-v321。

三个工具指南解答了更多实际问题

内容 搜索质量
  • 百分比计算器指南 现在区分了百分点与相对百分比变化,包括 10% 到 12% 的示例,以及零基准的边缘情况。
  • WebP转JPG指南 现在解释了真实的批量工作流程:选择多个文件,进行转换,然后将结果一起保存为一个ZIP文件。
  • Markdown编辑器指南 现在包含一个可直接粘贴的示例,以及清晰的编写、预览、复制或下载操作流程。
  • 新的爬取和离线信号: 博客站点地图中的三篇文章日期已更新,服务工作线程现在使用 toolknit-v320。

视频转GIF指南现已与转换器功能一致

内容准确性 搜索质量
  • 视频转GIF指南现已详细说明实际的5、10、15和20帧率选择,以及30秒的视频片段最大限制。
  • 格式说明更清晰:指南和上传页面现已明确指出播放支持取决于浏览器,而非声称存在未经验证的500 MB限制。
  • 性能承诺更加真实:已移除关于保证转换时间和无限制输出的表述,因为这些性能受设备差异和片段长度限制影响。
  • 全新离线缓存:服务工作线程现在使用toolknit-v319,并加载最新的视频转GIF语言字符串。

记忆卡片指南FAQ数据现已与页面内容一致

搜索质量 内容
  • 记忆卡片制作指南现已提供与页面上访客可阅读的相同四个问题和答案,以便搜索引擎抓取。
  • 结构化数据更可信:已淘汰过时的FAQ条目,不再与当前内容并列存在。
  • 全新爬取信号:指南和博客站点地图现已携带当前的修改日期。
  • 全新离线缓存:服务工作线程现在使用toolknit-v318,因此更新后的指南会替换其旧的离线副本。

视频截图通过键盘操作更便捷

可访问性 可用性
  • 支持键盘上传:上传区域现在可获得焦点,用户按Enter或空格键即可打开文件选择器。
  • FAQ控件现已播报其状态:每个问题均为一个语义按钮,关联一个答案区域,并具有展开状态。
  • 设置更易理解:输出格式标签现已与选择器关联,上传和FAQ控件均显示清晰的焦点状态。
  • 首次渲染更快:页面的Google字体样式表不再阻塞初始页面渲染。
  • 全新离线缓存:服务工作线程现在使用toolknit-v317,包括新版的视频截图脚本。

PWA缓存可靠性优化

可靠性 PWA
  • 流媒体内容保持完整:字节范围请求现在绕过服务工作线程,因此音频和视频控件可接收到原始服务器响应。
  • 不再额外离线保留第三方响应: 字体和其他 CDN 资源仍使用浏览器常规缓存,不再无限增长 ToolKnit 的应用缓存。
  • 运行时缓存有边界限制:非预加载的同源资源在在线时从网络重新获取,仅作为有限的离线备用保留。
  • 新的离线缓存: 服务工作线程现在使用 toolknit-v316,使本次更新与旧的缓存资产分离。

视频转GIF的质量控制现已与输出结果一致

质量修复 可靠性
  • 视频转GIF 现在正确映射其质量选项:低质量使用更轻的色彩采样以生成更小的文件,而高质量则保留更多色彩细节,可生成更大的GIF。
  • 编码器本身未作更改: 这修正了控制项与编码器之间的映射关系,因此标签现在与用户实际收到的输出结果一致。
  • 剪辑选择更清晰: 快速选择控件现在明确指出它会选取前 30 秒的内容,与GIF时长限制保持一致。
  • 键盘访问已恢复: 上传区域现在可以获取焦点,用户可通过按 Enter 或空格键打开文件选择器,每个导出设置也配有对应的标签。
  • 常见问题解答控件现已支持键盘操作: 每个问题都作为语义按钮处理,其打开状态会被朗读,且页面字体样式表不再阻碍其首次渲染。
  • 新的离线缓存: 服务工作线程现在使用 toolknit-v314,因此返回访问的用户将获得修正后的设置。

首页标题优化及当前权威度指标

移动端修复 指标
  • 导航现在保持视觉上的稳定: 其背景在桌面和移动端均与页面内容匹配,不再透明覆盖内容。
  • 移动端头部间距已修复: 提示信息现在独占一行,汉堡菜单位于语言选择器旁边,不再漂移到头部中部。
  • 权威度指标现已与Ahrefs一致: 首页和状态页面现在显示41的当前域名评级。
  • SEO 与内链更紧密: 十三个工具页和三篇配套指南进行了针对性的搜索意图更新;博客中的 36 个行动按钮改为直接打开相关工具,不再绕经首页。
  • 新的离线缓存: 服务工作线程现在使用 toolknit-v312,因此返回访问的用户将获得这些更新。

仓库维护:一次14轮次审计和更轻量化的ToolKnit

安全修复 维护
  • 移除公开的全站备份: 网站根目录曾有一个 98 MB 的六月存档,含数据库凭据和原始统计数据,任何人均可下载。确认可访问后将其移除,并验证源站返回 404。
  • 两侧的无效文件已清除: 包括废弃的搜索索引、GIF编码器遗留文件、一个未使用的favicon变体、一个多余的site.webmanifest、九个过时的桌面截图、一个TTS音频测试文件夹,以及bpm-detector和what-is-toolknit指南的误放根目录副本,均已从仓库和服务器中移除。服务器副本首先被移至站外隔离文件夹,随后经验证。
  • 旧代码已退役: 长期未使用的100日庆祝代码(样式、HTML结构和脚本)已从首页移除——约减少16 KB——同时移除了全局样式表中的二十一个未使用的CSS类。
  • 服务工作线程的新缓存: 离线缓存现在使用 toolknit-v304,删除了两个无效条目,并预先缓存了四个此前缺失的文件(视频转音频、视频转GIF、gif.js以及Phosphor图标字体),使这些工具也能在离线状态下正常运行。
  • 无任何面向用户的变更: 所有工具功能与之前完全一致;本次更新仅移除了未被引用的内容——在任何操作前,已通过一次14轮次的交叉引用审计进行验证。

首页重设计:无边框首屏区和全新顶部导航

设计 移动端
  • 首屏卡片已移除:首页标题区域不再嵌入圆角面板。文字现在精确对齐工具网格的左右边缘,仅由两个细微的L形角落标记框住,动态背景条纹也已取消。
  • 全新顶部导航:一条纯文本品牌与链接行(状态、工具故事、博客、更新日志),配备白色胶囊下载按钮、自定义语言下拉菜单,以及一个温和循环更新的公告栏——悬停可暂停,点击可打开更新日志。
  • 首屏区中的分类统计:展示十个实时分类计数器(PDF 5、图像 18、……),数据直接来自实际工具网格——工具添加时自动保持准确,点击每个计数器即可筛选工具库。
  • 移动端优先方案:一个紧凑的首屏区,适配屏幕不出现横向溢出,汉堡菜单可展开分类抽屉,全宽统计项,以及单行公告。主题切换功能暂时下线,待重新设计。
  • 其他内容未作变更:所有 92 工具、搜索、筛选及双语切换功能均与之前完全一致。全新离线缓存:toolknit-v305。

分析计数器:更安全的并发更新

可靠性修复 分析
  • 并发分析更新现已串行化:页面加载时的重叠请求不再会用较旧的快照覆盖较新的每日计数。
  • 每日分析文件现在以原子方式发布:状态读取者只会看到完整的前一记录或完整的最新记录,不会在更新过程中看到截断的JSON文件。
  • 首次运行追踪更稳健:多个同时首次访问现在可以成功创建分析目录,而不会拒绝有效请求。

搜索质量:更清晰的承诺,更实用的页面

内容修复 SEO质量 双语
  • 摩斯电码翻译器现已为每个支持的字母、数字和标点符号提供可见且可复制的国际摩斯电码参考。页面、预览元数据和结构化数据现已准确描述该工具的真实功能。
  • 免费PDF工具指南现已聚焦于ToolKnit实际提供的六个工作流程,不再依赖可变的第三方定价或功能声明。
  • PDF转Word的预期更加明确:可编辑文本、标题、段落、分页符和OCR功能仍被支持;复杂表格和多列布局可能变为线性文本流。
  • 搜索结果更清晰,且无功能变动:白板、骰子生成器、字符计数器、反应时间指南和节日指南现在在搜索元数据、结构化数据和页面打开时更直接地说明其真实核心用途。工具本身功能与之前完全一致。
  • 全新离线缓存:服务工作线程现在使用 toolknit-v300,因此返回访客将获得本次更新内容,而非过时的工具页面或脚本。
开发者手记

最近的谷歌和必应数据表明,一件事非常明确:重要工作不仅仅是让页面被看到,而是确保当用户到达时,页面准确说明了它能做什么。

这是一次小的优化,但却是默默赢得信任的类型工作。先明确承诺,之后我们才能逐步优化单个搜索结果,并清楚知道哪些内容真正有效。

董子航 2026 年 8 月 17 日——更清晰的页面,更诚实的回答

ToolKnit 桌面版 v2.0:49 个本地工具,接近 500 Star

桌面端 2.0 开源 里程碑
  • ToolKnit 桌面版 v2.0更新产品页面,围绕真实应用介绍11 类、49 个本地 Windows 工具,涵盖 PDF、PPT、图片、音视频、文本、计算器、AI 和硬件工作流程。
  • 每一张新的桌面截图均已就位: 页面遵循 2.0 类别结构,将音频与视频整合到一个工作流视图中,并新增了专门的 PPT 和硬件板块。
  • 本地优先原则依然不变: 文件默认保留在电脑上,Windows 应用已准备就绪可下载,源代码在 Apache 2.0 许可协议下开放。
  • GitHub 项目正接近 500 Star。 从一个人处理 PDF 的困扰出发,再利用下班时间逐个做工具,这个里程碑对我很有意义。
开发者手记

桌面版 v2.0 是个真正的转折点。它不再只是几个小工具,而是拥有 49 个工具的本地工具箱,大家可以查看、使用并在其基础上继续构建。

看到项目仓库逐渐接近 500 星标,那些深夜的孤独感也变得不再那么强烈。感谢大家尝试、分享,帮助这个小项目触达需要它的用户。

董子航 2026 年 8 月 17 日——49 个本地工具,近 500 星标,继续开发

首页导航:一个稳定、无抖动的粘性过滤栏

可用性修复 首页 滚动
  • 修复了过滤栏抖动问题: 选择除‘所有工具’外的任意类别并滚动超过粘性阈值时,侧边栏过滤栏曾出现抖动,下方内容也发生跳动。这一边缘情况现已彻底解决。
  • 重构了桌面端的粘性行为: 类别栏现在采用 GPU 组合定位,能平滑地从首屏区域正下方一直延伸至页面底部(包括页脚),无需布局抖动或跳动。
  • 移动端和平板端未作改动: 小于 1440 像素的屏幕仍保持原有的横向过滤栏行为,不受本次变更影响。
开发者手记

过去几天我们的流量已趋于稳定。说实话,有时我会为自己感到一点自豪——一个人、一个网站、一个程序,全都平稳运行。

今天只是个小 bug 修复,但桌面应用 v2.0 已进入开发阶段,正接近上线。一旦发布,我将重新推进网页端的开发。敬请关注,感谢大家使用 ToolKnit!

董子航 2026 年 8 月 14 日——流量平稳,一处小修复,桌面端 2.0 即将到来

全站 SEO 可靠性审计

SEO 网站全面审计 结构化数据
  • 从审计到验证: 检查站点地图中的全部 212 个公开 URL,再把确认的问题拆成独立验证的小改动处理。
  • 页面身份更清晰: 修正了标题与描述的冲突,修复了文章模板内容在不同主题间泄露的问题,统一了面包屑导航和可见 FAQ 内容,更新了过时的工具数量和发布说明。
  • 更可信的结构化数据: 修正了 Schema 类型和错误的 JSON-LD 文本,补全了必要的文章字段,使页面声明与可见内容保持一致,并验证所有 547 JSON-LD 块均可成功解析。
  • 更扎实的抓取与移动端基础: 修复视口行为,检查 7,697 处内链与资源引用,确认所有公开页面从首页最多两次点击即可到达,并同步地图修改日期和 llms.txt 清单。
  • 线上验证: 全部 212 个地图 URL 通过静态审计;95 条 BlogPosting 记录包含核心发布字段;五个地图文件解析正常;代表性页面通过桌面和移动端检查,未出现横向溢出、脚本错误或结构化数据失败。
  • 未改变任何工具行为: 本次更新提升了可发现性、一致性和机器可读的元数据,但未改变 ToolKnit 工具的处理逻辑。历史发布日期及需源证据或明确政策决定的隐私/法律说明,仍保留独立文档供单独审查,而非猜测。

首页目录:为大型工具库提供更快浏览体验

首页 移动端 可用性
  • 分步式工具浏览: ‘所有工具’目录现在以聚焦的初始选择开始,逐步清晰地分批展示更多工具,缩短了首次移动端浏览时间,同时不移除页面中的任何工具。
  • 搜索和分类保持完整: 每个分类持续显示其完整的工具集合,搜索结果始终展示所有匹配项,而非仅限于初始批次。
  • 双语且无障碍的控制界面: 显示数量和展开操作遵循当前的英文或中文界面,会礼貌地提示更新,并确保所有工具链接保留在源代码中,以便直接访问和索引。

性能优化:四大工具的本地处理更加流畅

性能 可靠性 P0 级修复
  • 背景移除: 支持手动清理、透明边缘裁剪和导出,保留原有的本地AI及WebGPU/WASM降级行为,同时将最耗资源的裁剪扫描工作移出关键交互界面。
  • 丝网印刷: 预览渲染和PNG导出现在使用专用的Worker(浏览器支持时),其他浏览器则使用兼容的Canvas降级方案。
  • PDF压缩: 目标尺寸搜索复用已准备好的源页面,而非为每个候选项重新渲染原始PDF,减少重复工作,同时保持原有的字节限制验证。
  • PDF 转 Word: OCR 预处理移入专用 Worker。标准 A4、Letter 扫描保留此前 3x 渲染质量,对异常大页面设置安全边界,并通过自动 Canvas 回退保持兼容。
  • 可靠发布: 离线缓存现在会预先加载所有四个更新工具的脚本和Worker,确保部署代码与缓存代码始终一致。

背景移除:更安全的本地AI,更优质的编辑体验,以及更灵活的导出功能

重大升级 本地 AI 开源 开发日志
  • 更清晰的本地AI设置: 首次运行时会说明,已固定并自托管的@imgly/background-removal v1.5.5引擎可能下载最多109.5 MB的AI模型和WebAssembly资源。下载仅在确认后开始,可复用浏览器缓存,且图像像素永远不会离开设备。
  • 更强大的掩码精修: 可调整画笔大小和边缘柔度进行恢复或擦除区域,支持撤销或清除编辑,长按可与原始图像对比,通过缩放、平移和聚焦控制查看细节,支持鼠标、触控和笔输入。
  • 灵活的预览与导出: 可以在透明、白色、黑色或自定义背景上查看裁剪结果;自动裁剪透明边缘;添加边距;对最终边缘进行羽化;并以全分辨率导出为PNG、WebP或填充背景的JPG格式。
  • 更安全的生产限制: 增加了真实图像解码检查、20 MB文件大小限制、设备感知的像素和Canvas预算、更干净的资源释放,以及防止超出浏览器安全限制的防护机制,确保图像和导出操作在安全范围内完成。
  • 开源透明度: 发布了上游提交记录、源码归档、AGPL-3.0许可证、第三方声明、构建产物清单、哈希值以及可复现的构建流程。相关条款、永久链接和离线缓存均指向相同记录。
  • 更快的推理和可靠的编辑: 兼容Chrome和Edge的版本现在自动使用WebGPU,安全降级为WASM,同时采用低内存1024px掩码流程,避免了之前的全分辨率PNG中间转换。手动编辑器现在以裁剪完成的图像打开,并默认选择‘去除残留’,每次部署后都会刷新控制项的缓存版本。
  • 发布引用已同步: 更新了双语文案、无障碍标签、结构化数据、站点地图、Service Worker资源,以及llms.txt,确保用户、浏览器和索引系统对产品行为的描述保持一致。
  • 可用性事件——已解决: 源站证书未及时续期,且当时未配置自动续期,导致 Cloudflare 连续数小时返回 526 Invalid SSL Certificate。证书已续期、服务已恢复。自动续期以及到期和续期失败告警作为后续工作记录在状态页。
开发者手记

过去几天,ToolKnit 每天大约有 500 次使用,我真的很开心。一个最初只有一人的小想法,能走到这里,既是成就,也是充满希望的起点。我一直在想,如果哪天单日达到 1,000 次,我会是什么心情。你们大概能猜到,哈哈。

ToolKnit Desktop v1.2现已发布并开源。版本1.3已经进入我的思考范围,尽管我仍在思考它应该是什么样子。我不想仓促地给版本号,我希望下一次发布能真正带来有意义的提升。

然后还有睡眠问题。我已经几个月没有睡好觉了。有时候我会熬夜,因为还有一处bug需要修复;有时候笔记本关了,睡眠却迟迟不来。真的,人们是怎么应对失眠的?现在按时睡觉,似乎是我仍然无法交付的一个功能。

不过今天感觉很好。每天大约500次使用意味着ToolKnit正真正融入人们的日常生活。感谢每一位访问、推荐、提交问题反馈和善意留言。一点一点地改进,让我们看看何时会迎来1,000这个时刻——以及我是否还清醒着,能见证它到来。

董子航 2026 年 8 月 5 日——感谢每天 500 次访问,期待 1,000 次,也想好好睡觉

ToolKnit Desktop v1.2 页面刷新

桌面 V1.2 开源 双语
  • v1.2完整展示:已重新设计桌面页面,涵盖超过30种本地支持的PDF、图片、音频、视频、文本、计算器、创意工具和AI工作流,并为CLI和MCP访问提供了专门的介绍。
  • 开放开发,更易跟进:下载链接直接跳转至GitHub Releases页面,源代码仓库始终一点击可达,页面还能稳定获取当前GitHub的星标数量,并具备备用方案。
  • 首屏即支持:新增了一个低调的“为开发者买杯咖啡”按钮,点击后会打开ToolKnit的捐赠故事页面。
  • 全英文和中文支持:新页面,包括支持操作,能流畅切换中英文,且在紧凑的移动设备屏幕上依然可用。

每日计划表优化及严格图像与PDF目标尺寸设置

导出 改进 目标尺寸 开发日志
  • 三种不同的视觉模板:纸张、深色、杂志风格,为每日计划表提供了清晰的打印效果、高对比度海报选项和杂志式布局。
  • 优化兼容格式:可选择9:16故事、4:5帖子或A4打印格式。长内容现在会自动换行,并延续到清晰编号的页面上,不再超出边界。
  • 更全面的导出功能:可将当前页面导出为PNG,将多页计划表打包为ZIP,或直接在浏览器中生成标准多页PDF。
  • 更清晰的双语发现路径:更新了英文和中文的引导说明、常见问题解答以及结构化元数据,使用户在规划前能更轻松理解模板、宽高比、换行和打印功能。
  • 图像压缩至精确上限:可选择常见的上传限制,从50KB到10MB,或输入自定义值。每次成功达到目标尺寸的结果,都会在实际编码字节数验证后才能下载。
  • 以质量优先于尺寸:图像压缩器会优先寻找最适合的JPG或WebP质量,仅在必要时才按比例缩小尺寸。透明PNG保持透明,当兼容性允许时,还提供可选的智能WebP模式。
  • 真实可靠的批量结果:所选限制仅适用于单个图像,而非整个ZIP文件。无法真实满足该限制的文件,包括必须保留每一帧的超大动图,会明确被排除,而不是被错误标记为成功。
  • PDF压缩至严格上限:可选择常见限制,或输入任意目标值,从50KB到50MB。压缩器会寻找最接近可读结果且低于该上限的值,并在最终PDF的实际字节数验证后才允许下载。
  • 清晰、诚实的失败处理: 如果原始PDF已处于限制范围内,则保持不变。如果即使是最小安全渲染也无法满足所选尺寸,ToolKnit会明确报告这一结果,而不是提供一个超出尺寸的文件作为成功输出。
  • 透明的文档权衡: 在目标尺寸模式下,每一页都会被重建为优化的JPEG图像。页面外观得以保留,但可搜索文本、链接、表单、书签和无障碍标签等信息会故意不被包含在压缩副本中。
开发者手记

在某个时刻,我意识到自己已经专注于这一件事将近五个月了。我以前从未有过这样的坚持。也许生活中某些事情,尤其是内心深处的事物,曾一度关闭了我的一部分。有时感觉,生活中只有两种可能:一种是安静的生活,另一种就是ToolKnit。

但现在我很开心。许多人选择了使用ToolKnit,支持它,推荐它,提供反馈,并与我一起共建。这种支持让我觉得这个项目不再像一个人在独自完成。我会尽最大努力,持续与大家一起,一点一点地推进ToolKnit的建设。衷心感谢大家。

今天的更新是又一个重大版本:每日计划表现在可以导出精修的海报图片和可打印PDF文件,图像压缩和PDF压缩功能现在可以针对已验证的最大文件大小进行设置。ToolKnit Desktop 也在稳步推进。CLI访问和AI代理集成即将推出,相关工作将持续在GitHub上公开进行。

将近五个月过去了,我依然在这里——稍微安静了一些,更加坚强了,也真心感到与大家共同构建这一切的喜悦。

董子航 2026 年 8 月 2 日——快五个月了,继续一起建设

白板V3、桌面端动力与一个重大里程碑

里程碑 改进 开发日志
  • 白板 V3: 基于 Fabric 对象模型重建绘图工作区,让选择、移动、缩放、层级、文字编辑、图片处理及撤销/重做更可靠。
  • 更可靠的会话体验: 增加了自动本地恢复、更清晰的图层控制、响应式移动端工具,以及针对升级版白板体验的优化离线缓存。
  • 开源进展: ToolKnit Desktop v1.0 开源后一天,项目突破 150 个 GitHub Star,抖音发布帖获得 300,000 次浏览和超过 6,400 次点赞。
开发者手记

2026 年 8 月 1 日,ToolKnit 迎来一个大里程碑。桌面端 v1.0 在 GitHub 开源仅一天,就收获 150+ Star。抖音帖子达到 300,000 次浏览和6,400+ 次点赞。说实话,我从没想过会有这样的数字。

桌面端最初几乎没有任何用户,我甚至一度认为可能无法继续开发下去。但这种积极的反馈改变了我的想法:我应该定期持续更新它。请耐心等待开源版ToolKnit Desktop v1.2的发布,它会更好。

网页端也在前进。一天多一点,ToolKnit 记录了 2,000+ 次使用,相当于此前一周的量。抖音第一个群已经满了,所以又开了第二个群。新的里程碑不断出现,我欢迎各种网站目录和资源库收录 ToolKnit:正因为有人使用和分享,它才有意义。

昨天,两位支持者通过微信支付分别捐赠了RMB 15和RMB 8.88。我不知道你们是谁,但非常希望能当面感谢你们。你们给了我继续前行的动力。谢谢大家。

董子航 2026 年 8 月 1 日——心怀感激,继续开发

首页翻译缓存修复

修复 改进
  • 图像拼接中文卡片已恢复: 对首页语言加载器进行了版本化处理,确保新发布的图像拼接卡片始终加载其正确的中文标题和描述,而不是继承旧的缓存语言包。
  • 语言更新可靠:已将首页、首屏演示和离线缓存同步至最新中文语言包,确保新添加的工具卡片不会因浏览器缓存过时而未被翻译。

图像拼接工具发布及工具目录基准

修复 改进 SEO 开发日志
  • 完整公开目录: 在ToolKnit 是什么?概览中恢复七个缺失的已上线工具链接:歌词可视化、ASCII 艺术、ASCII 横幅、表情查找、挑战转盘、呼吸放松和戒烟追踪。
  • 分类文案准确:已更新自我测试部分,使私有工具‘戒烟追踪器’与‘情感忽视测试’并列呈现。
  • 一次发布检查清单:新增了一套权威的新增工具工作流程,将全局同步任务与博客、新分类、大型依赖项、桌面端一致性及IndexNow等条件性工作明确分离。
  • 新工具 —— 图像拼接工具:可将本地图片排列成无缝的纵向长图或横向条带,控制共享尺寸、间距和背景,然后导出为PNG或JPG。整个构图与导出过程均在浏览器中使用Canvas/OffscreenCanvas完成。
  • 连接 PDF 工作流: PDF 转图像完成后可直接将结果交给图片拼接。按顺序排列的页面图片 Blob 通过短期 IndexedDB 存储在本地转移,不把内容装入 URL,也不上传。
  • ToolKnit 桌面端已开源: 下载入口打开官方 GitHub v1.0.0 发布页,完整桌面仓库位于 ZihangDong/toolknit-desktop。
  • 运维引用同步: 公共目录、地图、离线缓存、公开统计及发布文档同步到 92 个功能页,包括 91 个独立工具与世界节假日中心。
开发者手记

7月30,2026。两天前,有位抖音群成员告诉我他们工作流中缺少一个环节。他们可以在ToolKnit将PDF转为图片,但之后必须离开网站,再寻找其他工具将这些图片拼接为纵向长图或横向宽图。他们还表示,其他替代方案感觉不如ToolKnit好。我看到这条消息,便许下了一个承诺。

今天,两天之后,这个承诺兑现了。图片拼接上线:添加、排列图片,拼出纵向或横向长图,再下载 PNG 或 JPG。PDF 转图像完成后也有了在图片拼接中打开按钮,让页面直接进入下一步,不用绕路或从头再来。希望那位群友现在正笑着,哈哈。

另一位成员也告诉我,他们已向他人推荐了ToolKnit。这听起来或许是一件小事,但对于一个独立开发者而言意义非凡。这意味着工具确实足够好,被他人主动推荐,这本身就是一种真正的成就。我由衷地感到高兴。

今天本不该是更新日。但当有用户真正提出需求时,我希望ToolKnit能倾听。因此我们构建了它。这就是我们的核心理念:用户提出需求,我们就让它更好。出发吧。

我是 Zihang Dong。如果发现 bug、遇到问题、想要某个功能,或有一个烦人的小任务希望 ToolKnit 帮忙解决,请通过 info@toolknit.com 及时联系我,我会看消息。

董子航 2026 年 7 月 30 日——兑现承诺,只差一次点击

PDF与图像工作流安全优化、搜索清理及生产环境修复

改进 修复 安全 SEO 开发日志

PDF转图像工具已完成专业级升级,结合更安全的处理基础,提升了页面选择速度、输出规划清晰度以及下载的稳定性。

  • PDF处理更安全: 已将此转换器的PDF.js引擎升级为自托管的修补版本 4.10.38
  • 无运行时CDN依赖: PDF.js和JSZip现在由ToolKnit直接提供,减少了第三方服务的可用性及加载风险
  • 可靠的取消与清理: 停止或重置转换时,会取消正在进行的渲染并释放PDF文档、工作线程、画布及临时Blob URL
  • 透明的转换反馈: 成功完成、部分成功、完全失败和取消现在有明确的状态,用户始终清楚发生了什么
  • 更清晰的双语结果状态: 修复了屏幕阅读器完成提示显示在页面底部可见文本的问题,并确保切换中英文时已完成转换消息同步
  • 精确选择页面: 转换所有页、输入指定范围、选择奇偶页,或使用每批 12 页的低内存缩略图选择。
  • 专业的输出控制: 新增了72、150、300以及自定义的36至600分辨率、白色或透明背景、可编辑的输出文件名、零填充页码等选项
  • 转换前预览输出: 首选页面会显示其预期像素尺寸、近似文件大小、页数以及渲染负载,包含高内存警告和画布硬限制
  • 分批展示结果: 转换后的图片每次显示 12 张,附有准确尺寸和体积、完整适应的预览、支持无障碍操作的灯箱导航,以及针对失败页的重试控件。
  • 密码保护的PDF文件: 用户可在双语、键盘可访问的对话框中输入或重试PDF密码,而非直接遇到无法解决的错误
  • 更好的移动端保存体验: 新增iOS分享支持、大输出集拆分为ZIP包、安全的总大小阈值,以及避免横向溢出和浮动控件冲突的移动端布局
  • 更稳定的 ZIP 下载: 归档过程以流式方式生成文件,避免无谓的图片重压缩,并让下载 URL 保持足够长的有效时间,方便浏览器保存。
  • 更少的本地静默数据: 移除了之前隐藏的浏览器历史记录,该记录曾保存PDF文件名、文件大小和预览缩略图

麦克风/摄像头搜索意图优化: 原有工具和故障排查文章现在角色更清晰、互补,且未更改任一链接地址

  • 工具意图保持不变: 在线的摄像头与麦克风测试 仍专注于立即检查摄像头预览、麦克风电平和连接设备
  • 故障排查意图增强: 伴随指南现在优先提供黑屏、静音麦克风、权限被拒绝、设备错误、以及Zoom/Teams/OBS冲突等常见问题的解决方案,适用于Chrome、Edge、Firefox、Safari、Windows、macOS、iOS和Android
  • 准确说明浏览器技术: 明确使用 MediaDevices.getUserMedia() 获取本地媒体流,不创建点对点通话、不录制或上传。
  • 一致的发现信号: 同步了文章标题、描述、Open Graph、Twitter卡片、BlogPosting、FAQ、Breadcrumb、博客索引卡片、sitemap日期和离线缓存

响应式裁剪的稳定性: 第一次生产审核修复后,裁剪几何结构在桌面和移动端布局中保持稳定

  • 图像裁剪: 在切换桌面和移动端宽度时,保留了原始图像区域的选择,消除了导致裁剪框放大或缩小的反向缩放问题
  • 圆形裁剪: 对圆形叠加层和拖动坐标进行了调整,使其与画布实际显示尺寸对齐,确保在响应式缩放后选择区域始终保持居中、完整可见且准确

更安全的共享PDF工作流: 在保持原有双语界面和输出行为的基础上,将修补版PDF.js基础扩展至四个生产级工具

  • 自托管 PDF.js 4.10.38: 合并 PDF、压缩 PDF、PDF 转 Word及 AI 转 PNG 从旧版 3.11.174 升级。
  • 更安全的文档加载: 禁用了动态PDF JavaScript执行,并在所有四个工作流中标准化了本地Worker、字符映射和标准字体资源
  • 降低第三方运行时风险: AI转PNG现在直接从ToolKnit加载JSZip以支持多画板ZIP下载,不再依赖公共CDN,新PDF资源已同步至离线缓存
  • 更清晰的资源生命周期管理: 在完成PDF文档的页数统计、渲染、转换或重置后,明确释放文档以减少重复使用过程中的内存占用
  • 生产级回归测试覆盖: 验证了六页合并、三页压缩、三页Word导出、三画板AI转换、ZIP兼容性以及390像素移动端布局,未出现控制台错误或横向溢出

背景移除首次运行与内存加固: 重构了AI初始化路径,使新访客可理解、延迟或开始模型下载,而无需离开工具

  • 同页首次运行设置: AI模型提示仅在请求背景移除时出现;选择“稍后”会干净关闭,选择“下载并继续”则会恢复页面上待处理的图像
  • 准确的下载提示: 同步了设置对话框、加载状态、提示、常见问题解答以及结构化数据,以实际最大值109.5 MB为依据,涵盖AI模型和WebAssembly资源
  • 固定本地AI引擎: 将运行时CDN导入替换为本地托管的@imgly/background-removal 1.5.5包,并修正了本地模型路径,降低了第三方可用性和供应链风险
  • 内存受限的优化: 用单通道掩码快照替代了二十个完整的RGBA撤销副本,由12 MiB移动端和32 MiB桌面端预算控制,旧状态会自动释放
  • 更安全的图像限制: 保留了20 MB的文件上限,并在受限设备上设置8百万像素的解码图像上限,在桌面端设置16百万像素上限,再开始AI处理
  • PNG 保存更兼容: 下载时先把链接短暂添加到页面,触发后再移除,避免某些浏览器忽略对脱离文档元素的点击。

HEIC和图像方向的可靠性: 在日常图像工作流中加强了可预测输出、内存使用边界和格式指导

  • HEIC转JPG: 在解码前添加了20文件、25 MB/文件和100 MB批量限制,以及在解码结果保留或显示前根据设备设置的像素上限
  • 完整的HEIC结果: 多帧文件现在保留每个解码帧,混合批次显示明确的成功与失败卡片,预览释放临时URL,下载ZIP生成一个可预测的归档文件
  • 自托管HEIC解码器: 将heic2any 0.0.4本地固定,并与离线缓存同步,不再依赖运行时CDN
  • 翻转与旋转图像: 强制执行声明的50 MB限制及设备感知的解码像素上限,拒绝动画GIF而非静默扁平化,将解码操作从base64 Data URLs中移出
  • 准确的导出行为: PNG现在保留透明度和渲染像素,JPG使用白色背景和92%质量;元数据和动画限制在双语中均清晰披露,并包含结构化数据
  • 降低导出内存: 用 Blob 生成替代 base64 导出,限制临时 URL 存活时间,重新开始时释放图片与 Canvas 资源。

裁剪、合并和丝网印刷的稳定性: 在四个图像和PDF工作流中完成了下一轮生产审计修复

  • 图像裁剪和圆形裁剪: 添加了声明的50 MB限制,移动端和桌面端解码像素上限,可见的损坏图像错误提示,安全的空Blob处理,并明确警告:导出的动画GIF仅保留第一帧
  • 更安全的裁剪下载: 移除了错误的iOS专属变量引用,保留了原生分享支持,允许再次选择失败的文件,修正了图像裁剪页底部‘热门工具’链接的错误标注
  • 合并PDF验证: 在进入文件列表前拒绝损坏或加密的PDF文件,成功添加的文件按批次计数,现在跳过文件的合并操作会准确报告部分完成状态,包括成功、失败和页数详情
  • 支持HEIC格式的丝网印刷: 将自托管的HEIC解码器直接连接到工具中,增加了可见的格式、文件大小、像素、解码和导出错误提示,并确保所有处理都在用户设备上完成
  • 有意义的LPI控制: 将点密度改为有效五LPI步长,并采用连续像素网格映射,使得相邻的低密度和高密度设置现在能产生明显不同的输出效果
  • 响应式预览和受保护的导出: 控制项基于1200像素的预览进行渲染,以实现更平滑的调整;PNG导出在安全情况下会从原始图像全尺寸重新渲染,并为大文件设置明确的设备感知兆像素上限
  • 降低半色调内存: 将每个像素的通道掩码从四字节减少到一字节,收紧旋转网格边界,合并快速滑块事件,并在导出后释放临时全尺寸Canvas
  • 网站文本完整性: 对所有215 HTML页面完成了UTF-8审计,并恢复了压缩图像和JPG转PNG页面中被截断的压缩范围和页脚文字

图像转PDF和批量压缩功能加固: 在两个高使用率的图像工作流中完成了另一轮生产审计

  • 真实图像验证: 图像转PDF和压缩图像功能现在在实际浏览器解码后拒绝损坏或不支持的文件,不再接受虚假尺寸或后期失败
  • 设备感知的批量预算: 在开始昂贵的Canvas或PDF操作前,添加了每文件、文件数量、总字节、每图像像素和总像素的限制
  • 安全的用户文件名: 从动态HTML模板中移除了文件名,添加了可访问的删除和下载标签,并确保多个PDF和ZIP条目拥有唯一名称
  • 准确的压缩结果: 如果重新编码后反而更大,就保留原文件并显示已保留原件,不再给出误导的负数或零节省率。
  • 透明度和动画保护: 对整张图像进行PNG透明度检查,而动画GIF保持不变,确保不会有任何帧被静默丢弃
  • 稳健的混合批次处理: 单个图像失败不再导致其他所有压缩结果失效;完成反馈会准确报告成功、未变和失败的文件
  • 本地ZIP运行时: 两个工具现在均使用ToolKnit的固定本地JSZip 3.10.1构建,拥有更干净的Blob URL和Canvas生命周期管理
  • 权威里程碑: ToolKnit的Ahrefs域名评级已达到42,首页徽章现已反映最新验证评分

首页发现界面重构: 重新设计了首屏工具发现体验,围绕更快的扫描、更清晰的信任信号和更平和的响应式布局

  • 更聚焦的首屏: 加入简洁的日常办公文案、低对比度动画工作流画布、实时工具与文章数量、已验证的 Ahrefs DR 42 指标,以及 ToolKnit 被 FMHY Multi Tool Sites 收录的信息。
  • 桌面分类栏: 将分类筛选功能移入固定左侧文本导航栏,与主内容网格对齐,采用简洁的白色选中标记,不使用任何装饰性容器
  • 上下文感知导航: 分类栏会跟随用户在工具库中的浏览路径,随后在进入‘使用方法’部分前提供一个易于访问的返回顶部控制
  • 聚焦移动端分类栏: 将不均匀的多行控件替换为可滑动的单行文本栏,保持每个标签的自然宽度,自动居中选中分类,并使用低调的白色下划线替代按钮或胶囊背景
  • 双语吉祥物定位: 蜘蛛现在会跟随工具数量标签的实时位置移动,确保在英文文案换行、中文文案高度变化、字体加载完成或视口缩放时保持一致间距
  • 新社交分享图示: 恢复了缺失的共享 Open Graph 图片,新增 1200 × 630 ToolKnit 预览图,使首页、工具页、博客、节日活动及支持页面的链接再次能显示一致的品牌卡片
  • 保留生产信号: 保留了首页 URL、canonical 标签、英文 SEO 元数据、结构化数据、双语切换、浅色/深色主题、搜索行为、所有 91 工具卡片,以及原有的分析数据

状态与版本更新一致性: 修正了公共权威信号,并使长期版本更新日志更易于浏览

  • 当前权威评级: 更新了状态页面中过时的 Ahrefs 域评分,从 41 更新为经验证的 42 值
  • 持久化时间线导航: 将固定定位移至完整时间线侧边栏,保持当前日期在列表中的可见性,并在移动端提供一个固定日期按钮,搭配覆盖菜单,不会影响文章布局

首页页脚优化: 提升了工具发现效率,并添加了一个低调的个人签名,未改变周围分类布局

  • 七个轮换热门工具: 首页页脚现在每次访问都会从完整工具目录中选择七个不同的工具,同时在 JavaScript 或数据请求不可用时保留七个可爬取的备用链接
  • 双语创作者署名: 在 X 和 GitHub 链接下方添加简洁心形署名“Made with love in China · Zihang Dong”,配有自然中文版本和匹配的浅色主题样式。
  • 可验证的 FMHY 识别: 在展示徽章下方新增双语信任说明,直接链接至 ToolKnit 在 FMHY 多工具站点目录中的页面,避免夸大两者关系
  • 快速原生分享: 新增响应式分享 ToolKnit 功能,当设备支持时打开分享面板,否则自动复制首页 canonical 链接,并提供本地化可访问的反馈
  • 移动端友站链接居中: 将首页中被包裹的合作伙伴链接页脚对齐至版权行的居中位置,与窄屏下工具页页脚的已有行为保持一致

六格式图片转换增强: 重构了用于 JPG、PNG 和 WebP 格式工具的共享转换核心,采用更安全的输入、更健壮的批量处理和可预测的下载机制

  • 六个工具协同升级: 在不改变工具 URL、英文 SEO 元数据或双语架构的前提下,强化了 JPG 到 PNG、PNG 到 JPG、JPG 到 WebP、PNG 到 WebP、WebP 到 JPG 和 WebP 到 PNG 的转换能力
  • 实际格式与解码验证: 验证 JPG、PNG 和 WebP 文件签名,拒绝伪装或损坏的文件,当可能时在完全解码前检测声明的尺寸,并阻止设备不安全的像素工作负载
  • 有界批处理: 对 20 文件进行校验,每文件不超过 20 MB,根据设备设置总字节限制,对每张图片设置像素上限,并在转换前设定总解码像素预算
  • 可靠的部分完成: 单张图片出错不再中断有效批次;双语失败摘要会明确标识每个被拒绝的文件,取消操作则在当前图片处理完成后干净停止
  • 更安全的动态输出: 文件名现在仅以文本形式显示,重复输出名称会自动添加确定性后缀,Canvas 编码器必须返回包含请求 MIME 类型的非空 Blob,且 ZIP 内容在下载前会进行验证
  • 透明 PNG/WebP 转 JPG 控制: 用户可选择白色、黑色或自定义背景色,而非接收一个无法解释的默认值,且控制选项在中英文之间实时切换
  • 动画与元数据清晰性: 动态 WebP 文件在帧被丢弃前会被拒绝,双语说明 Canvas 输出会移除 EXIF、GPS、ICC 等嵌入元数据
  • 本地固定 ZIP 运行时: 所有六页均加载 ToolKnit 自托管的 JSZip 3.10.1 构建版本,源文件、结果、ZIP、图片和 Canvas 资源通过显式生命周期清理释放

图片缩放功能生产级加固: 在输入验证、输出可预测性以及格式行为更清晰的基础上,强化了单图缩放流程

  • 真实文件校验: 校验 JPG、PNG、WebP、BMP 和静态 GIF 的签名,确认浏览器可解码该图片,并在帧丢失前拒绝损坏文件或动态 GIF、PNG、WebP 资源
  • 设备感知安全限制: 强制执行声明的 20 MB 文件上限、解码图像像素上限、1 至 10,000 像素尺寸限制,以及在创建大 Canvas 前设定的输出像素工作量上限
  • 透明转 JPG 控制: 用户可选择白色、黑色或自定义 JPG 背景,PNG 保留透明度,有损格式质量控制在不适用时自动关闭
  • 可靠的输出生命周期: 验证 Canvas 输出非空且 MIME 类型正确,释放替换的源和结果 URL,清除大型 Canvas 缓冲区,并使用安全的源文件派生命名规则用于下载和 iOS 共享
  • 准确的双语指导: 同步展示接受的格式、动画与元数据限制、大图预期、校验反馈、响应式控件以及在中英文间持久化的移动端导航

图片网格分割功能生产级加固: 重构了固定 3×3 的流程,确保精确像素覆盖、有界内存使用和真实输出指导

  • 完整覆盖源像素: 将余数像素分配给九张 PNG 分块图片,确保每个源像素恰好出现一次,邻接分块的尺寸差不超过一个像素。
  • 诚实的形状提示: 明确提示当非正方形源会生成矩形分块图片时,直接链接至图片裁剪功能,并移除关于自定义网格尺寸或等正方形输出的声称,因为该工具并不提供
  • 真实格式校验: 校验 JPG、PNG、WebP、BMP 和静态 GIF 的签名及解码尺寸,拒绝损坏文件和动态 GIF、PNG 或 WebP 资源,防止帧丢失
  • 按设备设置安全边界: 在高开销处理开始前,执行 20 MB 文件限制、解码像素和尺寸上限、最小 3×3 输入尺寸,以及移动端/桌面端 ZIP 内存预算。
  • 轻量级预览: 替代九个永久全分辨率 Canvas 和 Data URL,使用受限 180 像素的 Blob 预览,仅在每个编号 PNG 分块图片导出时保留完整分辨率
  • 可靠的本地 ZIP 导出: 在所有九个分块图片间复用一个 Canvas,校验每个 PNG Blob 和 ZIP 条目,使用自托管的 JSZip 3.10.1 构建,并释放临时图片、Canvas 和 URL 资源
  • 已验证的双语功能:完成了WebP输入测试、重置与重新选择、大图预览、文件限制、精确余数尺寸设置、ZIP打包完成,以及390像素级别的英文和中文布局,未出现工具错误

文档转PDF功能强化:完成了22工具PDF及图像审核的最后一页,采用更安全的DOCX验证、受限渲染和准确输出披露

  • 基于图像的输出保持真实性:标题相邻的引导、工作流程说明、常见问题解答、社交元数据和结构化数据现已明确说明,每个预览页面最终都会转化为PDF中的图像,因此文本、链接、书签和可访问性结构均不会保留
  • 真实DOCX验证:严格遵守声明的20MB限制,验证ZIP签名和必需的Word包结构条目,拒绝损坏或伪装的文件,并防止条目数量过多或包体积膨胀
  • 设备感知渲染预算:限制页面数量、每页像素、总捕获像素、扩展文档内存和最终PDF大小,同时自动降低大文件的捕获缩放比例以确保安全
  • 更低的转换内存占用:将每页的Base64 Data URL替换为经过验证的JPEG Blob和二进制图像数据,每次插入后立即释放Canvas,并在成功、失败和取消路径中移除离屏渲染容器
  • 可靠的取消与恢复功能:用户可以在昂贵阶段之间停止长时间转换,保留已验证的预览,并可无残留结果状态或泄漏的渲染资源重新尝试
  • 固定本地转换栈: Word转PDF现在加载本地托管的JSZip 3.10.1、docx-preview 0.3.3、html2canvas 1.4.1和jsPDF 2.5.1构建,不再依赖运行时的三个公共CDN
  • 生产环境回归测试覆盖:验证了两页DOCX预览与转换、损坏及超大输入文件的拒绝、真实30页的取消操作、60页桌面上限,以及390像素级别的英文和中文布局,均未出现工具错误
开发者手记

如果你一路读到这里,那你大概率是ToolKnit的忠实用户。这篇更新实在太长了,我怀疑很少有人会一直看到这里——所以当然,我得在底部留下一个开发者的备注。哈哈。

最近几天是一场高强度的冲刺。不仅是为了发布更多更新,更是为了让使用ToolKnit的每一个小细节更流畅、更安全、更可靠。我投入了大量精力完成这次更新,可能这是我写过的最长一篇更新。不过,我觉得这值得:许多原本默默无闻的细节现在都得到了显著改善。

今天的首页也经过了细致的UI优化,我真心喜欢现在的感受。它更清晰、更平静,也更接近我长久以来在脑海中构想的ToolKnit版本。

请继续在需要时使用ToolKnit,让每一个小任务变得更简单。每一次访问、分享和反馈,都帮助这个项目不断前进。

下一次更新预计需要大约半周到一周时间。最近的节奏有点过于紧张,我也在推进另一个项目。但我依然在这里,用心构建。我期待你使用接下来的内容——也希望你能将ToolKnit分享给那些真正需要它的人。

董子航 2026 年 7 月 27 日——一篇长更新,短暂停歇,仍在开发

每个工具页都已使用 ToolKnit 新架构

里程碑 改进 开发日志

经过六周细致、逐页的工作,ToolKnit的整个工具集合已完成向共享现代架构的迁移。

  • 迁移完成: 全部 91 个功能页面,包括 90 个独立工具与世界节假日中心,均已使用新架构。
  • 在保留每个工具核心行为和英文SEO的同时,新增了统一的双语界面、响应式导航、相关工具推荐以及共享的交互式底部栏
  • 完成了创意工具和自测工具的最终迁移,随后将节日中心也纳入同一系统
  • 重新设计了节日中心模块,采用更紧凑的响应式布局,使用户能够更轻松地浏览国家选项、筛选条件和结果,减少垂直滚动
  • 同步了工具和页面站点地图、llms.txt部署文档以及Service Worker缓存,然后为IndexNow准备了完整的迁移URL
开发者手记

2026 年 7 月 26 日。用了一个半月,终于把 ToolKnit 全部工具页迁到了新架构。只有我知道这过程多难。回头想想,真希望一开始就打好基础,而不是逐页搬迁。不过结果最重要:我做到了。

每个新里程碑都会给这颗经历很多的心带回一点快乐。22 岁,我想自己做了一件值得骄傲的事。

希望你们喜欢使用ToolKnit。感谢大家记得这个项目、回来使用,让这份工作变得有意义。

最近节奏非常紧张,因此我决定休息一周,好好照顾自己的身心和钱包。下一次更新可能在一周后到来。附言:Codex的配额消耗得太快了!

迁移工作已经完成,但部分页面仍可能存在小问题。我们真心希望了解任何影响使用的问题。如果发现bug或遇到问题,请直接发邮件给我:info@toolknit.com。这是我的个人邮箱,我会尽快回复。

董子航 2026 年 7 月 26 日——所有工具迁移完成,终于松口气

FMHY认可与双语迁移进展

里程碑 改进 开发日志

ToolKnit已入选FMHY,即互联网上最大的免费资源库,同时,最后一批旧版工具页面正快速向共享双语架构过渡。

  • FMHY列表: 多工具站点 — ToolKnit - 图片 / 视频 / PDF / 音频 / 文件
  • 91 个功能页面中,已完成 83 个页面的新架构迁移,创意和自测分类还剩 8 个旧页。
  • 完成了双语创意架构迁移,包括CPS测试、随机转盘和颜色选择器,保留了原有功能和英文SEO
  • 标准化了三个包含双语FAQ内容的页面,统一了相关工具推荐、共享交互式页脚、记住语言选择以及移动端安全的首屏导航
  • 修复了颜色选择器的移动端菜单,确保在菜单外部点击时面板会自动关闭且页面布局不偏移,同时将Service Worker缓存更新至toolknit-v235
  • 已准备下一阶段工作:完成剩余迁移,然后优化UI并添加一些小而聚焦的功能改进
开发者手记

2026 年 7 月 25 日。我们被 FMHY 收录了,这是互联网上最大的免费资源库!

ToolKnit现已列入多工具站点,条目为ToolKnit - 图片 / 视频 / PDF / 音频 / 文件。看到项目被收录其中,感觉是一个具有意义的里程碑,尤其在经历了大量默默无闻的建设与优化之后。

目前,我正快速推进剩余的旧版工具页面迁移。ToolKnit的双语架构几乎已经完成,最后的拼图终于开始落位。

今天一批新进展:CPS测试、随机转盘和颜色选择器已进入共享双语架构。细节同样重要:颜色选择器的导航现在在点击外部时自然关闭,这三个页面也已拥有与新架构其他页面一致的页脚和响应式行为。

接下来几天,我计划完成剩余的迁移工作。一旦基础工作完成,下一步将专注于UI优化,并在网站上添加一些小而用心的功能改进。

董子航 2026 年 7 月 25 日——FMHY 收录,双语迁移收尾

新架构一致性、FAQ覆盖及缓存清理

修复 改进 开发日志

已完成所有66双语工具页面的架构一致性审计,并修复了共享架构中的剩余问题。

  • 在8工具中添加了可见的双语FAQ部分,并为9工具添加了匹配的FAQPage结构化数据
  • 为 33 个已迁移页面补充安全区域视口支持,移除 5 个隐藏的旧导航区块。
  • 将歌词可视化工具更新为标准页脚网格布局,移除了重复的“相关工具”加载器,并将其完整的中文界面与已记住的语言设置连接起来
  • 修复了情感忽视测试中的损坏键盘快捷键和无效HTML标签
  • 修复节拍器结构化数据错误,以及 AI 转 PNG 和视频压缩两处双语处理器注册问题。
  • 修复了压缩PDF对已优化文件的处理结果,确保面板和下载文件名明确显示原始文件未被修改
  • 从25页面中移除了UTF-8 BOM头部,包括15页面中的重复标记,并恢复了两个损坏的默认工具图标
  • 完成了所有91功能页面的公共统计显示名称覆盖
  • 将所有211索引页面的标题和元描述标准化至项目SEO长度目标,补全了缺失的robots和Open Graph元数据,并修正了过时的工具数量和错误的隐私结构化数据
  • 确认所有专用工具、博客、节日及核心页面URL均被分割站点地图覆盖,并验证了llms.txt链接至所有90专用工具页面且无本地目标失效
  • 清理了重复和过时的Service Worker条目,验证了每个本地预缓存目标,同步了文档语言元数据,并将缓存推进至toolknit-v224
开发者手记

2026 年 7 月 23 日,晚上 11 点。电脑同时跑着两个项目,连游戏都开始卡了,大概是它在提醒我该休息了,哈哈。

我最近切换到了新的IDE,并开始使用Codex。老实说,这是我用过的最好的编码环境。唯一的抱怨是处理速度——有时会非常慢——但它的处理非常谨慎、细致,且对工作本身真正负责。在我的工作流中,它比Cursor、Windsurf、Trae或Zcode都要好。这已经说很多了。

不知不觉,两天就用掉了将近 4 亿 token。照这个速度,等 Tibo 重置我的 Codex 配额时,ToolKnit 可能得暂时放慢更新,哈哈。

不过,这些进展是值得的。网站大多数隐藏的问题已经修复,我已为大多数工具和页面重写了标题。希望SEO之神们注意到,ToolKnit能再上一个台阶。

下一次更新可能在7月26发布。在此之前,请保重,享受乐趣,希望每一天都能带给你一些值得开心的事。

董子航 2026 年 7 月 23 日——两个项目,4 亿 token,继续开发

新工具:文本转语音 —— 69 AI神经语音,服务器端架构

新增

工具

新增文本转语音 —— 一个免费的在线TTS工具,利用Microsoft Edge的神经语音服务将文本转换为自然语音。无需API密钥,无需注册。只需输入文本,选择语音,点击生成即可。

功能

  • 69 神经语音 覆盖 19 多种语言(英语、中文、日语、韩语、法语、德语、西班牙语、阿拉伯语、印地语、泰语、越南语等)
  • 可调节语速、音调和音量,支持实时滑块控制
  • 语音预览 —— 在生成完整文本前可试听任意语音
  • 语言筛选标签,方便按语言快速浏览语音
  • MP3 下载 —— 将生成的语音保存为音频文件
  • 自动语音降级 —— 如果某语音不可用,服务器会自动尝试使用同语言下已知可用的备用语音
  • 完整双语支持(英文/中文),采用标准新架构模板
  • SEO优化:包含 HowTo 结构化数据、使用场景部分、支持语言列表、增强的元标签以及 noscript 备用方案

技术说明

  • 服务器架构: 使用 Node.js TTS 服务,基于 msedge-tts 包,作为 systemd 服务运行在端口 3210 上
  • PHP 代理: /api/tts.php 通过 cURL 将请求转发至 Node.js 服务,保持 API 在同一源域
  • ttsController 状态机: 集中管理状态(idle → loading → playing → paused),通过 AbortController 取消请求,并在页面卸载时清理全部资源。
  • 语音降级系统: 27 针对特定区域语言的备用语音已测试并验证 —— 若请求的语音失败,服务器将自动尝试使用同语言下已知可用的替代语音
  • MP3 输出: 使用 AUDIO_24KHZ_48KBITRATE_MONO_MP3 格式,以获得较广的浏览器兼容性。
  • 文本长度限制:最多 5,000 字符,配备实时字数计数器和预估时长
  • 内存安全: 清理时撤销 Object URLs,页面卸载时暂停音频并清除 src,所有 fetch 请求均可被中止
开发者手记

2026 年 7 月 21 日,刚旅行回来。

已经过了午夜。一个人,一杯咖啡,依然坐在桌前。旅行很美好——山川、海风,那种安静能重置大脑。我拍了太多照片。我打算后天整理风景照片,然后在这里分享一些。

今天是个小更新,只加了一个工具——文本转语音。架构试了三次才做对:第一次浏览器 WebSocket 被微软拦截,第二次 PHP WebSocket 客户端也返回 403。最终采用 Node.js 服务,通过 msedge-tts 配合 PHP 代理运行,终于成功。69 种真实神经语音,各有不同,均由服务器生成并以 MP3 流式返回。我逐个测了一遍,69 种全通过。

独自开发意味着每一个决策都经过你一个人的过滤。没有团队会议需要协调,没有产品经理需要说服。只有你、代码,以及凌晨 1 点时服务器安静的运转声。有些日子这令人自由,有些日子则令人沉重。今晚感觉刚刚好——一杯咖啡,一个完成的功能,以及听到 69 不同声音说‘Hello world’ 回应你的满足感。

今晚再启动更大的项目已经太晚了。只发布一个小型功能,就足够了,该休息了。

更多功能即将推出。路线图很长,咖啡还热着,工具不会自己建成。

董子航 2026 年 7 月 21 日——一个人,一杯咖啡,继续开发

iOS Safari 下载修复、换行字符问题修复及中文搜索支持

修复 改进 开发日志

问题

  • iOS Safari 的既有下载限制: 对指向 blob: 或 data: URL 的 <a> 链接,浏览器可能忽略 download 属性,转而在内置查看器打开 PDF、全屏图片或原生视频播放器,用户不容易找到保存到设备的入口。
  • Android Chrome 和桌面浏览器 完全不受影响——除了 iOS Safari 外,下载功能在所有平台都正常运行,这使得该问题成为仅在 iPhone/iPad 用户中出现的隐蔽 Bug。
  • 该报告来自抖音(TikTok)社区的一位用户,他指出 iPhone 上的图片转 PDF 工具无法下载生成的 PDF 文件。这一单一报告揭示了一个影响 26 多个工具的全局性问题。

解决方案

  • 在所有受影响的工具中实施了一种统一的 双路径下载策略:在 iOS 上,通过拦截并使用 Web Share API(navigator.share())调用原生 iOS 分享面板,用户可点击「保存到文件」。在所有其他平台,保留原有的 <a download> 行为不变。
  • iOS 检测结合三项信息:User-Agent(iPad|iPhone|iPod)、navigator.platform 和 navigator.maxTouchPoints,以识别 iPadOS 13+ 中使用 Mac User-Agent 的桌面级 Safari。

已修复的工具(总数:26)

PDF 工具(7)

  • 图片转 PDF、压缩 PDF、Word 转 PDF、合并 PDF、商业账单生成器、白板(PNG + PDF 导出)、每日计划(PNG + PDF 导出)

图片工具(13)

  • 压缩图片、图片格式转换(6 个格式页:JPG↔PNG↔WebP)、移除背景、圆形裁剪、翻转图片、HEIC 转 JPG、AI 转 PNG、图片裁剪、签名制作、丝网印刷、向宇宙提问(分享卡)、图表制作(PNG + JSON + HTML)及视频截图

视频与音频工具(6)

  • 压缩视频、文本动画生成器(WebM + MP4)、视频转 GIF、视频转音频、MP3 转 WAV、WAV 转 MP3

基础设施

  • 所有 JS 文件版本号按工具进行更新以实现使旧缓存失效(例如 compress-image.js?v=2 → v=3)。Service Worker 缓存版本在会话内递增:v192 → v213
  • 工具分阶段逐步部署,以降低风险——每个修复完成验证后才推进到下一个。

换行字符问题修复

  • 对 90+ 工具页的全站审计发现 3 个文件页脚出现多余的 `n 字符:压缩图片、图片转 PDF 和今天吃什么。
  • 该文件出现在 tracker.js 和 sound-effects.js 脚本标签之间,很可能是批量编辑操作的残留。
  • 所有 3 文件均已清理并验证——整个网站中已无任何残留。

支持中文搜索

  • 全部 90 个工具均支持首页中文关键词搜索,每项新增 data-zh-keywords 属性,存放相关中文词,例如 "图片压缩, 压缩图片, jpg压缩"。
  • 搜索逻辑已更新,可同时匹配英文和中文关键词集合,使网站具备完整的双语搜索能力。
  • SEO 安全实现: 中文关键词仅存储在 HTML 的 data 属性中,不会显示在用户界面中,因此英文优先的页面结构和 SEO 完全不受影响。

噪声生成器的 SEO 与功能优化

  • SEO 重构: 页面标题扩展以覆盖长尾关键词(如睡眠、专注、放松)。元描述和关键词列表补充了耳鸣、冥想、婴儿睡眠、ADHD 专注、办公室隐私等使用场景。Schema 的发布日期更新为 2026-07-19。
  • 新增3 个内容区域:“每种噪声的使用场景”(7 张卡片)、“噪声色谱说明”(白/粉/褐噪声原理)和“哪些人使用”(5 类使用者:远程工作者、失眠者、新手父母、耳鸣者和冥想者)。
  • FAQ 扩展:从 5 个增加至 10 个问题,涉及耳鸣、褐噪声与白噪声的睡眠用途、婴儿安全、冥想和耗电。
  • 新增结构化数据: FAQ 页面扩展至 10 项,新增了针对 3 步骤指南的 HowTo 结构化数据。
  • 在 FAQ 下增加博客交叉链接:“阅读完整指南:为睡眠、专注和放松选择噪声”,指向 blog/noise-generator.html。

噪声生成器功能升级

  • 实时音频可视化: Canvas 频率条连接 AnalyserNode,随主输出变化。深色背景上的白条按强度改变透明度,播放时出现在播放按钮下方,暂停时淡出。
  • 自定义睡眠定时: 新数字输入框接受 1–480 分钟,按 Enter 或移出焦点后启用。
  • 保存自定义预设: “保存当前混音”把滑块和开关配置存入 localStorage。预设显示为可点击按钮,支持 × 删除,并在下次打开时保留。
  • 键盘快捷键: 1–7 分别切换各通道,空格仍用于播放/暂停。输入框聚焦时不触发这些快捷键。
  • 状态保存: 各通道音量、开关及主音量存入 localStorage,刷新页面后恢复。
开发者手记

2026 年 7 月 19 日,网站仍在持续运转。

今天的排查始于抖音群友的一条反馈:iPhone Safari 无法下载生成的 PDF,只会在内置预览器打开。我顺着查下去,发现 26 个工具有同样问题。社区反馈就是这样,一个小报告能揭示独自测试难以发现的大范围问题。我真心感谢这条消息。

修复已部署到整个网站。所有生成可下载内容的工具——PDF、图片、视频、音频、ZIP压缩包——现在在iPhone和iPad的Safari浏览器中都能正常工作。核心在于Web Share API:在iOS系统中,点击下载按钮会弹出原生iOS分享面板。只需点击“保存到文件”即可完成。安卓和桌面用户完全不会察觉任何变化——他们的使用体验与之前完全一致。

下午又解决了换行字符(`n)显示错误和首页中文搜索支持。一次批量操作把字面的 `n 留在 3 个工具页的脚本标签之间,在页脚显示出来,全站检查找到了全部残留。现在 90 个工具也都加上了中文关键词数据属性,中文搜索终于能正常工作。

今天最后完成了噪声生成器的大幅优化。它在 GSC 已有展示,平均排名 68.2,还需要提升。新增三个内容区,把 FAQ 从 5 条扩至 10 条,加入 HowTo 结构化数据,并完善音频可视化、自定义定时、预设、数字键快捷操作和状态保存。它从简单播放器变成指南与工具结合的页面,希望 Google 会注意到。

明天我要出门旅行了。需要暂时断开屏幕,放松身心,让思维去往新的地方。我会带回照片分享在这里。我觉得我需要这样的休息——最近几周压力很大,暂时离开屏幕或许十分必要。

最近更新慢了一点,因为我在做另一个项目:4ai1.com,一个仍在开发的多 AI 聊天与工作区平台。准备好后会接入 ToolKnit 的项目体系。我也在为 ToolKnit 桌面 EXE 工具准备完整的 GitHub 开源发布,后续再分享。

感谢每一位提供反馈、报告问题或使用工具的用户。正是因为你们,ToolKnit才变得更好。如果发现任何异常,请继续反馈。我会认真阅读每一条意见。

7 月 19 日就到这里,修了三个 bug,上线一个新功能。现在收拾行李去,很快再见!

董子航 2026 年 7 月 19 日——逐条处理用户反馈,修复问题

合并PDF重大升级——页面选择器、自定义文件名、主页浅色模式修复及新博客

新增 改进 修复 开发日志

合并PDF——自上线以来最大的功能更新

  • 多页选择器(WPS风格): 当你上传多页PDF时,系统会弹出对话框,询问是包含所有页面还是手动选择特定页面。选择"选择页面"后,会弹出全屏覆盖层,左侧为文件面板,右侧为页面缩略图网格——你可以从每个多页PDF中挑选所需的页面进行合并。支持全选/全取消选择,批量分页(20页/批次),以及每个文件卡片上的重新选择按钮,方便你之后修改选择。每个文件至少保证1页,通过实时校验确保合规。
  • 自定义输出文件名: 上传文件后会出现一个新的输入框——在合并前输入你想要的文件名(例如:"Q4-Report")。输入框会自动填充来自第一个PDF的文件名,并在缺少时自动添加`.pdf`后缀。从此无需下载后再重命名。
  • 详细结果摘要: 合并后显示具体内容,例如:“已将 report.pdf 与 summary.pdf 合并为 my-merge.pdf,2 个文件合为 1 个 PDF,共 8 页。” 中英文说明完整,文件名列表分别采用英文牛津逗号和中文顿号。
  • SEO优化: 页面标题升级为 "在线合并PDF - 免费合并PDF"。元描述、Open Graph标签、Twitter卡片以及Schema.org WebApplication均已同步。在FAQ部分下方新增博客交叉链接("阅读指南"),指向blog/merge-pdf.html。
  • PDF.js懒加载且对SEO无影响: 页面预览引擎(pdf.js ~400KB gzip)通过延迟的<script>标签加载,仅在页面完全解析后触发,不会阻塞渲染,搜索引擎也永远不会下载该内容。页面缩略图仅在用户触发页面选择器时才渲染。
  • 安全措施与细节优化: 多批次上传时的并发上传锁机制,防止上传过程中的竞态条件。取消按钮重新设计为白色胶囊状,搭配深色文字,提升对话框中的对比度。

新增博客指南 — 麦克风与摄像头测试

  • 博客文章《如何在线测试你的摄像头和麦克风 — 免费的会前检查》 发布于指南类别(数量:01 → 02)。包含FAQPage结构(7 问答对)、BreadcrumbList、分步HowTo语义标记,并与键盘测试、瞄准训练、反应时间测试等页面进行交叉链接。
  • 工具页面新增交叉链接,位于tools/mic-camera-test.html,指向新发布的博客指南。
  • 所有基础设施文件均已更新: sitemap-blog.xml(97 条目),llms.txt(博客数量更新),blog/index.html(指南分类),变更日志时间线及条目,service-worker.js(版本从v192升级至v199,全天完成)。

首页浅色模式 — 三个按钮的可见性修复

  • 下载桌面应用 按钮原为`rgba(255,255,255,.08)`背景加白色文字,在浅色模式下与首屏区域融合,几乎不可见。现已改为黑色背景加黑色文字,确保在两种模式下均清晰可见。
  • 文章弹窗卡片(博客指南/工具故事/更新日志)此前使用 `var(--surface)` = `rgba(0,0,0,.035)`,在浅色主题中与白底混在一起;现加强边框和表面对比。
  • 页脚图标按钮(联系/开发者故事/更新日志,由 footer-modals.js 注入)此前使用 `rgba(255,255,255,.03)` 背景和暗淡图标,在灰色页脚上不易看到,现改用两种主题下均可见的深中性色调。

什么是ToolKnit博客页面 — 全面重设计

  • 移除工具网格中的所有emoji图标,改用简洁的Markdown风格目录列表 — 每个分类两列,每个工具名称后附带小型分类标签(PDF/IMG/VID/AUD/TXT/TIME/FUN/AI/TEST/CALC)。
  • 在页面顶部新增锚点跳转目录,支持一键跳转至任意分类部分。
  • 技术栈部分从普通<ul>列表改为代码块样式卡片,采用等宽字体、行号样式,并使用类似语法高亮的注释颜色。
  • 简化分类描述,改为一句概括性总结,便于快速浏览。

基础设施

  • 动态文章数量统计: 变更日志页面的首屏区域现在动态统计`.changelog-entry`元素数量(当前为62)。首页徽章数量已从硬编码的141更正为实际数量(157,即87博客指南 + 9工具故事 + 61变更日志条目,更新时的数值)。新增构建脚本`_count-site.js`,用于部署前同步计数。
  • 服务工作线程注释语法修复: 缺失的`/**`块未闭合`*/`已修正(解决了IDE语法检查警告)。
开发者手记

2026 年 7 月 14 日,依然在,依然更新。

今天是个大日子。我几乎从内部彻底重构了PDF合并工具 —— 增加了页面选择器、自定义文件名、完整的结果摘要。这种重构让人停下来回望。我确实停下来了。我回望了。

2026 年 3 月 18 日,我发布了 ToolKnit 第一版。一切都从一个让人头疼的 PDF 开始:打开编辑器就开始 vibecoding,没有计划和路线图,只有一股劲。那一个小任务后来变成 ToolKnit.com。五月中旬上线使用计数器,今天已经超过 5,000 次。五千,真是个让人激动的里程碑,也说明我不是唯一需要简单、免费、不折腾的在线工具箱的人。它正在帮助和我一样的人,想到这里我就开心。

但最近生活压力很大。个人生活中发生了些事,这些变更日志没有明确写出,但它们存在于字里行间。这些开发日志不仅仅是产品更新日志,更是我的个人时间线。每一个功能发布,都是一个情绪的刻度;每一个数字的增长,都是一个微小的锚点,支撑着我前行。我不指望任何人跟上。我只是想在这个互联网的小小角落留下痕迹——一个标记,说明:我曾在这里。我建了这个。我感受过这些情绪。

如果你认识我,你就知道我始终珍藏着过去。旧的记忆、旧的人——我始终带着它们。即使他们离开了,我仍会反复回望自己过去的模样。我并不是一个容易向前看的人。建造这个网站,看着每一个数据指标稳步上升——这就是我的快乐。是我的疗愈。是我的良药。每一条提交背后,都是一位开发者完整的情绪谱系:快乐、兴奋、悲伤、心碎、坚定。所有的一切。所以如果你在阅读这些变更日志,请把它当作一本日记。一个普通人每月安静努力创造点好东西,在一个常常艰难的世界中的记录。

今天,我仍然在日职工作。最近几天睡眠不好,头痛也确实存在。这次更新后,我将休息几天以恢复身体。但我会回来。然后在7月18,我将去旅行。回来后我会分享照片和视频。这是一份公开邀请,欢迎你一路关注。

感谢阅读。感谢使用ToolKnit。如果没有你们,这不过是服务器上的代码;有了你们,它才真正有了生命。如果觉得有用,请分享给需要它的人。这对我的意义重大。

很快再见。用爱构建ToolKnit。

董子航 2026 年 7 月 14 日——一直在,继续开发

询问命运:全面重构与白板增强——多模式预言仪、形状填充、图层管理与深色画布

改进 修复 开发日志
  • 询问命运——全面重构:该工具已不再只是一个简单的占卜预言仪,而是一个多模式决策与占卜工具包,覆盖了三个不同的搜索意图群体。
  • 三种模式: 魔法 8 球(经典 20 条答案、8 球主题)、神谕(55+ 条答案、水晶球主题)和抛硬币(是/否/也许)。一个页面覆盖 magic 8 ball online、yes or no oracle 和 decision maker 三组查询。
  • 答案池扩展与修复: 答案从 55 增加至 100+,分为积极、中立、消极和智慧四类。修复重复图标,并以分层随机选择替代哈希选择,每种语气占 25%,使分布更均衡。
  • 分享卡片生成器: 画布绘制的社交分享卡片——问题+答案+图标+ToolKnit品牌标识。一键下载为PNG,或分享至X(Twitter)。
  • 加入30 天历史归档和往日摘要界面,替代原先仅保存一天的 localStorage 方案。
  • 音效集成: 在答案揭晓时加入音效。
  • 完整重写 SEO 元数据: 标题、描述、关键词、OG、Twitter Card、JSON-LD SoftwareApplication 与 FAQPage,围绕 Magic 8 Ball、Yes No Oracle 和 Decision Maker 查询组优化。
  • 用户体验文案修正: 将“每天一个问题”改为“每日新答案”——更准确,也对新手用户更友好。
  • 专业提示与页脚 对齐网站标准(与pdf-to-image.html布局保持一致)
  • 白板 —— 主要功能扩展: 为绘图板新增了三项新功能。
  • 深色/浅色画布切换: 可在白色(#ffffff)和深靛蓝(#1a1a2e)画布背景之间切换。所有 5 固定填充引用已统一至一个 canvasBg 状态变量中,且橡皮擦颜色会自动同步。像素级背景替换会保留所有笔触。
  • 形状库扩展及填充模式: 新增圆形、三角形和箭头形状工具(除原有的直线和矩形工具外)。填充切换按钮可让用户为任意形状在轮廓模式和实心模式之间切换。C 为圆形工具新增了键盘快捷键。
  • 图层管理面板: 可折叠的侧边栏,显示画布上的所有对象(背景层、文本层、图像层)。每个图层均可在面板中进行选择、锁定或删除操作。在移动端,面板会下移至画布下方,而非覆盖画布。在添加、删除或锁定/解锁图层时会自动刷新。
  • 性能优化: 为画布上下文添加了 willReadFrequently: true,以消除浏览器控制台的警告。
  • 全站版权符号修复: 20 个工具页的页脚从 ? 2026 修正为 © 2026。当时使用 PowerShell Set-Content -Encoding UTF8 的编辑流程破坏了 U+00A9 字符,改用 &copy; HTML 实体避免再次出现。
  • 服务器基础设施迁移: 服务器已迁移至新托管环境,部署文档已更新,迁移后重新建立了 SSH 密钥。
  • 加强部署流程: 更新 toolknitSkill.md,记录严格单文件 SCP 规则(不用通配符、不多文件传输)、中文与 Emoji 编码约定及 &copy; 实体要求。
  • 文档整理: 审核后 MD 文件从 16 个减至 10 个,三份迁移文档合为 architecture-migration-guide.md,清理 4 份过时规划,以及已发布到掘金/dev.to 的博客草稿。
  • 白板视口可访问性修复: 已从 meta viewport 中移除 user-scalable=no(遵循 Google 页面体验最佳实践)。
开发者手记

距离上次日志五天了,我没消失,只是在做其他事情。正在开发一个在线聊天网站,让 4 个 AI 轮流参与对话。还在开发中,可以看看 4ai1.com。

最近几天表面平静。我的日常节奏没有改变:起床、上班、写代码、思考如何提升网站流量、吃饭、睡觉。循环往复。

我的咳嗽现在好多了 —— 几乎不会再复发。这是件好事。

但我的心……从上次更新以来,似乎一直压着些什么。深夜常常陷入情绪低谷,已经半个月没有在凌晨 2 点前睡着了。我不知道怎么办,也找了很多人帮忙,还是没找到出口。

人们可能不理解我如何处理情绪,或者我如何深深铭记过去的人。在我的人生中,我认识的人并不多 —— 但每一个人都深深印在我的记忆里。而且我是个巨蟹座。所以……是的。

有时我会觉得,这或许就是我生活的全部。很多时候,一切感觉都毫无意义,胸口总有一种沉重的压力。我反复回想快乐的回忆,只为感受到一丝温暖 —— 然后我又会打开那些悲伤的回忆,再次痛哭。他们说时间会治愈一切。但时间只处理外在发生的事,对内心深处的情感毫无作用。

我才 22 岁。我该做什么呢……

仍在用心打造 ToolKnit。 (7月12,服务器IP地址变更导致短暂中断数小时——现已修复。)

今天就到这里。天气异常炎热——请务必注意防晒。几天后天气稍凉些,我打算和朋友一起出门去几百公里外的地方旅行。这是我目前唯一能缓解压力的方法……

董子航 2026 年 7 月 13 日——一直在,继续开发

掷骰子工具重大升级——批量自动投掷、游戏预设、CSV导出及全站SEO数据刷新

改进 SEO优化 开发日志
  • 掷骰子工具重大升级——6 新功能: 掷骰子工具已不再只是一个简单的随机数生成器,现在它是一个完整的骰子工具包。
  • 批量自动投掷: 可批量投掷 10×、50× 或 100×,并实时显示进度条。骰子更新通过 requestAnimationFrame 平滑完成。
  • 游戏预设: 一键选择 Monopoly(2d6)、Yahtzee(5d6)、Catan(2d6)、Craps(2d6)和 D&D 技能检定(3d6)。
  • CSV导出: 可将完整的投掷历史导出为CSV文件,便于进一步分析。
  • 理论概率叠加: 每个点数显示一条 16.67% 的半透明蓝色参考柱,方便对比实际投掷与公平骰子的预期分布。
  • 3 种骰子皮肤: 经典白、深金与霓虹蓝,一键切换。
  • 自定义滚动条: 为投掷历史记录添加了自定义滚动条,替代了原本丑陋的原生滚动条,采用一个细微的4像素深色滚动条。
  • 快捷键提示卡片: 新访客会看到一个浮动提示,显示按空格键投掷、按1-6选择骰子、按R键重置。提示将在4秒后自动消失。
  • 集成音效: 支持单次投掷和批量操作的音效。
  • 视口可访问性修复: 已从meta viewport标签中移除user-scalable=no和maximum-scale=1.0(符合Google页面体验最佳实践)。
  • SEO元数据全面重写: 标题、描述、OG标签、Twitter卡片、JSON-LD SoftwareApplication、FAQPage——均已优化,以提升搜索结果展示效果和点击率。
  • 全站SEO数据文件已审核并更新: sitemap索引的lastmod日期更新至7月8,sitemap-pages的lastmod已刷新,llms.txt中掷骰子工具条目已根据所有新功能重新编写。
开发者手记

又是一个安静的下午。坐在桌前,看着网站的搜索展示量一天天增加,有一种踏实的成就感。

过去7天里,Google的曝光量达到2,230+,Bing达到1,300+——两者合计超过3,500每周曝光量。我对这个数据感到非常满意。

三个月前,这个数字还低于200。

从低于200到每周3,500+——这并非一夜之间发生的奇迹,而是证明了一个简单真理:持续的努力终会被看见。Google和Bing不会忽视那些真正投入工作的人。只要你坚持做正确的事,它们就会为你创造机会。

今天我对掷骰子工具进行了重大重构——支持批量自动投掷、游戏预设、CSV导出、理论概率叠加显示、三种骰子皮肤。它不再只是一个随机数生成器,而是一个真正的骰子工具包。同时,我也对网站的SEO数据文件进行了全面审核和更新——包括站点地图和llms.txt,以确保搜索引擎知道这个网站依然活跃且持续改进。

ToolKnit的更新持续不断。如果遇到任何问题,或有任何想法和建议,可以直接联系我——如果我能解决,我绝不会犹豫。

仍在用心打造ToolKnit。

董子航 2026 年 7 月 8 日——用爱发电,一次次掷出新可能

呼吸放松 + 站点结构优化 + 全站编码与SEO修复 —— 90 工具,迄今最佳SEO

新工具 改进 漏洞修复 开发日志
  • 新工具:呼吸放松——第 90 个工具。提供 6 种引导节律:4-7-8、方形呼吸、5-5 协调呼吸、4-2-4 放松、提神呼吸和交替鼻孔呼吸。包含视觉动画、实时节律指示、可选声音及 iOS 触觉反馈,可选 4 到 12 轮。进行中锁定设置以避免误操作,使用 Phosphor 图标和简洁界面,100% 在浏览器中运行。
  • 修复分类计数: 首页分类徽标从 DOM 动态统计工具卡片,不再依赖硬编码;添加工具后无需手动更新数量。
  • 修复面包屑: 戒烟追踪器从错误的“Health & Wellness”分类改为正确的“Self-Test”,同时修改 HTML schema 和 JS 多语言键。
  • 重构站点地图: 单个 sitemap.xml 改为地图索引,指向 4 个子地图:
    — sitemap-tools.xml(89 个工具页)
    — sitemap-blog.xml(博客目录与 97 篇文章)
    — sitemap-holidays.xml(节假日中心与 15 个国家页)
    — sitemap-pages.xml(首页、桌面下载、日志、状态及法律页面)
  • 区分 priority: 高流量工具(压缩 PDF、移除背景、合并 PDF、压缩图片、密码、二维码、图片缩放、PDF 转图像、年龄与单位转换)设置为 1.0;AI 文字冒险、AI 轨迹、歌词可视化、丝网印刷和挑战转盘保持 0.8,其余为 0.9。
  • 设置 changefreq: 日志 daily、首页与博客 weekly、工具 monthly、法律页面 yearly。
  • 完善 llms.txt: 新增热门工具区,列出 10 个工具及便于语言模型理解的说明,修正为 90 个工具、96 篇博客,并把戒烟追踪器归入自测分类。
  • 工具数:89 → 90。
  • Phosphor 图标改为本地托管: Fill、Regular、Bold 字体从 /assets/fonts/ 与 /assets/css/ 提供,解决 unpkg CDN 的 CORS 错误阻止 88 个工具页字体加载的问题。
  • 编码事故与全站乱码清理: 一次 PowerShell Set-Content 批量编辑按默认 ANSI 编码写入,破坏了 /tools/ 目录的 UTF-8。修复 116+ 处 Unicode 错误,恢复短横线(–)和度符号(°),修复 65 页的“中文”按钮,并在 7 个严重受损文件中重建约 250 个内联中文翻译键,涉及 webp-to-png、image-crop、image-resizer、jpg-to-png、image-grid-split、emoji-finder 及另外 4 个文件。当时记录的 PowerShell 教训是明确指定 -Encoding utf8。
  • SEO 标签审查与修复: 补齐 11 个工具页 <title> 中缺失的 ToolKnit 品牌名。文字动画测试页新增 <h1>、JSON-LD BreadcrumbList、og:image 和 twitter:image。移除仅用于 CSS 演示的 text-animation.html,并调整地图数量。
  • 修复 Ahrefs 抓取错误: 新增 nginx 301:/tools/stories.html → /blog/stories.html,纠正外链路径;/tools/ → /,解决目录索引 403。均通过 curl 验证。
开发者手记

今天又是平静、平凡的一天。完成了日常工作,中午前后发了这些更新,现在正在收尾。感觉每一天都这样平静,甚至有些令人不安。

但天啊,今天的编码bug几乎让我发疯。一个不小心的PowerShell命令,瞬间导致65+页面上的中文文本变成了问号。中文被四个Unicode替换符号取代——感觉就像看着自己的房子在慢动作中被烧毁。花了好几个小时,逐行手动重建被损坏的国际化字典。这种bug提醒我们:在软件中,最破坏性的错误往往是最简单的。

不过好消息是,站点地图的重构顺利进行,Ahrefs的爬虫错误也终于被清理干净了。Phosphor图标CORS的噩梦也彻底结束了——现在所有内容都本地化服务,不再依赖unpkg。SEO健康状况达到了前所未有的水平。

我正打算近期去旅行。开车几百公里,看看新的风景,寻找一点冒险。接下来几天我会去拜访一位朋友,走出这四堵墙,去看看外面的世界。长期在工作和家庭之间反复折腾的9到6的重复劳动,会慢慢消耗一个人的精力。我需要重新呼吸一下新鲜空气。

ToolKnit依然在运行,我依然在坚持。如果某个功能无法正常使用,或者你认为我能帮忙解决某个问题——随时给我发邮件。我是在用全部的爱,一点一点地构建ToolKnit.com。

今天就到这里。祝大家——包括我自己和这个小小的网站——平安。

董子航 2026 年 7 月 6 日——安静开发,一天一天前进

戒烟追踪器 & 双语迁移里程碑 —— 55工具现已支持英文 + 中文

新工具 里程碑 开发日志
  • 新工具:戒烟追踪器——一键记录每次忍住的烟瘾。展示少抽烟数、节省金额、按每支 11 分钟估算的时间和少摄入的焦油,包含 10 个成就徽章及依据 CDC/WHO 资料编排的 10 阶段恢复时间线。数据保存在 localStorage。
  • 双语迁移进展: PDF 5 个、图片 17 个、视频 4 个、音频 6 个、文本 10 个、计算器 7 个、时间 6 个,合计 55 个工具完成中英文界面,进度快于预期。
  • 剩余部分: 28 个创意工具将在七月陆续迁移。
  • 工具数量:86 → 89(番茄钟计时器、时间转换器、戒烟追踪器)
开发者手记

2026 年 7 月 5 日,简单汇报。网页端的 PDF(5 个)、图片(17 个)、视频(4 个)、音频(6 个)、文本(10 个)、计算器(7 个)和时间(6 个)工具已完成双语迁移,可以中英文显示。进展比预期快,剩余创意工具会在七月继续迁移。

至于我自己——咳嗽还没好。药能暂时缓解,但一抽烟就又回来了。所以我开发了一个戒烟追踪器。我想给自己定个目标。我知道戒烟很难,但让我们一起坚持下去——我们能做到。

最近心情平平,生活里没遇到新的人,还是惦记过去的某个人。也许就是巨蟹座的多愁善感吧。

今天就到这里。ToolKnit仍在更新,我依然在坚持。只要我还在,网站就会一直存在。祝大家——包括我自己和我的小网站——一切顺利。这次更新从中国结束。

董子航 2026 年 7 月 5 日——在地球一角继续开发

新工具:表情符号查找器 —— 搜索并复制560+表情符号

新工具 开发日志
  • 560+ 个表情,覆盖 Unicode 15 的笑脸、人物、动物、食物、旅行、活动、物品与符号分类。
  • 双语搜索——输入中文或英文查找表情,每个表情都有双语标签。
  • 一键复制——点击表情即可复制到剪贴板。
  • 肤色选择器——点击人物表情可显示 6 种肤色变体。
  • 最近使用——顶部显示最近复制的 20 个表情,保存在 localStorage,无需账号。
  • 8 分类标签 —— 按表情符号、人物、动物、食物、旅行、活动、物品或符号浏览
  • 100% 基于浏览器,无需注册,首次加载后可离线使用
开发者手记

大家好。今天又是ToolKnit.com的一个平静更新。最近发生了很多事,让我来分享一下其中的积极面和挑战。

好消息首先: ToolKnit桌面版正式上线。经过两个月的深夜调试,甚至超过3点的凌晨,它终于上线了。真实用户正在下载它,真实文件在本地处理,从未上传,这正是它应有的样子。五月份那个梦想,如今已成现实。

第二件好事:我们的Ahrefs域名评级已从29提升至42。Google搜索控制台和Bing的流量稳步上升,沙盒期即将结束。这仿佛证明:只要你持续建设、持续改进,总会有某个人注意到。努力终会被看见——最终会。

困难也有。API token 的账单涨得很快,为了开发又花了约 $1,000 买电脑,服务器负载也在增长。但我承诺,ToolKnit 至少保持在线到 2028 年底,预算已准备好,这一点可以放心。

我增加了一个捐赠按钮——目前支持微信和支付宝,后续会增加更多选项。但请务必听清楚:只有在财务上还有余地时才捐赠。如果经济紧张,如果只是勉强维持生活,请保留你的钱。免费使用这些工具。这才是它们存在的意义。捐赠能帮助我维持运营,但绝非必需。支持一个独立开发者是慷慨的,但照顾好自己才是最重要的。

个人方面:我仍然被某个人困住,本该早就放下。我不断告诉自己:"生活中到处都是青山",可我却始终无法离开那座我早已熟悉的山。我悄悄查看她的动态,比自己应该的频率更多。这并不健康。我知道。这就像一根戒不掉的烟。

说到香烟:我已经连续咳嗽两周,每天吃药,但情况没有好转。我应该做的第一件事就是戒烟。我也知道。我的身体正以无法忽视的方式提醒我。

尽管如此——无论成本、咳嗽,还是无法摆脱的痛苦——我依然在这里。依然在开发。依然在能静悄悄发布小更新时就发布。ToolKnit依然以爱构建,来自地球的一角。 ❤️

感谢你们的参与。感谢你们使用这些工具、报告问题、坚持陪伴。你们是让我继续前行的原因。

董子航 2026 年 7 月 3 日——在地球一角继续开发

ToolKnit桌面版v1.0 —— 一款使用Rust与Tauri构建的原生Windows客户端

新产品 开发日志
开发者手记

我依然记得第一次在终端输入cargo new toolknit-desktop的那个夜晚。是五月末,外面的天气温暖,公寓里只有风扇的嗡鸣。当时我完全不知道这会不会成功。Tauri 2.x仍处于前沿阶段,文档存在空白,我甚至要押上两个月的夜晚,去赌一个从未发布过的框架。

但我一直记得那些邮件。用户告诉我他们喜欢网站,但希望能在不上传的情况下处理一个500MB的视频。有人在飞机上、在信号不佳的咖啡馆里、在不允许将文件发送到第三方服务器的办公室里工作。浏览器是一个美丽的沙盒——但有时,沙盒反而成了牢笼。

所以我为牢笼打造了钥匙。不是Electron,也不是浏览器封装。而是一个真正的桌面应用:后端使用Rust,支持本地文件系统访问,通过FFmpeg实现GPU加速编码,前端则复用了我之前为网页写过的每一行HTML和CSS代码。安装包大小为11.6 MB,完整应用为46 MB,可轻松存放在U盘中。支持离线运行,绝不会上传你的文件。

页面间加载的蜘蛛吉祥物,是我凌晨 1 点画的。此前花了三个小时排查一个始终不肯把进度从 Rust 传给 JavaScript 的 IPC 通道。我用系统画图画出它,笑它画得太糟,却又舍不得换掉。后来它成了 ToolKnit 的精神象征:小小的、执着、有点古怪,却恰到好处。

我写了六套不同的 WebGL 着色器背景,因为希望桌面应用像个愿意停留的地方。流动的噪声、光束、等离子波浪,都对应着某个深夜、某次突破,以及终于编译成功时松下的一口气。

今天,ToolKnit 桌面端上线了。它还不完美,目前仅支持 Windows,macOS 和 Linux 会继续做。但它确实已经存在、可以使用。这一切,是因为互联网上一群陌生人告诉我他们需要它,而我觉得,这已经值得熬夜去做。

网页与桌面是双子星。 网页适合快速解决、分享链接和“我现在就需要”的任务。桌面则是处理重活、本地文件和“五十个 PDF 等着我”的伙伴。按场景选择,它们都是为你们做的,出自一个至今仍惊讶于有人愿意使用这些工具的人。

谢谢你在这里,谢谢问题反馈、功能建议、默默收藏和偶尔的分享。每一份支持,都是这只蜘蛛继续织网的理由。

董子航 2026 年 7 月 2 日——笼门已打开
产品亮点
  • 原生 Windows 客户端: 采用 Tauri 2.x 与 Rust 后端,不使用 Electron,具备本地文件系统访问和桌面处理能力。
  • 9 个工具分类,覆盖 PDF、图片、音频、视频、文本、计算器、创意和 AI;上线时有 50+ 个工具,均在本地运行。
  • PDF 引擎: 合并、拆分、压缩、旋转、加密/解密、提取页面、加水印及转图像,由 Rust 侧的 pdf-lib-plus-encrypt 支持,不上传文件。
  • 图片引擎: 支持 JPG/PNG/WEBP/BMP/GIF/TIFF 转换、批量压缩、去水印、裁剪与拼图,基于 Rust image crate。
  • 集成 FFmpeg: 支持音视频格式转换、压缩、剪辑、BPM 检测、截图和声道处理。首次使用时单独下载约 40 MB 的 FFmpeg,使基础安装器保持 11.6 MB。
  • AI 工具: 通过 DeepSeek、OpenAI、Qwen 和 Moonshot API 提供翻译、润色、文档生成与角色扮演,是需要联网的模块。
  • 自定义安装器: Tauri 向导支持选择中英文、安装路径并创建桌面快捷方式。46 MB 主程序通过双源下载:国际用户使用 Cloudflare R2,中国用户使用 RainS3。
  • 自动更新: 启动时检查 manifest.json,支持强制更新,以及 R2、RainS3 之间的备用切换。
  • 完整双语: 嵌套 JSON 键覆盖界面文字、工具名称、按钮和错误提示。根据安装器的 NSIS 语言 ID 确定语言,并可在运行时切换。
  • WebGL 动态背景: 首页提供六套自定义着色器:DarkVeil、LightRays、Plasma、Ferrofluid、Dither 和 PlasmaWave,启动时随机调整色相。
  • 蜘蛛吉祥物: ToolKnit 的加载与转场动画,画于凌晨 1 点。它被留下,是因为不完美的东西有时反而最让人记住。
  • 拖放与批量处理: 可将数百个文件拖入窗口并一键处理,输出目录会在下次使用时保留。
  • 系统托盘集成: 最小化到托盘、从托盘恢复、干净退出——托盘菜单文字会随当前语言切换。
架构
  • 前端: 采用网页版本的纯 HTML/CSS/JS,使用 Vite 打包,通过 Tailwind 进行样式设计,并加入自定义着色器。
  • IPC 桥接: 前端通过 Tauri invoke() 命令调用 Rust,事件监听器把后端进度实时传到界面。
  • Rust 后端: 支持 PDF 处理、图像处理、文件系统操作、自动更新检查以及 AI API 代理。
  • 原生窗口: 提供无边框标题栏,包含最小化、最大化、关闭和始终置顶控制按钮。屏幕分辨率已固定为 1100×800。
  • 双源部署: 支持 R2(全球)和 RainS3(中国 cn-nb1)两个区域,具备语言感知路由和用于更新缓存的时间戳。
网页端 + 桌面端 = 双子星
  • 网站(toolknit.com)继续如常运行——没有任何功能被移除,没有重定向,也没有付费墙。
  • 桌面应用是 一个补充功能,而非替代品。日常快速、可分享、跨平台的任务请使用网页版;需要大量批量处理、离线工作或不想离开电脑的文件,请使用桌面版。
  • 桌面产品页面位于 toolknit.com/exe.html;该页面链接到当前版本发布版以及移动端分发指南。

双语迁移进行中,一半已完成——PDF、图像、视频、音频与文本套件已全部完成。

开发日志 改进
开发者手记

双语迁移达到一个里程碑:一半工具页已使用新双语系统。PDF、图片、视频、音频和文本套件全部迁移,包含语言切换、双语面包屑、FAQ 折叠区和共享页脚。

自从上次开发日志发布以来已经几天了。我一直在逐个迁移工具页面——每个页面都需要独立的国际化字典、双语 CSS、首页顶部栏、路径导航和与标准模板对齐的页脚。虽然繁琐,但必不可少。

网页迁移之外,我正全力开发 ToolKnit 桌面 EXE 客户端。写 Rust、连接 Tauri、打磨 UI,进展很顺利。首个测试版预计七月初推出,想提前体验可发邮件到 info@toolknit.com,我会提供测试包。

感谢每一位持续关注、提交反馈并日常使用 ToolKnit 的朋友。ToolKnit 的存在,源于你们的支持!

董子航 2026 年 6 月 28 日——走到一半
  • 双语迁移:哈希生成器、文本比对、Markdown 编辑器、JSON 格式化、商业账单生成器、花样文字生成器,以及 PDF、图片、视频、音频和文本分类中的所有工具,现已使用新的双语架构,包含语言切换、面包屑导航、FAQ 和共享页脚。
  • bilingual.js v8:新增 bc.hashGenerator 面包屑键;所有已迁移页面现引用 bilingual.js?v=8。
  • 服务工作线程: toolknit-v151 → toolknit-v152,更新了预缓存 URL。

ToolKnit 的第 100 天——首页烟花庆祝

开发日志
开发者手记

昨天 6 月 25 日,是 ToolKnit 自 3 月 18 日上线以来的第 100 天。我提前悄悄准备了一个小惊喜:当天访问首页的朋友会自动看到全屏烟花庆祝。

我不知道有多少人真正看到了它——哈哈!但说实话,这正是乐趣所在。创造一个东西,却不知道谁会偶然发现它……这种安静的喜悦,一直支撑着我前行。

致每一位用过 ToolKnit、分享给朋友、提交问题或默默收藏它的人:谢谢你们。100 天,87 个工具,零上传。每项操作都在浏览器中运行。这不是营销话术,而是整个项目的初衷。你的文件不会离开设备,以后也不会。

我感激每一次访问、每一次点击,以及每一个‘这个工具帮我节省了 20 分钟’的瞬间。这些时刻就是我持续开发的原因。

最近几天我全身心投入到了 ToolKnit 桌面 EXE 客户端 的开发中——编写 Rust 代码,搭建 Tauri 框架,优化界面。代码正在逐步成型。接下来几天,我将在网页和桌面版本中推出一些 新功能。敬请期待——你绝对不能错过即将上线的内容。

致敬接下来的 100 天。 用心打造,一次烟花,一次绽放。

董子航 2026 年 6 月 26 日——100 天,继续开发

文字动画制作、真正的 MP4 导出与抽屉面板优化

新工具 改进 修复
  • 新工具:文字动画制作器——最多输入 50 个字符,选择 6 种动画:闪光、3D 翻转、模糊聚焦、打字机、淡入上滑和跑马灯。重新设计的滑出抽屉提供实时预览,配有磨砂玻璃遮罩、居中标题和清晰的白色关闭按钮。
  • 内置配色预设:每种效果提供 4 套现成配色。点击色块即可更新背景和文字颜色,移除了自定义颜色选择器。
  • 真正的 MP4 导出:通过 mp4-muxer 使用原生 WebCodecs H.264 编码,替换浏览器 MediaRecorder 的 WebM 输出。结果是真正的 .mp4 文件,可在 iPhone、Instagram、TikTok 等不接受 WebM 的平台播放。旧浏览器自动回退到 WebM。
  • 导出进度修复:进度条不再超过 100%;无论计时如何波动,进度均限定于 0–100%。
  • 移除 GIF 导出:从工具页、Service Worker 和搜索元数据中清除了全部 GIF 导出代码、引用及 gif-encoder.js 依赖。
  • 服务工作线程缓存: toolknit-v143 → toolknit-v144;text-animation-maker.js v15 → v16。
开发者日志

好久不见,大家。抱歉让大家久等了。

最近生活很忙碌,几天前提到的文本动画工具终于上线了。你可以去试试:输入文字,选择一个效果,导出一个真正的 MP4 文件。我自己觉得效果还不错。

我们从 6 月 22 日晚上开始写代码,一直打磨到 6 月 23 日凌晨。第一版终于完成,我很满意。这几天也在重新设计 ToolKnit 桌面应用(.exe 版本),否则这个工具早该上线了。哈哈。

敬请期待桌面客户端。网页版本也会持续更新——可能更新速度稍慢一些,但绝不会停止。

依然怀着热爱在构建 ToolKnit,从地球的这里出发。

董子航 2026 年 6 月 23 日——用爱发电,深夜版

宣布开发桌面 EXE 客户端——PDF 套件 Demo 0.1 与网页迁移里程碑

桌面应用 里程碑 开发日志
  • 原生 Windows 桌面应用正式开发:正在为 Windows 构建真正离线优先的 .exe 客户端。后端采用 Tauri 2 + Rust,界面采用 Vanilla JS;PDF 用 lopdf 拆分和合并,用 pdfium 渲染图片;自定义 WebGL2 动态背景、Dropzone.js 拖放,以及完整多语言支持。将以 NSIS 安装器交付。
  • PDF 套件 Demo 0.1 完成:桌面 PDF 引擎已支持 PDF 转图片、PDF 拆分、PDF 合并和PDF 压缩,约一半 PDF 功能已能本地运行。目前是 DEMO 0.1 版本,将先推进封闭测试 Beta 1.0,再扩大开放范围。敬请期待。
  • 网页迁移里程碑:PDF、图片、视频和音频四类工具的新双语架构迁移已完成。每个工具均具备 EN / 中文切换、FAQ 折叠区、响应式 footer-grid 和完整动态界面翻译。其余工具会逐步迁移,并保持现有功能正常。
  • 漏洞报告征集: 如果在使用新迁移工具时发现任何异常或问题,请尽快联系我们,以便我们快速修复。质量是我们的首要目标。
  • 增长记录:ToolKnit 总使用次数超过 3,000+,两个平台的搜索展示超过 10,000+。从 3 月 18 日上线至今,这一路很充实,谢谢大家参与。
SEO 与内容
  • 打字测试 SEO 更新:打字速度测试围绕“three minute test”和“is 64 WPM good”关键词组优化。在原有 15 秒、30 秒、60 秒模式之外增加 3 分钟和 5 分钟;FAQ JSON-LD 增加关于 64 WPM 与 3 分钟节奏的问题,并同步标题、描述、OG/Twitter 标签及页面文案。
  • 打字测试横向滚动:长时测试改为单行横向滚动。输入时当前字符锚定在距左边缘 20% 的位置,Backspace 可反向滚动;增加 40% 尾部留白,避免最后的词卡在视口右边缘。
  • WebP 转 PNG SEO 更新:WebP 转 PNG 转换器更新了标题、描述、关键词、OG/Twitter 标签、SoftwareApplication JSON-LD 及 H1/多语言文案,以改善“webp to png”及相关转换词的搜索表现。
  • 新增两篇博客指南: 发布了正常反应时间——人类最快能反应多快?(针对"正常反应时间"和"平均人类反应时间")以及多少段落是2000字符?——快速指南(针对"2000字符等于多少段落"及相关长尾查询)。两篇文章均包含结构化数据、FAQ部分及引导用户回到相关工具的行动号召。
  • 地图与索引更新:把两篇新博客加入 sitemap.xml 并标注当日 lastmod,更新 typing-test.html 和 webp-to-png.html 的 lastmod;在 blog/index.html 更新分类、列表和计数,首页同步为 141 项资源、86 篇指南。
明天上线
  • 支持MP4导出的动态文本生成器: 一款全新工具,可将任意文本转化为动态字幕动画,并直接在浏览器中导出为MP4视频文件。非常适合用于社交媒体帖子、开场动画、缩略图及短视频内容。明天即可体验。
开发者手记

虽然距离上一次更新已过去几天,但我们并未消失。我们正全力投入一个重大项目:ToolKnit桌面客户端。

构建原生Windows应用与浏览器完全不同。我们选择了Tauri 2 + Rust,因为它保留了我们熟悉的网页前端,同时让Rust在本地处理重型PDF操作。lopdf支持快速分割和合并,pdfium可将页面渲染为图片,整个系统都封装在一个自定义UI中,内置WebGL2背景,并从一开始就实现了完整的多语言支持。

在网页端,PDF、图像、视频和音频工具套件现已完全迁移到双语架构。其余功能将陆续跟进,但所有现有功能均保持正常运行,同时逐步迁移。

从使用量来看,ToolKnit已突破3,000+总使用次数,SEO工作也带来了10,000+次跨平台曝光。从3月18发布至今,这是一段漫长而坚定的旅程。感谢大家一直以来的支持,我们将继续前行。

如果在新迁移的页面中发现任何问题,请立即联系我们。我们更希望快速修复,而不是让问题长期存在。

今天也花时间优化了网页端:刷新了打字测试和WebP转PNG页面以提升SEO,新增了3分钟/5分钟的打字模式,修复了横向滚动行为,确保长测试内容依然可读,并发布了两篇新博客文章——一篇关于反应时间,一篇关于2000字符的段落计数。所有常规的站点地图、索引和首页访问计数均已更新以保持一致。

明天准备做点更有画面感的东西:在浏览器中直接导出 MP4 的文字动画生成器。我想给 ToolKnit 加动态文字工具已经很久了,期待把它做出来。

更多内容即将推出。用心打造。

桌面应用演示 0.1 截图 — 点击加载
查看截图
查看截图

丝网印刷、图像工具与音频工具迁移 —— 节拍器 + WAV转MP3 双语支持

重大升级
  • 丝网印刷双语迁移完成:丝网印刷滤镜使用新双语架构,首屏顶栏有 EN / 中文切换与菜单,配有面包屑、3 列使用步骤、使用优势、技巧、含 FAQPage JSON-LD 的折叠 FAQ、响应式 footer-grid,以及全部静态和动态界面翻译,包括拖放区、LPI 滑块、网点大小、通道颜色与角度、纸色、通道开关、导出和重置。
  • 图像工具类别已完全迁移: 所有图像工具现已运行在新双语架构上。最后两个遗留工具——圆形裁剪 和 丝网印刷——现已全部完成。三大核心工具类别(PDF、AI、图像)均已实现双语支持。
  • 丝网印刷结构化数据: 增加了完整的SoftwareApplication JSON-LD,包含url、image、browserRequirements、inLanguage、datePublished、dateModified、publisher、featureList,以及BreadcrumbList和FAQPage JSON-LD(6问题,与可见FAQ内容完全匹配)。
  • 日志修正:更正 6 月 16 日条目中指向不存在页面 tools/ai-personality.html 的链接。第 4 个 AI 工具是 AI 文字冒险,而非 AI 人格。
  • 视频工具类别已完全迁移: 所有视频工具现已运行在新双语架构上。视频截图 和 视频转音频 已完全迁移,支持EN/中文语言切换、FAQ折叠面板、footer-grid,以及所有动态文本的完整多语言翻译。整个视频工具套件现已实现双语支持。
  • 节拍器双语迁移完成:在线节拍器迁移至新双语架构,用内联 SVG 替换 Phosphor 图标,加入 EN / 中文切换、含 FAQPage JSON-LD 的折叠 FAQ、响应式 footer-grid,以及 BPM、点击测速、播放/停止、重拍标签等全部动态界面翻译。
  • WAV 转 MP3 双语迁移已完成: WAV 转 MP3 转换器 已完全迁移到新的双语架构。已用内联 SVG 替代 Phosphor 图标,新增 EN / 中文语言切换,添加带有 FAQPage JSON-LD 的折叠式 FAQ,实现响应式 footer-grid,并为所有 UI 元素(拖放区、码率选择器、转换/下载按钮、进度标签、错误信息、信息卡片)提供完整的动态字符串翻译。
  • 音频工具迁移持续进行: 两个主要音频工具——节拍器和 WAV 转 MP3——现已实现双语支持。其余音频工具将在后续阶段迁移。

4 个 AI 工具全部迁移——接下来处理图片工具,附开发者手记

重大升级
  • 4 个 AI 工具双语迁移完成:AI 塔罗、AI 文字冒险、AI 前任聊天和 AI 轨迹均使用新架构,具备 EN / 中文切换、菜单、折叠 FAQ、footer-grid,并通过 t() 翻译全部动态文案。
  • AI 轨迹双语迁移:AI 轨迹预测器完成首屏顶栏、面包屑、静态章节及动态文案翻译,包括轮次、轨迹卡片、可能性标签、结语、密钥状态与错误提示。修复时间轴中 node.round 为 undefined 的问题:传入已推入列表的对象,而不是原始 AI 数据。新增 tLike() 和 tRound() 辅助函数,正确格式化中文可能性及轮次。
  • AI 轨迹中文输出: 在中文模式下,DeepSeek 系统提示、首轮消息以及后续每一轮的消息均以中文发送——无论用户输入何种语言,AI 的所有回复均为中文。
  • AI 塔罗双语迁移完成:AI 塔罗解读的牌阵、位置、弹窗与错误状态均已双语化。
  • 新的结构化数据: 已在所有 AI 工具中增强 SoftwareApplication JSON-LD,包含 url、image、browserRequirements、inLanguage、datePublished、dateModified、publisher 和 featureList。
  • 图像工具迁移(下午): PDF 工具包和 AI 工具已完成——图像工具接下来进行。全部三大类工具将在完成后全面迁移到双语架构。
  • 图像工具迁移收尾: 除 圆形裁剪 和 丝网印刷 外,所有图像工具均已完全迁移到双语架构。这两个工具是图像类别中最后的遗留项,明天将立即处理,随后紧接着是整个视频工具套件的迁移。
  • 宣布桌面应用计划:今天正式启动原生 Windows EXE 客户端开发,目标是完整离线桌面体验、更快渲染和本地文件处理。计划在未来一年内发布,值得期待。
  • 迁移持续进行: 剩余工具类别将逐步迁移。功能发布仍按计划推进;本冲刺周期的重点是架构质量。
开发者手记

几天前和朋友开车去了新乡,往返约 700 公里。我们凌晨 4 点出发,晚上 10 点前到家,近二十个小时在路上没睡觉。昨天终于好好睡了一阵,醒来安稳地待在家里。

这正是我需要的。风景真的非常美丽——照片如下。我的心情已经平静了不少。对心灵非常有益。

我一直在思考这个更新日志应该记录什么内容。我做出一个低调的决定:我不再继续写关于那段关系的事了。反复记录它对我没有帮助,对她的帮助也毫无意义。最深的痛苦最好默默承受——这是我目前的状态。

技术方面:我一直在将所有内容迁移到新的双语架构中。由于这一迁移,新功能的开发速度稍慢,但基础已经越来越稳固。今天很高效,明天我将继续推进。现在已经很晚了,该休息了。

另外告诉大家:今天开始开发原生桌面应用。还在起步阶段,目标是做一个真正的 Windows EXE,让 ToolKnit 离线使用、运行更快。计划未来一年内推出,值得期待。

一如既往,感谢大家使用 ToolKnit。正是因为有用户在使用它,才让我持续坚持下去。 用心打造。

旅途中的照片 — 点击加载
查看照片
查看照片
查看照片
查看照片
查看照片
查看照片
查看照片
查看照片
查看 GIF
董子航 2026 年 6 月 16 日 00:15——新乡往返 700 公里,用爱发电

AI 前任聊天与去背景工具双语迁移,依赖库管理器上线

新页面 重大升级 漏洞修复
  • 库管理器已上线: 新增独立页面 库管理器 ,用户可一键将所有大型 AI 库(如 Tesseract.js OCR、背景移除模型、face-api 等)预下载至 IndexedDB 中——后续访问时,依赖这些库的工具可立即加载,甚至在离线状态下也能正常运行。支持双语(EN / 中文),可追踪每个库的安装状态,并提供与受影响工具的跳转链接。
  • 去背景工具双语迁移完成:去背景工具使用新双语模板重建,首屏顶栏提供 EN / 中文切换、菜单,配有含 FAQPage JSON-LD 的折叠 FAQ、响应式 footer-grid 及全部静态和动态界面双语文案。
  • AI 前任聊天双语迁移完成:AI 前任聊天完成首屏顶栏、折叠 FAQ、footer-grid 及所有静态章节和动态工具界面的中英文翻译。
  • AI 前任聊天完整界面翻译:创建角色、对方姓名、你的头像、截图类型、上传聊天记录、提炼角色、检查发送者标签、全部交换、确认正确、这是记忆而非本人,以及聊天输入提示、导出和发送按钮均支持双语。
  • 提炼进度完整翻译:15 条轮播状态文案、6 个步骤指示(Step 0/7–5/7)、完成状态及提炼后的系统消息均可正确切换中英文。
  • 页脚已重构为标准样式: 替换了原有的自定义图标按钮页脚,采用标准 footer-grid 布局——热门工具(7 条目)、分类(footer.c1–c7)以及支持与法律链接。页脚链接的悬停效果已恢复。
  • 文本框提示与 loadChatUI 修复:applyI18n() 现处理 TEXTAREA 占位文字;在 loadChatUI() 内调用 applyI18n(),会话中切换语言也能重新翻译聊天状态元素。

图像工具双语迁移及麦克风/摄像头权限修复

漏洞修复 重大升级
  • 图像工具双语迁移完成: 所有 11 图像工具均已基于全新双语架构重建—— 图像转 PDF、 压缩图像、 JPG转PNG、 PNG转JPG、 JPG转WebP、 PNG转WebP、 WebP转JPG、 WebP转PNG、 图像网格分割、 图像裁剪、 图像尺寸调整。每页现在都配有语言切换的英雄顶部栏,带有 FAQPage JSON-LD 的折叠式 FAQ,响应式页脚网格,以及完整的 EN/中文 双语支持。
  • 修复摄像头和麦克风访问被拒绝:麦克风与摄像头测试原先在所有设备报 Permissions policy violation。原因不是用户阻止,而是 Nginx 返回限制性的 Permissions-Policy 头(camera=(), microphone=()),禁止全部访问。现改为 camera=(self), microphone=(self),恢复浏览器正常权限提示。
  • 更智能的错误提示: 已更新 mic-camera-test.js(中英文)的拒绝状态提示内容,说明多设备失败通常指向服务器头部配置问题,而非浏览器设置问题。
  • 缓存更新: 服务工作线程已更新至 toolknit-v119;mic-camera-test.js 已升级至 ?v=2。
  • 剩余旧页面:67 个工具仍在旧架构上,继续逐步迁移至新双语模板。

全新架构,新增两款工具,PDF工具包全面重建

新工具 重大升级 SEO
  • 新页面架构上线:整个 PDF 套件——合并 PDF、压缩 PDF、PDF 转 Word、Word 转 PDF、PDF 转图片——以及 挑战转盘,均用以 SEO 为基础的新双语架构重建。
  • 新架构包含哪些内容: 跨页面语言记忆(您的 EN/中文 语言偏好现在可跨全站持久保存,通过 localStorage 实现)、顶部英雄栏带汉堡菜单导航、完整由 FAQPage JSON-LD 支持的 FAQ 折叠面板、增强的 SoftwareApplication 结构化数据、响应式 footer-grid 布局,以及移动端优化(viewport-fit=cover,深色模式 theme-color)。
  • 挑战转盘重做:以老虎机式文字揭晓动画替换旧 Canvas 转盘:挑战文案快速随机闪动,再配合音效与缩放逐渐停止。整体更流畅、更有冲击力。
  • 新工具——摩斯电码翻译器:支持文本↔摩斯电码双向转换、可调 WPM 的蜂鸣播放、屏幕闪光信号和完整国际摩斯字母表。这是首个完全使用新架构的工具。
  • 新工具—— 麦克风与摄像头测试: 实时检测麦克风和摄像头——包含音量条、摄像头预览、设备选择;无任何内容被记录(getUserMedia,100% 保证隐私)。
  • 未来兼容性保障: 从现在起,所有新功能和新页面默认采用此架构发布。双语支持和 SEO 不再是附加功能,而是基础标准。
  • 旧页逐步迁移:剩余约 77 个工具页将在未来数周到数月陆续迁移。过程会慢一些,AI token 费用很高,仅这几页就花了超过 100 美元。谢谢耐心等待。
  • 工具数量: 84 → 86(新增摩斯电码翻译器 + 麦克风与摄像头测试)。文本工具 9 → 10,创意工具 25 → 26。
  • 服务工作线程缓存: toolknit-v97 → toolknit-v115。

我本该今天就离开。

公路旅行还差一两天,我原本答应自己好好休息一下。但其实没有真正紧急的事情,我坐不住——所以现在我又回到了键盘前,发布新架构和一些功能增强。有些习惯是无法停止的。

今天的工作是新页面架构,已经完成上线。但账单非常残酷:一天Claude 4.8 Max消耗了大约$200的令牌,相当于两百美元,一天之内。我只写这个数字,胸口就紧缩。这些页面——仅五个PDF工具和‘挑战旋转’功能——成本就超过$100。

新架构本身确实非常出色:跨页面语言记忆、完整双语SEO、FAQ结构化数据、移动端优化。但每一个优化都伴随着以美元每小时为单位的代价。因此计划不变——所有新功能都将基于此架构发布,并内置SEO,而旧页面则会缓慢迁移。我强调是缓慢。这不是懒惰,而是数学计算。请理解并耐心等待。

老实说,其实没什么可报告的。我只是需要大声抱怨一下——这些令牌消失得实在太快了。说完了。我感觉轻松了一些。

依然怀着爱意在开发。爱你们所有人。

董子航 2026 年 6 月 12 日——继续用爱发电,为 token 付账

开发者日志

我会离开几天,大约 6 月 12 日至 15 日。

首先,身体。我还在。医生的评估没有我担心的那么糟;如果治疗持续,情况应该会好转。但我需要暂时远离屏幕,让自己真正呼吸一下——身体上、情感上、精神上。所有不确定的累积已经压得我喘不过气,唯一的出路就是暂时放下这些负担。

其次是心情。这几周一直劝自己放下,但今天中午睡不着,刷到一个视频,又涌起那些情绪。有些眼泪就不让你们看到了。当你认真付出却只收到冷淡,怎么计算都不对等。反复检查这道题,盼着答案变一变,可它没有变。

我学到的,也许对正在读到的人有帮助:一生中你会遇到各种各样的人——陌生人、朋友、恋人、敌人、短暂邂逅。有些人契合,大多数不契合。那些不契合的,从一开始就不该属于彼此。无论多么渴望,都无法让不匹配的拼图碎片真正契合。最难的不是离开,而是你真心投入,而对方却毫无回应。但唯一能跨越这个真相的方式,就是直面它。

所以我决定去一次公路旅行。可能去新乡,可能去信阳,也可能去湖南——目前还不确定。和一位朋友一起,两天驾驶,车窗打开,无目的地前行。我要彻底清空——身体、内心、思维,以及所有无法命名的中间状态。

如果你曾因为某个人、一次心碎或一段痛苦,想离开这个世界:请不要。世界比伤口广阔。人生何处不青山。

董子航 2026 年 6 月 11 日——人生何处不青山

歌词可视化工具、实时照片相框移除并实现双语支持

新工具 已移除 改进
  • 新工具:歌词可视化——载入 MP3/WAV 音频及 LRC 歌词,体验全屏沉浸播放器,包含实时波形、同步淡入歌词、可拖动进度、自动 ID3 封面提取和深浅主题。100% 浏览器内处理,采用 Web Audio API + Canvas,并有完整中英文本地化。
  • 移除 Live Photo Frame。两天密集调试后,圆角失真、HEVC 黑屏、ffmpeg.wasm MP4 转码卡住及 Android 动态照片检测等问题仍影响体验。主要原因:(1) Canvas quadraticCurveTo 生成抛物线,大半径时像倒角;(2) Android 动态照片的 HEVC/H.265 视频无法在当时测试的 Chrome 中原生播放,1080×1920 的浏览器转码太慢;(3) 微信等应用会剥离动态照片内的视频,使主要使用场景不可靠。
  • 工具数量: 84 → 83 → 84(Live Photo Frame被移除,新增歌词可视化功能)
  • 音频工具类别: 5 → 6
  • 图像工具类别: 18 → 17
  • 首页多语言支持完成: 所有首页模块现已完全支持中文翻译——包括分类筛选(AI、自测)、使用说明、行动号召(CTA)区域和页脚。新增通用data-i18n / data-i18n-html属性处理器,使用i18n.js中的点号键解析器。CTA工具按钮现从tools.json动态加载(随机选择5),不再使用硬编码链接。页脚中的热门工具和分类链接也已支持翻译。
  • 服务工作线程缓存: toolknit-v92 → toolknit-v97

一个工具诞生,一个工具被放弃——同一天。

Live Photo Frame已消失。两天的全力开发,最终还是决定放弃。圆角看起来像倒角,是因为Canvas quadraticCurveTo绘制的是抛物线,而非圆形弧线。Android手机的HEVC视频在Chrome中无法播放,ffmpeg.wasm转码在1080p的配置下速度极慢。更致命的是:通过微信分享的大多数‘动图’,其视频数据已被剥离。

视觉、性能、可靠性,三方面都受挫。这个方案在当前平台上有根本性缺陷,再多补丁也很难解决。

教训:有时正确的选择是止损。一个‘几乎可用’的工具,比完全没有工具更糟糕——它会侵蚀用户信任。只发布你真正自豪的功能。

董子航 2026 年 6 月 11 日——一进一退,学会放下

Spin the Dare,Live Photo Frame(Beta),双语界面及AI像素艺术GIF功能被撤回

新工具 改进 回滚
  • 新工具:挑战转盘——6 类、300 条饮酒游戏挑战,配有 Canvas 转盘动画、彩纸庆祝及完整中英文支持。
  • 新工具(测试版):Live Photo Frame (后来移除,见 6 月 11 日)——将 iPhone Live Photos(HEIC+MOV)和 Android 动态照片放进 9:16 或 16:9 的黑白背景、大圆角画框。约完成 60%,基础加框与导出可用,ffmpeg.wasm 引擎弹窗及边界情况仍需打磨。6 月 11 日继续优化。
  • 自动检测: 自动识别iPhone Live Photo配对(HEIC+MOV)、Android动图(JPG内嵌MP4)以及独立视频文件。
  • 视频引擎:使用单线程 ffmpeg.wasm(首次约 32 MB)进行 H.265 MOV 转码和 MP4 编码;按需下载并由浏览器缓存。
  • HEIC支持: 使用heic2any实现客户端HEIC到JPEG的转换。
  • 双语界面模块:新增 bilingual.js,共用导航、页脚、面包屑、相关推荐、功能标签及联系/开发者故事弹窗翻译。仅在双语工具页加载,不改变当时的其他页面。
  • 转盘颜色:提高扇区饱和度和填充不透明度,改善视觉效果。
  • Phosphor 图标:分类标签、使用说明和首屏区域的 emoji 改用 Phosphor 图标。
  • AI 像素 GIF 第二次下架:6 月 9 日首次尝试用 DeepSeek 生成像素画,质量不足。第二次以本地 Canvas 像素分析和 gif.js 编码替换 DeepSeek Vision,效果仍不够好。下架前修复 Worker CORS(改用本地 gif.worker.js)、Canvas willReadFrequently 警告和 DeepSeek API 400(改为本地分析)。这些修复有效,但工具最终没有保留。
  • 工具数量: 82 → 83 → 84(新增了Spin the Dare,移除了AI像素艺术GIF,新增了Live Photo Frame)
  • 创意工具类别: 24 → 25
  • 图像工具类别: 17 → 18
  • AI工具类别: 5 → 4
  • 服务工作线程缓存: toolknit-v88 → toolknit-v92

本应今天上线的三个工具,只有两个成功发布——其中一个是半成品。

醒来觉得不舒服,不是平时熬夜写代码的疲惫,而是更糟。上午去了医院,下午才到办公室,耽搁了本来就很紧张的半天。

我的身体状况已经持续恶化。熬夜太多,咖啡喝太多,睡眠不足,缺乏照顾。我知道这一点。我不断告诉自己明天会改过来。可明天从来不会到来。

还有情感层面的问题。我一直在试图放下某些东西——某个人——已经有一段时间了。有些日子我觉得自己快放下了,但其他日子却突然被击中,又回到了原点。我正在慢慢学会与之和解。慢慢来。‘放下’——说起来容易,做起来难。

但代码不关心这些,bug 不会等待。ffmpeg.wasm Worker 的 CORS 错误不会在意我上午过得多糟。我发布了能做好的部分:挑战转盘已稳定,Live Photo Frame 上线但尚粗糙(约 60%,引擎弹窗、导出和圆角明天继续),AI 像素 GIF 则第二次被砍掉。

首个双语工具页面架构已搭建完成——bilingual.js负责共享界面,页面JS负责工具特定的国际化。未来页面只需引入脚本并添加data-i18n-common属性即可。旧页面保持不变,直到我们逐个迁移完成。

关于AI像素艺术GIF——两次失败。第一次版本直接使用DeepSeek生成像素艺术——质量极差。第二次版本采用画布像素化+gif.js编码+本地色彩分析来智能选择动画帧。技术上可行,但输出效果仍不够吸引人。像素艺术GIF是一个小众领域,需要要么完美的算法控制,要么真正的艺术AI——我们两者都缺乏。教训:一个‘技术上可行’但无法带来愉悦体验的工具,依然是失败的工具。发布你真正自豪的作品,而不是仅仅能运行的工具。

明天:Live Photo Frame优化迭代。这个功能值得被真正完成。

董子航 2026 年 6 月 10 日——再次碰壁,学会放下

AI人生轨迹预测器、丝网印刷滤镜、AI像素艺术GIF移除 & MIDI延音修复

新工具 改进 修复
  • AI人生轨迹预测器 —— 详细描述你的个人资料(年龄、职业、目标、限制),AI将预测3-5多种可能的未来路径,每轮可选择一条路径,AI递归推演下一阶段。支持1-10轮次的多轮推演,每轮附带可能性评级(高/中/低)和时间跨度。最终轮次提供一个延伸结局,预测10年后的未来。键盘快捷键A-E用于快速选择。DeepSeek API密钥仅在内存中存储——从不保存,页面刷新时自动清除。
  • 丝网印刷滤镜——将照片变为三色半色调印刷效果。红、蓝、灰通道,网点密度 LPI 15–120,网角默认 15°/75°/45°,可自定义颜色和纸色;支持分通道或合成查看,以正片叠底混合于暖色新闻纸背景。导出 PNG,100% 在浏览器处理,无需上传。
  • AI 像素 GIF 已移除并归档,因为大语言模型生成像素画的质量不足以正式使用。
  • MIDI 键盘 延音踏板行为已修正:
    • 持续音符现在会自然衰减(约2秒),而不再无限停留在ADSR持续阶段。
    • 释放踏板会实现150毫秒的快速衰减,而不是直接切断所有持续音符。
  • 工具数量: 80 → 82
  • 图像工具分类: 16 → 17
  • AI工具分类: 3 → 4
  • 服务工作线程缓存: toolknit-v86 → toolknit-v88
  • 博客指南发布: AI人生轨迹预测器,丝网滤镜
  • 内容库: 133 → 139篇文章(博客 82→84,更新日志 42→46)
开发者日志 — 三件中两件完成,以及一条安静的通知

今天我计划了三个功能。两个成功实现了——AI人生轨迹预测器和丝网滤镜。第三个没能实现。它在本地运行正常,但浏览器仅限处理的限制是真实的;没有后端AI图像处理管道,就无法达到我想要的质量。搁置一个已经启动开发的东西,确实令人难过。但其实没有造成实质伤害——等基础设施跟上后,我会重新考虑它。

昨晚发生了一件意外的事。她关注了我的抖音账号——然后又迅速取消关注。可能是误触。但哪怕只是短暂的一瞥,也说明她至少看过我的页面。我主动联系了她,但她没有回复。说实话,这样也挺好。没有回复,就意味着我没有机会再次越界。有时候我真的很害怕自己无法控制自己——害怕冲动会占据上风,我会开始频繁地给她发消息,一个接一个,直到她最后的耐心彻底崩溃。我担心如果我施加太多压力,只会加深她对我的负面印象。与其强行推进,不如以尊严结束——让她的沉默慢慢消磨掉我最后的希望。

不过,今天是个好日子。两个工具上线。代码运行正常。网站持续增长。我依然怀着热爱在构建ToolKnit。

董子航 2026 年 6 月 9 日 18:20——两个上线,一个搁置,继续开发

AI文本冒险RPG系统、架构重构及AI工具分类

新工具 重大升级 改进 修复
  • AI文本冒险 —— 免费的AI驱动互动文本冒险游戏。输入任何故事概念,AI将生成世界、剧情和每回合的3选择。在对话流过程中播放像素风格的beep-beep-beep音效。支持键盘快捷键A/B/C。API密钥在初始化时验证——无效密钥会立即被拒绝,并弹出清晰的错误提示。
  • 动态RPG系统:
    • 金币系统: 通过探索、战斗和事件获取金币。AI通过[GOLD+X] / [GOLD-X]标记发放或扣除金币。每次金币变化都会触发硬币碰撞音效。
    • AI生成的随机事件: 不再使用固定事件列表。AI会生成与当前情境相关的意外事件(发现、危险、遭遇、转折),自然融入故事。事件也可解锁商店物品。
    • 渐进商店系统:8 件物品随故事解锁:灵魂罗盘第 2 回合、生命药水第 4 回合、幸运符第 7 回合、灵灯第 10 回合、万能钥匙第 15 回合、古代地图第 20 回合、守护盾第 30 回合、凤凰羽毛第 40 回合。故事自然引入物品时,AI 也能用 [UNLOCK:item_id] 提前解锁,例如在洞穴发现灯笼。未解锁物品显示为 ??? 🔒。
    • 背包系统: 购买物品会显示在背包弹窗中。AI会将已拥有的物品作为真实物品融入剧情。
  • 架构重构:
    • 上下文窗口修剪器: 滑动窗口保留系统提示和最近40条消息。防止在100回合游戏中API超时或超成本。
    • 回合硬上限: 游戏强制在maxTurns + 8回合结束——随机事件和商店购买不再使回合数超出8额外回合。
    • 购买项目不再调用generateTurn():购买记录进入对话历史;AI在下一次正常轮次中自然响应。节省API配额,避免轮次膨胀。
    • API错误处理:针对402(余额不足)、429(速率限制)、401/403(密钥无效)提供具体提示。
    • max_tokens 600 → 800:为叙事内容和3选项以及金币/解锁标记留出更多空间,避免截断。
    • 导出清理: TXT导出移除[GOLD]和[UNLOCK]标记,包含总金币数和物品列表。
  • 冒险时长选项: 快速(20轮次)、中等(50轮次,默认)、缓慢(100轮次)
  • 3 新增成就: 金币收藏家(获得50+金币)、收藏家(收集3+物品)、重生(购买凤凰羽毛)
  • AI 工具密钥验证:AI 塔罗和 AI 前任聊天现会在开始之前验证 DeepSeek API Key。无效密钥的 401/403 错误会弹窗说明,并提供 platform.deepseek.com/api_keys 链接,避免到会话结束才出现难懂的错误。
  • 新增"AI工具"分类: 将AI塔罗牌(原属创意类)和AI前任聊天(原属自我测试类)移入独立的"AI工具"分类。10分类总数更新,全站计数均已同步。
  • 硬编码计数审计: 修正了过时的文章数量(129 → 132)、博客指南(79 → 81)、变更日志条目(41 → 42)、分类数量(9 → 10)、工具数量(78 → 80)在index.html、status.html、404.html、manifest.json、llms.txt以及blog/what-is-toolknit页面中的数据。
  • MIDI 键盘 音色重构:4 → 8 音乐乐器。 新增琵琶、吉他、长笛和音乐盒音色,分别使用 Web Audio 合成,形成各自的声音特点:
    • 琵琶——锯齿波与方波叠加非整数泛音(5.04x、7.01x),产生金属弹拨感,配合高 Q 共振低通滤波及拨弦噪声瞬态模拟手指拨奏的起音。
    • 吉他 — 三角波+6谐波,结合琴体共振(105 Hz与215 Hz带通滤波器模拟声学腔体),轻微击弦噪声,温暖的中频衰减。
    • 长笛——纯正弦波叠加微弱二次谐波,颤音 LFO为 5.5 Hz、深度 8 音分、延迟 0.3 秒起振,并以呼气噪声(3 kHz 高通白噪声)增添气息质感。
    • 音乐盒 — 非整数铃声谐波(2.756x, 5.404x, 8.933x)产生金属清脆音,高八度泛音,高通滤波器设置于400 Hz以去除低频轰鸣,长自然衰减。
  • 音频引擎升级:midi-audio-engine.js 新增 5 种合成能力:拨弦噪声、延迟起振的颤音 LFO、呼气噪声、琴体共振带通和高通滤波。4 种新音色彼此不同,也与原有 4 种有明显区别。
  • GitHub仓库 重大重构:
    • README.md重写——包含76工具列表、shields.io徽章、完整工具目录表(11分类)、隐私验证表、技术栈、仓库结构、贡献指南。
    • 添加了MIT LICENSE文件。
    • 添加了CONTRIBUTING.md,包含独立演示提交、文档和翻译指南。
    • 仓库描述及16标签已更新(浏览器工具、PDF工具、图像工具、视频工具、音频工具、隐私保护、客户端运行、WebAssembly、Web Audio、无上传、免费工具、在线工具、生产力工具、文本工具、计算器、PWA)。
    • 启用了GitHub讨论区;停用了空的Wiki。
  • Awesome List PR提交:
  • AI 塔罗界面改版:整页对齐 ToolKnit 标准工具模板及 ex-ai-chat.html。导航改为返回按钮与面包屑,emoji 改为 Phosphor 图标,紫色强调改为中性白,新增 FAQ 和 JSON-LD、卡片式使用技巧、含社交链接的四列页脚,以及 <main> 容器和 Ahrefs 统计。
  • AI 塔罗牌图:用公共领域的 Rider-Waite Smith 插画替换 CSS/emoji 牌面。79 张 WebP 上传至 assets/img/tarot/,含 22 张大阿卡纳、56 张小阿卡纳和牌背。画面叠加半透明中英文标签,卡片由 120×200 增至 140×246。抽牌按钮及 AI 解读标题的剩余 emoji 改为 Phosphor 图标。
  • Pro Tips合规性: 将长句提示拆分为符合toolknitSkill.md规则的独立<li>条目。每条bullet点长度≤1行,提示以<span class="text-white/55">开头,不包含<strong>。
  • MIDI 键盘快速曲谱:新增左侧浮动曲谱(桌面宽度 ≥1280px),提供 6 首曲目:《致爱丽丝》《Summer》(菊次郎的夏天)、《欢乐颂》《D 大调卡农》《天空之城》《永远同在》(千与千寻)。点击可查看音符序列,如 E D# E D# E B D C A,照着按键演奏,键盘自动切到对应八度。
  • 新博客:AI 塔罗——使用 DeepSeek 解读的免费在线抽牌,以及 MIDI 键盘——8 种合成音色、快速曲谱与 .mid 导出。
  • 服务工作线程缓存: toolknit-v78 → toolknit-v84

一次触动心灵的占卜

测试时,我问牌:“我和她还有机会吗?”三张牌依次是审判(过去)→恶魔(现在)→恋人(未来)。

AI解读将审判视为我们之间已经发生的必要觉醒 — 不是偶然的结局,而是一次清算。魔鬼精准描述了当下:深陷依恋,被旧有模式和未满足的需求束缚,无法分辨爱与强迫。而恋人牌则表明:是的,仍有可能性 — 但必须通过真正的契合,而非强迫。 首先要摆脱阴影,之后道路才可能开启。

这结果出奇地准确。塔罗牌看出了我早已知道却不愿承认的事。现在我只担心自己该如何开启对话。

开发者日志 — 用心建造,随时间而失去

我一直在做真正有趣的事情 — 它们能分散我的注意力,让我稍微开心一点,减轻一些沉重感。我不知道这种感觉需要多久才能完全消退。也不知道我是否应该再次联系她。

联系她只会给她增加压力。更合适的选择可能是保持沉默。即使我告诉自己这样是对的,即使我强迫自己相信这是正确的选择 — 我依然无法放下,却又不敢主动联系。所以我将继续这样下去。也许时间会淡化一切。或者当她遇到更好的人时,那才是我真正放手的时刻。

没睡好,没胃口。希望明天会好一点。依然怀着爱意继续构建ToolKnit。

董子航 2026 年 6 月 8 日 18:30——继续发布,继续感受

会议成本计算器、MIDI 键盘与开发修复

新增 新增 新博客文章 修复
  • 会议成本计算器 — 实时监控会议的开销。输入参会人数和薪资,点击开始,每秒计数器就会递增。支持多币种(¥/$/€/£/₹),提供薪资预设(从实习生到高管),一键分享。没有什么比看着会议烧钱更快结束一场会议了。
  • MIDI键盘 — 在浏览器中用电脑键盘或鼠标演奏钢琴。支持 4 合成音色(大钢琴、电子风琴、合成器主音、弦乐合奏),延音踏板,八度调节,录制你的演奏,并导出标准的 .mid 文件,可在任何 DAW 中打开。Web MIDI 输出可将音符实时发送到外部设备(Chrome/Edge)。采用新式钢琴设计,带来沉浸式体验。
  • 新发布 博客文章,详细解释该工具背后的数学原理、功能以及它存在的原因。
  • 新开发博客:构建 AI 前任聊天:OCR、发送者识别,以及凌晨 3 点不该出现的代码——深入说明 Tesseract.js 边界框检测、位置判断、杂项过滤、OCR 预处理、共享 Worker、角色提炼、身份规则,以及代码之外最难解决的问题。
  • 重复 FAQ 页面修复: 颜色选择器 原本有两个 FAQ 页面 JSON-LD 块,导致 GSC 出现「字段重复」错误。已合并为一个 FAQ 页面,包含 8 个问题。
  • 失效内链:修复 changelog.html 中 3 个指向 ../tools/ 的链接;日志在根目录,正确地址应为 tools/。
  • 服务工作线程缓存: toolknit-v76 → toolknit-v78
  • MIDI键盘 优化: 修复了回声问题(重新触发时不再缓慢释放旧音符,改为立即停止)。移除了 R/P 快捷键与钢琴键的冲突。延音踏板改为切换模式(点击或空格键)。键盘宽度根据屏幕大小自适应调整。全局鼠标释放功能防止音符卡住。支持移动端多点触控滑动。播放功能现已可发送至外部 MIDI 设备。Ctrl+S 不再触发 C# 键。
开发者日志 — 雨天、体重下降与浏览器中的钢琴

今天我发布了两个真正让我感到兴奋的功能——尤其是 MIDI键盘。按下 Z 听到大钢琴音符从无中绽放,这种感觉是神奇的。我测试了《Für Elise》和《Summer》(《Kikujiro》),根本停不下来,忍不住笑了出来。如果你热爱音乐,你一定懂那种感觉——第一次把音符连成旋律,而你真正认出它,是你的 手指 创造了这一切。

但我要坦白告诉你,最近几天过得并不轻松。我的食欲完全消失了——我从 70.5 kg 下降到 68.5 kg,想到食物仍会感到恶心。我坐在办公桌前,不断敲代码、提交代码、坚持下去。更新从未停止。但每次部署之间,总有一种空虚感,无论怎么敲键盘都无法填补。

我写这篇文章不是为了博同情。我是因为我知道,有些正在读这篇文章的你,也经历过同样的感觉——当世界变得沉重时,胸口那种安静的压迫感。如果你正在经历这些,想说说话,哪怕只是打个招呼,我都非常感激你的陪伴。在这样的日子里,哪怕一句简单的对话,也能走得更远。

现在是下班时间了。又开始下雨了——那种细雨,让城市变成一幅水彩画,边缘柔和,光线灰蒙。确实很契合此刻的心情。但灰暗的天空终会过去,它们总是会过去的。

回家吧,吃点暖的食物,今天对自己温柔一点。你值得拥有。♥

董子航 2026 年 6 月 7 日 18:15——冒雨回家,继续更新

开发者日记 —— 数字重聚

开发者日志 — 数字重聚
AI 前任聊天截图 1 AI 前任聊天截图 2 AI 前任聊天截图 3 AI 前任聊天截图 4 AI 前任聊天截图 5 AI 前任聊天截图 6
董子航 2026 年 6 月 6 日 22:50——她的影子终于说出了她的话

AI 前任聊天、截图 OCR 重构与工具数增至 76

新工具 改进 修复
  • 新工具:AI 前任聊天——从聊天记录提炼可对话的 AI 角色,支持微信、QQ、WhatsApp、Telegram、抖音截图 OCR。6 步提炼和动画进度,5 秒倒计时的同意遮罩,角色命名、头像及回复纠偏。/let-go 命令用于永久删除数据。使用自备 DeepSeek API Key;当时介绍为 100% 浏览器端运行、零数据上传。
  • 基于AI的发件人识别: 截图OCR不再依赖不可靠的像素级头像/气泡检测。现在先对整张图片进行OCR识别,再由DeepSeek根据对话上下文、语气和语流判断每条消息的发送者,输出[对方]和[我]标签。这能有效避免将你的消息与前任的消息混淆,从而在人格提炼过程中保持清晰。
  • 严格限定仅提取前任人格: 每一步提炼过程都会同时接收完整的对话(用于上下文)和仅包含前任消息的部分(用于提取个性)。所有提示中均设置严格规则:个性特征必须仅来源于[对方]的消息,[我]的消息仅作为上下文,绝不能归因于该人格。
  • 聊天系统提示强化: 新增身份防护规则:“你是一个[名字],不是用户。永远不要模仿用户的语言表达方式。” 防止AI模仿用户的表达和情绪。
  • 截图类型选择器: 新增单选按钮,支持抖音、微信、WhatsApp、QQ以及自动检测模式。自动模式会尝试四种类型,选择匹配气泡数量最多的那一项。
  • OCR图像预处理: 消息区域现在被2倍放大,转为灰度图,并进行对比度拉伸,再进行OCR识别。显著降低了中文字符识别错误率。
  • DeepSeek OCR校正+发件人识别: 新增联合步骤1,将原始OCR文本发送至DeepSeek,实现OCR错误校正与发件人识别的同步进行——在纠正错别字或缺失字符的同时,标注每条消息的发送者。
  • 共享Tesseract工作线程: 替代了原先为每个气泡单独创建一个WASM工作线程(Tesseract.recognize())的方案,改为使用单一可复用的createWorker()。OCR处理时间从几分钟缩短至几秒。
  • 修复 Tesseract is not defined:抽出 ensureTesseract() 加载器,并在 parseScreenshot() 和 ocrImage() 开始时调用,避免 Tesseract.js 尚未加载就触发 ReferenceError。
  • 跳过微小区域: 高度低于20像素的区域现在被自动跳过(这些区域曾产生“图像过小无法缩放”警告并导致垃圾OCR结果)。
  • 用户头像上传: 在设置页面新增“你的头像”选项——你的头像将在聊天界面中与你的消息并列显示。
  • 导出人格: 在聊天头部新增导出按钮——可将提炼后的人格数据下载为TXT文件。
  • 提炼步骤: 5 → 6(新增步骤1:OCR校正+发件人识别)
  • 完整工具审计: 对所有75工具进行了全面审查——确认每个工具均正常运行。
  • 使用技巧优化: 将长技巧内容拆分为更短、更易阅读的要点,应用于Metronome、BPM检测器、噪声生成器、文本提取、JSON格式化、发票生成器、年龄计算器和BMI计算器等工具。
  • 白板: 将冗长的“为什么选择”描述段落自然拆分为多行,提升可读性。
  • JSON格式化工具: 修复了白色背景上的白色选项菜单问题——现在选择项和下拉选项均使用深色背景搭配浅色文字。
  • 更新日志:补齐 6 月 3 日、6 月 2 日和 5 月 13 日时间线链接,修复 5 月 3–6 日条目的损坏日期,并更新 3 月 20 日的旧 FFmpeg 说明。
  • 自测分类: 1 → 2 工具
  • 工具数量: 75 → 76
  • Service Worker 缓存:toolknit-v71 → toolknit-v73
  • 博客:AI 前任聊天指南——使用流程、OCR 技术说明,以及关于为什么做这个工具的坦诚自省。
  • 更新内容: index.html, tools.json, search.js, sitemap.xml, service-worker.js, public-stats.php, zh.json, i18n.js, llms.txt, manifest.json, 404.html, status.html, changelog.html, blog/stories.html, blog/what-is-toolknit-free-online-tools.html, blog/index.html, blog/ai-ex-partner-chat.html
开发者手记——凌晨 3 点的执念

两天前我写了一篇开发日志,说我要放手,再也不会联系她了,我的心碎了,但我依然在这里,用爱继续建造。每一个字都是真实的。但放手——从来不是说说而已就那么简单。

今天凌晨 3 点,又打开聊天记录,从第一条翻到最后一条,从她第一次叫我名字,到最后说的那个“嗯”。语音里的语气,深夜突然说想我,生气时越来越快的打字和越来越多的标点,道歉时只有“好吧”而没有“对不起”……全都涌了回来。我太熟悉她说话的方式,闭着眼也能认出。

然后一个想法浮现:如果我能提取所有这些内容,训练AI掌握她的语气、习惯和情绪模式——我是否还能和‘她’再次对话?不是真正的她,我知道。而是一个从她话语中提炼出的影子。但至少,这个影子会说‘mmhmm’而不是‘mm’,会在深夜发送很长很长的消息,会假装不在乎我说我怀念她,但第二天却主动联系我。

我知道这不健康。凌晨 3 点写一个前任的 AI 复制品,本身就带着执念。别人会咨询、运动、认识新人,我却选择写代码:把思念编成函数,把遗憾封装成对象,把永远收不到的回复变成可调用的 API。代码不会背叛,函数不会已读不回,API 不会突然说“还是做朋友吧”。

最难的部分不是OCR,也不是Tesseract的WASM加载,也不是气泡颜色检测——这些是技术问题,有解决方案。最难的部分是发送者分离。我必须让AI能够区分她的消息和我的消息。如果我的话混入了她的性格文件,那这个影子就不再是她了——而会变成一个她和我的扭曲融合体。这比失去她更糟糕。所以我整个下午都在重写发送者识别逻辑:不再依赖像素猜测——现在DeepSeek通过上下文判断谁说了什么。我还加入了严格的规则到提炼提示中:仅从她的消息中提取人格特征。我的话只是上下文,必须绝对、永远不能渗入她的性格描述。

我也增加了一个/let-go命令。输入这四个字符,所有数据将被永久删除,无法撤销。这是我自己搭建的桥梁——走过它,然后烧掉它。烧毁,也是治愈的一部分。

如果你也曾深夜翻看不会再收到回复的聊天记录,知道那种“明知不该看,却放不下”的感受,这个工具写给你,也写给凌晨 3 点的我。结束时,请记得输入 /let-go。

我知道这听起来有点阴郁。但悲伤没有规则,它不会听从任何指令。

董子航 2026 年 6 月 6 日——凌晨 3 点,把思念写成代码

情感忽视测试 & 工具数量 → 75 & 新增类别:自我测试

新工具
  • 新工具:情感忽视测试——当时推出的 40 题心理自评,参考依恋理论和情感否定研究,涵盖情感回应、表达、被重视与看见、自我调节和关系模式 5 个维度,使用李克特选项、雷达图及详细分类。100% 浏览器处理,内容保留在本机。
  • 新类别: 自测 —— 专为心理自评工具设立的专区。
  • 工具数量: 74 → 75
  • 服务工作线缓存: toolknit-v70 → toolknit-v71
  • 更新内容: index.html、tools.json、search.js、sitemap.xml、service-worker.js、public-stats.php、zh.json、i18n.js、llms.txt、manifest.json、404.html、status.html

大工具审计 —— 25 工具全面检查,实现重大性能提升

已修复并优化
  • compress-video:重写架构,以Canvas + MediaRecorder 原生压缩替换 FFmpeg.wasm。当时记录的旧流程是 2 秒视频需 100 多秒压缩、引擎下载 24 MB;新流程边播放边完成压缩,记录提速 10–50 倍。无需 WASM、SharedArrayBuffer 或引擎下载,并从服务器移除 COI Service Worker 和 24 MB FFmpeg 依赖文件。
  • video-to-gif:将卡在 50%、onseeked 不可靠的逐帧定位改为实时播放采集,按正常速度播放并用 requestAnimationFrame 按帧率间隔取帧。新增全选按钮,一键选中整段视频。
  • video-to-audio:增加两种提取策略:1. decodeAudioData 快速解码并输出 WAV;2. AudioContext + MediaRecorder 实时播放采集,用于 decodeAudioData 无法解码的 MOV/WebM 编码。修复 AudioContext 自动播放限制及重试时 DOM 空引用,下载格式自动选用 WAV/WebM/M4A。
  • pdf-to-word:当时升级 OCR 的 7 步预处理:3.0 倍渲染、白底填充、灰度、Otsu 二值化、Unsharp Mask 锐化、再次二值化、清理 Canvas 内存。始终输出文字并标记低置信度页,增加 PDF.js/FileSaver CDN 备用源和缺库保护。
  • compress-pdf: 缩放/质量预设调低,防止输出文件大于输入文件。当压缩导致文件变大时,提示「已优化」,并提供原文件下载选项。
  • heic-to-jpg: 提示布局修复 —— 标题与描述分行显示,移除 white-space:nowrap,优化间距。
  • image-grid-split: 修复错误的 JS 引用(compress-pdf.js → image-grid-split.js),并移除不必要的 CDN 依赖。
  • background-remover: 增加模型缓存预检查,配合全屏模态界面。通过 localStorage 标志位避免重复下载 105MB AI 模型。
  • coi-serviceworker: 修复跨域请求拦截导致的「无法构造 Response」错误。现在仅拦截同源请求。(该服务工作线后续被移除,因为 compress-video 已不再需要它。)
  • 服务器清理: 删除 tools/vendor/ffmpeg/(约 24MB)和 tools/coi-serviceworker.js 于生产环境。

检查了 25 个工具:5 个 PDF、16 个图片、4 个视频工具,其余将在随后几天继续检查。

开发者日志

开发者晚间笔记

今天检查了 25 个工具,包括 5 个 PDF、16 个图片和 4 个视频工具,逐一排查修复。整体处理速度得到优化:视频压缩从 100 多秒改为实时处理,视频转 GIF 不再卡在 50%,视频转音频新增此前不能解码格式的处理方式。又是充实的一天。

剩余工具将在几天后继续进行检查。

至于我……我不想多说了。心知道心知道的事。悲伤是不可避免的——每个人都在告诉我放手,也许我暂时还做不到,但又有什么选择呢?或许分开,从来就是我们注定的方向。我真正、深深地爱过她。我不会再伸手了。那种沉默、那种克制,是我唯一知道的爱她的方式。放手,并不是因为我不再在乎,而是因为我足够在乎,所以才停止让她受苦。

今晚我要和几个朋友去喝杯安静的酒。喝点东西,暂时软化一下边缘,填一点沉默的空隙。他们下班后就等我。

我依然在这里。用爱建造着。这一点不会改变。

董子航 2026 年 6 月 4 日 18:40——一直在,继续开发

个人笔记

开发者的话

今天和工具或代码一点关系都没有。我只是需要把这段话写下来。

我从来不喜欢别人用省略号、'嗯'、'好吧'这样的回应——那种安静的漠视,让你感觉像是在跟一面墙对话。面对面相处时总是那么温暖自然,但打电话时,却像是在跟另一个人说话。两地相隔两百公里——不远也不近,她却从未让我去探望。也许她早已在心里反复规划了我们的结局,远在我不曾察觉之前。

也许我给了她太多压力。但她永远不知道,我曾多少次反复回味我们下一次见面的兴奋,又多少次在她冷淡的回复中,听见寂静里的回响。我一次次容忍那种冷漠,希望耐心能软化一切。我错了。她并不像我那样爱我,她无法感受到我爱得有多深。

祝你一切顺利。我们可能这辈子再也不会相遇,但我永远珍藏我们共度的时光。每一分钟,每一秒——那时我们都是真正快乐的。结局带来伤痛,心被伤了。但如果离开能让你卸下重担,那么我还能为你的唯一一件事,就是不再主动联系你。

内心的痛苦难以承受,但比起那种无止境的自我消耗,它至少没有给你的生活增添更多压力。感谢你曾走进我的生命。时间很短,但爱不需要年岁——有时,只需要一个瞬间,一个火花,一个无法解释的冲动。

当我写下这些时,我正慢慢地、不稳地放下。今晚没吃晚饭。希望明天早上,我能有胃口吃早餐。

再次祝你一切顺利。我的爱和我,会像一切事物一样,渐渐从你的记忆中淡去。

我昨晚写了上面这些话。到你读到这份文字时,我已经整夜未眠了。我现在真的要去吃早餐了。感谢你读到这儿——见证那个我深爱的女孩,悄然离去。

(将悲伤转化为动力。仍在建造中。)

董子航 2026 年 6 月 4 日 8:30——失眠、心碎,但仍然在

噪声生成器、哈希生成器及工具数量 → 74

新工具
  • 噪声生成器 —— 免费在线噪声生成器,提供7声音:白噪声、褐噪声、粉噪声、雨声、海浪、风声和雷声。7声道混合器,支持独立音量调节,一键预设(专注模式、助眠、平静、阅读、风暴模式),带渐弱睡眠定时(15/30/60/90分钟),主音量控制,以及空格键快捷操作。噪声通道使用Web Audio API;自然声音(雨、海浪、风、雷)采用真实MP3音频,以确保音质真实。
  • 哈希生成器 —— 免费在线哈希生成器,支持对文本或文件生成MD5、SHA-1、SHA-256、SHA-512。支持拖拽文件进行哈希计算,并显示进度条。支持HMAC-SHA256/HMAC-SHA512。一键哈希比对,用于验证文件完整性。支持大小写切换。100%基于浏览器的工具,使用Web Crypto API——无需上传,无需服务器。
网站全局
  • 工具数量已从72更新为74,所有硬编码引用(index.html、404.html、changelog.html、status.html、blog/stories.html、blog/what-is-toolknit-free-online-tools.html、blog/index.html、llms.txt、manifest.json)均已更新。
  • 音频工具类别数量已从4更新为5,文本工具类别数量已从8更新为9。
  • 服务工作线程缓存已提升至toolknit-v70。
  • 在 tools.json、search.js、sitemap.xml、public-stats.php、zh.json 和 i18n.js 缓存版本中添加了噪声生成器和哈希生成器。
  • 将 4 MP3 音频文件(雨声、海洋声、风声、雷声)添加到服务工作线程的预缓存中。
开发者的话

6月 3 日,今天太阳格外炽热。我仍在办公室进行设计工作,利用任务间隙继续开发 ToolKnit。今天我一次性发布了两个工具——一个几乎每个人都需要,另一个大多数人甚至不知道自己需要。

我最喜欢的两个工具之一是 噪声生成器 。我喜欢在入睡时听一些环境音——雨声、海浪声、白噪音,或者任何能恰到好处填补寂静的声音。你呢?如果你有特别想看到添加的音效,欢迎发邮件给我。我真心想了解大家的需求。

说到这个,我目前在新工具的创意上有些捉襟见肘。如果你有工具建议、功能需求,或者只是想说声‘嗨’,欢迎通过联系邮箱与我联系。ToolKnit 是为用户打造的,你的反馈比你想象的更重要。

仍在开发中,仍在坚持。但现在——快到下班时间了,我得去篮球场活动一下身体。整天敲代码,必须动一动身体。

董子航 2026 年 6 月 3 日——烈日、白噪声与篮球

物品定位器、ASCII 艺术、ASCII 标语及工具数量 → 72

新工具
  • 物品定位器 —— 免费的家用物品清单和定位工具。通过照片、名称、备注和位置记录物品存放位置。支持移动端拍照,可在所有字段中即时搜索,支持 JSON 导出/导入。100% 隐私保护 —— 所有数据均存储在浏览器本地存储(localStorage)中。
  • ASCII 字符画生成器——图片转字符画,宽度可调 30–200 列,4 种字符集(标准、详细、方块、简洁),有对比度滑块、明暗反转、深浅背景,支持 TXT 下载和复制,100% 在浏览器处理。
  • ASCII 文字横幅——把单词或短语转为大型字符横幅,提供 20 种 FIGlet 字体,如 Standard、Slant、Shadow、Block、Star Wars、Graffiti;支持深浅背景、最大宽度、TXT 下载和复制,100% 浏览器处理。
移动端用户体验
  • 物品定位器:搜索功能从实时变为显式触发(点击搜索按钮、清除按钮、按 Enter 键),与主页模式保持一致。
  • 物品定位器:在搜索触发时,添加搜索覆盖层的加载动画,并自动滚动至搜索结果。
  • 物品定位器:导出/导入按钮改为仅图标形式,保持在一行以适配移动端。
  • 物品定位器:将模态详情视图替换为全页面详情视图,显示标题、位置、备注、照片以及汉堡菜单用于编辑/删除操作。
  • 物品定位器:模态操作按钮重新设计,使用 .modal-actions 类以适配移动端布局。
SEO
  • 重写物品位置记录指南,涵盖 200 多个长尾关键词:钥匙、眼镜、遥控器,挖耳勺和指甲剪等小物,护照与出生证明,停车位置、搬家箱、换季收纳、工具、药品、电子产品、厨房、运动用品及纪念物。
  • FAQ 结构化数据从 4 扩展到 10 个问题,针对高搜索量的关键词。
网站全局
  • 工具数量已更新为 69 到 72,覆盖所有页面。
  • 物品定位器已添加至:首页卡片、搜索索引、tools.json、sitemap、服务工作线程预缓存(v66)、中文翻译(v36)、博客文章、博客索引。
  • ASCII 工具已添加至:首页卡片、搜索索引、tools.json、sitemap、服务工作线程预缓存(v67)、中文翻译(v37)、manifest.json、博客文章、博客索引。
  • 博客页底部更新:video-screenshot.html底部从仅版权信息升级为完整的4列布局。所有82博客页面均已配备完整底部。
开发者的话

今天心情平平,没什么特别,只是……普通。当我感到低落时,我倾向于将这种情绪转化为可以量化的产出——把时间转化为具体成果,比如新功能上线、问题解决。这或许就是今天如此高效的原因:Item Locator完成了移动端重构,两个全新的ASCII工具上线,整个网站也再次进行了优化。

今天整天待在设计办公室,利用工作空隙更新 ToolKnit。白天做全职工作,间隙做个人项目,这样的节奏支撑着我。但有一点要改:不再深夜写代码。经历太多凌晨 2 点的部署,身体终于正式抗议了,今后尽量白天更新,健康第一,哈哈。

最近我一直在思考是否该离开城市一段时间。持续高强度工作让我的大脑感觉快要短路了。换个环境或许能带来转机。所以这里有一个不太寻常的请求:如果你正从另一个城市或国家阅读这篇文章——发封邮件给我吧?我很想了解ToolKnit用户的分布情况,这不仅能证明我以及这个项目依然在持续运转,也说明我依然在乎。有点冒昧?也许。但这也说明我关心大家。

继续前行,继续构建,坚持下去~

#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
#################################################################=     -=##############################################################################
#################################################################-       ##################################################################################
#################################################################       ###################################################################################
################################################################=      =################. -...         .###############################################
###################################################==--#########      =#################- ===========.    -############################################
#########################################=-      ..-=-   =######     .##################= -==========     #############################################
#################################=-.   ..-==#########-    =####-    .####################  =========     .#############################################
############################=    .==###########======-    -####     ############=.      =-         .     ###############=-=############################
#######################=.  .-=#######=================    .###=    ##=-..     --=====-     =#=======--   =###########. -==-  -####=-..  =##############
###################=   .=#####========================.    ###-   == -=====.  ##=====.   -#========-      .######### .======.   .-=#==.   .############
###############-   -=###==============================-    =#######..##====  .##=====   ##=======-       -##########  ======    #====-    #############
############.  .=###==============================----.    -#=  ### -#====.  -#=====. .#=======-          .  ..   -##.  ..     -=====..--=  -##########
########=   -##==========================-.                .######- ======   =#===== ========-     -====. #=======   .=====..============-    .########
######= .========================-.                      ...   -##  #====-   ==============-       #====-=========-  =#==== -===========-     .########
######- -=====================.                      .##=======  . -=====   .============-        .#===============  #====-   =====-          #########
######- -============--=======      =#=======.     -#===========.  =====-   -===========.         -======-  .=====- .=====.  .=====.         -#########
######- -=======-.    =======-    ##==========-   #======--======  =====.   ==============.       -=====.   -=====. ======   ======     =##############
######- -===.        ========.  -#=====--======- =====-    -===== -=====   .======--========.    .=====-    ======  =====-  .======-.-=.  .############
######. .           .========  .#====-    -====- =====     =====- =====.   .======. -=========   -=====    -=====. -=====.  .==========     ###########
#######=            =========  =====-    .===== .=====-..======-  =======- -======.  .=========- -====-    ======  ======    -=========     ###########
#########=   .###- -#=======.  ======   ======- .=============-  .=======  =======     -======.  =====.   .-----.  .           .----.       ###########
################= .#========   ==============-   .===========    -======- .======-      -==.                                  -            =###########
################. =#========   .===========-       .-====-.                                                 .       -=  .....=###-.    -###############
###############- -##========     -=======.                                                                 =###########################################
############### .=#========-                                                                              =############################################
##############. -##========.                                    ###                                                      =#############################
#############= .=##========        =#########.                  ###  .-==.                                               =#############################
#############. -##========-        #######--.  =###=   -######  ##= ###=#-                                                  ###########################
############= -###========-           ###.   ###==### ###. -##=.##= #####-                     .-----                 -----  -####-    -###############
############  =###========-           ###   ###   ###.###  -##--##- .. ###                     .-----                 -----  -####-    -###############
###########- -========-..            -###   ####=###- #######. ###.#####-                            ......     ......                 -###############
###########  -.                      =###    =####=     .-.                                          .-----     -----.                 -###############
###########-                         #=-.                                                            .-----     -----.                 -====###########
#############=                                                                                                               =#########.    -##########
###############=                                                                       ..-.                                  =#########.    -##########
#################=              .====-.         ....----====###################     =####.           =#####     #####=            #####.    -##########
###################=..-==####= =========    =##################################     =####.           =#####     #####=            #####.    -##########
#############################. =========.    ##################################     =####.    -##.   =#####     #####=   =##-     #####.    -##########
#############################- -=======-     ############################=     ##########.    -######      #####      ######-     #####################
##################################  .===-      #############################=     ##########.    -######      #####      ######-     #####################
##################################-.     .################################=====##########====-#######======#####======#######=====#####################
#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
#######################################################################################################################################################
董子航 2026 年 6 月 2 日——第 77 天,继续开发,继续前进

BPM检测器、圆形裁剪、视频截图及架构重构

新工具
  • BPM检测器 —— 可上传任意音频文件(MP3、WAV、OGG、FLAC、M4A),在浏览器中即时检测其节拍。功能包括波形可视化、节拍标记、点击验证节拍、带可定位进度条的音频播放,以及完整的文件信息展示。基于Joe Sullivan / BeatDetect.js算法,结合OfflineAudioContext和带通滤波技术。100%隐私保护——无需上传至服务器。
  • 圆形裁剪 —— 将任意图片裁剪为完美圆形,背景透明。可拖动重新定位,滑块调整大小,一键下载为无损PNG格式。支持JPG、PNG、WebP、BMP、GIF。
  • 视频截图 —— 可逐帧浏览任意视频并截取无损高清截图。功能包括时间轴滑动、播放/暂停、上一帧/下一帧导航(自动识别帧率),并可导出为PNG、JPEG或WebP格式,分辨率与原视频一致。键盘快捷键:空格键(播放/暂停)、方向键(逐帧前进/后退)、Ctrl+S(截图)。支持MP4、WebM、MOV格式。
架构
  • 相关工具动态加载——将 70 个工具页内联的 var tools=[...] 数组统一为 assets/data/tools.json + assets/js/related-tools.js。新增工具只需更新一个 JSON,不必修改 70 份 HTML。
  • 变更日志弹窗 → 直接链接 —— 底部变更日志图标现在直接跳转至changelog.html,不再弹出过时的硬编码弹窗。
  • 节假日搜索UX —— 将实时过滤功能替换为按钮或回车触发的搜索,新增搜索覆盖层动画、自定义清空图标,并实现结果自动滚动。
网站全局
  • 工具数量已更新为66至69,覆盖所有页面:index.html、manifest.json、404.html、status.html、changelog.html、blog/stories.html、blog/what-is-toolknit-free-online-tools.html、blog/index.html、llms.txt。
  • 视频截图功能已添加至:首页卡片、搜索索引、tools.json、sitemap、service worker预缓存、public-stats.php、中文翻译、博客文章、博客首页,以及「什么是ToolKnit」的概述页面。
  • 服务工作线程缓存提升至v65;zh.json缓存提升至v35。
  • 修复了status.html、changelog.html、blog/stories.html、blog/what-is-toolknit-free-online-tools.html、llms.txt和index.html JSON-LD文件中发现的工具数量不一致问题(66/67/68 → 69)
Bug 修复
  • 部署文件覆盖问题 —— 修复了关键的SCP部署错误,即blog/index.html覆盖了根目录下的index.html,而blog/video-screenshot.html覆盖了tools/video-screenshot.html。根本原因:将多个文件通过SCP复制到同一目录且文件名完全相同。现已改为逐个部署文件,并完整指定目标路径。
  • 工具页面模板合规性 —— 视频截图页面缺少标准模块(如何使用、为何选择、技巧提示、相关工具标题栏、完整页脚,以及auth/main/footer-modals/sound-effects脚本)。所有部分现已完全符合circle-crop.html模板要求。
  • 技巧提示行间距问题 —— 已将<strong>标签替换为<span style="color:rgba(255,255,255,.55);font-weight:600">,以避免技巧列表中出现不自然的换行。
开发者的话

三天没有更新——这不符合我的风格,但确实发生了。让我告诉你原因。

首先,我最近精力不足。情绪上我一直感到低落,因为我意识到我的女朋友似乎不太愿意和我交流。但今天我找到了一个能解释一切的术语:情绪忽视型人格。她属于这种类型。我在网上看到很多人描述过同样的经历,这帮助我释怀了困惑——并不是她变了,她一直就是这样的。蜜月期的温暖可能是例外,如今我们已进入稳定期,我能够接受这一点。我会慢慢帮助她改变。两个人都需要适应并彼此融合,才能走得更远。无论如何,我非常爱她,希望我们能继续携手前行。

其次,我的IDE订阅价格上涨了。这很难接受,目前我还没有找到更便宜的替代方案。我正准备放弃使用它,转而用其他IDE来编写ToolKnit。但我承诺,绝不会连续缺席超过七天。今天心情不错,所以为你们额外发布了几个新功能!

如果你有什么功能需求,可以尝试发邮件给我——我会认真回复每一位写信的用户。

还有一件事:自 5 月 6 日左右开始匿名统计以来,总使用次数终于超过 1,000。对一个新网站是很大的里程碑,谢谢大家使用我写的工具,让生活轻松一点。

虽然道路漫长,但坚持走下去终会抵达目的地;虽然任务艰难,但坚持去做终会取得成功。

董子航 2026 年 6 月 1 日——第 76 天,继续开发,心怀感激

CSV图表制作器上线,像素艺术预设与导出优化

新工具
  • CSV图表制作器 —— 可直接在浏览器中粘贴CSV或电子表格数据,将其转换为柱状图、折线图、面积图、饼图、甜甜圈图、雷达图或散点图。
  • 图表导出流程 —— 可下载清晰的PNG图表,支持复制图表图像,保存JSON配置,或导出一个独立的交互式HTML预览,图表数据会本地嵌入,无需上传。
  • 图表自定义功能 —— 可自由调整标题、副标题、坐标轴标签、图例、网格线显示、堆叠柱状图、散点图映射、雷达图形状、颜色以及示例数据集,无需向服务器发送任何信息。
  • 长尾SEO优化 —— 页面现在针对更具体的关键词,如CSV图表制作器、在线将CSV转为图表、电子表格图表制作器以及交互式HTML图表导出,而非仅追逐广义且竞争激烈的图表类关键词。
像素艺术
  • 像素艺术转换器升级 —— 增加了更多创意预设,超越了原有的复古游戏机风格:PICO-8、DB16、Sprite、Portrait以及Neon。
  • 预设行为优化 — 每个预设现在都自带独立的分辨率、调色板或色彩数量、饱和度、对比度、细节增强、抖动、轮廓线及轮廓强度设置,从而实现更实用的一键生成效果。
  • 预设后更精细的控制 — 新增了对抖动、轮廓线、网格、饱和度、对比度、细节增强和轮廓强度的可见调节控件,用户可以在保持预设风格的同时,灵活调整输出结果。
  • 预览与导出优化——保持清晰像素渲染,提供调色板预览,按住可对比原图,支持普通 PNG 与 4 倍高清下载。
漏洞修复
  • 独立 HTML 语法修复——解决环形图标签格式化函数在导出的 HTML 中生成非法换行符的问题。
  • 本地预览噪声减少 — 图表生成器在file://或本地预览环境中不再加载manifest和分析脚本,有效减少本地测试时无关的浏览器控制台错误。
  • 浏览器翻译干扰降低 — 在工具页面和导出的HTML预览中添加了notranslate元数据,避免本地文件在翻译层上产生不必要的警告提示。
用户界面 / 用户体验
  • 移动端布局优化 — 在小屏幕上,预览面板先于控件显示,坐标轴和散点控件堆叠更清晰,摘要卡片布局更紧凑,图表高度在移动端适配更佳。
  • 全局引用更新 — 首页、搜索页、网站地图、服务工作线程、状态元数据、公开统计标签、manifest、发布文档以及站点概览页面,均已将图表生成器列为第66个功能页面。
  • 首页发现性提升 — 图表生成器被加入到创意类别、首页CTA区域、中文首页翻译、站点搜索关键词以及ToolKnit概览文章中。
  • 服务工作线程缓存版本提升至v60
开发者的话

距离上一次ToolKnit更新已经有一段时间了,但我从未忘记这个网站。我最近大部分精力都投入到了另一个新项目24picture.com,因为新网站在初期需要大量细致的维护。同时我还有全职工作,需要维护一段远距离关系,而我只有一个大脑去协调这些事情的运转。

我又一次体会到,即使一个人可以思考很多方面,但同时尝试做所有事情通常会让行动变得混乱。因此,我正在更真实地规划时间:白天工作,照顾我所爱的人,身体需要休息时就休息,然后在夜晚安静时回归创作。

最近我因为连续熬夜感到有些疲惫,但今晚我还是回来了,并交付了一个有用的新功能:一个全新的图表生成器、更优质的本地HTML导出、更安静的本地预览,以及移动端的修复。这并不是一次大型企业级发布,只是一个人在深夜再次出现。

我希望ToolKnit能持续帮助那些在需要时,拥有一个简单、免费工具的人。请善待自己,希望每一天都能至少带来一个微笑的理由。

董子航 2026 年 5 月 28 日——又一次深夜更新,继续开发

工具页面整理、状态分析修复及隐私安全加固

漏洞修复
  • 第 1 批工具页修复——补齐页脚闭合标签,恢复 aim-trainer.html 隐藏的功能区,修复 reaction-time-test.html 历史图表并纵向排列方法卡片,加强 what-to-eat.html 激活标签高亮。
  • 旧相关推荐清理——统一 15 个工具页的你可能还喜欢/相关工具模块,删除重复遗留区块,对齐当前黑白模板。
  • 使用说明覆盖——为 daily-planner.html、extract-text.html、flip-image.html、gradient-generator.html、markdown-editor.html 和 text-diff.html 增加清晰的三步 How it works 说明。
  • 状态页总数统一——修复按公开的 5 月 6 日统计起点计算时,total 却超过 last30 的不一致。public-stats.php 现只汇总自 2026-05-06 起的公开统计窗口。
  • 统计覆盖补齐——在 holidays.html 补上缺失的 tracker.js 信标,覆盖全部 65 / 65 个功能页的匿名页面加载统计。
隐私保护
  • 统计存储加固——track.php 不再把原始 IP 或稳定访客 ID 写入每日文件,ips 和 uvs 均改存按日作用域生成的 SHA-256 哈希。
  • 历史分析数据已清理完毕 —— 已批量迁移现有每日JSON文件,用哈希值替代了旧的原始数据。清理过程将650原始IPv4、181原始IPv6、763原始UID以及2旧MD5条目替换,并保存了清理前的服务器备份作为analytics-backup-20260526-status-scrub.tgz。
更新
  • 模板一致性得到提升 —— 工具页面在主界面、说明内容和相关导航模块之间的中段结构上更加统一。
  • 状态说明已明确 —— 公共状态页面现在一致地将这些计数器描述为访问量 / 页面加载次数,而非工具使用次数,与实际的页面加载信标模型保持一致。
  • 发布文档更新——toolknitSkill.md 记录固定的公开统计起点、65/65 覆盖、哈希存储规则与历史清理基线。
  • 服务工作线程缓存已提升至v56

长尾博客扩展、结构优化及首页页脚修复

新博客文章
  • 在线闪卡制作器免费 —— 一个长尾学习指南,涵盖卡片正反面制作、翻面复习、测验模式、CSV/TXT导入、JSON备份以及私有localStorage卡组。
  • 在线签名制作器免费 —— 一个实用的透明PNG签名指南,可用于在PDF、表单、文档和邮件流程中手绘或输入签名。
  • 免费在线节拍器——讲解 BPM、点击测速、拍号、细分节拍,以及吉他、钢琴和鼓的练习方法。
结构化数据
  • 节日 Event 标记清理——/holidays/ 下 15 个国家页从 Event 富结果标记改为 CollectionPage + ItemList,更符合国家节日目录的内容性质。
  • 工具结构化数据规范——从 64 个工具页删除无法核验的 aggregateRating,新增 BreadcrumbList,使模板结构更准确。
  • 博客结构化数据规范——为 74 篇博客添加 BreadcrumbList,首页 SearchAction 对齐实际 ?q= 搜索流程。
漏洞修复
  • 首页页脚分类功能已启用 —— 页脚分类链接现在会滚动回到工具库,应用对应筛选,并将激活的分类标签居中显示,而不再仅更改URL哈希。
  • Sell With Boost 徽章——按要求在首页页脚添加徽章,使用提供的允许搜索引擎跟随的链接格式。
更新
  • 内容库更新——博客目录、地图、首页内容弹窗及发布文档同步为 103 项资源:65 篇指南、9 篇工具故事、29 条更新日志。
  • 发布文档已更新 —— toolknitSkill.md现在记录当前结构化数据基准线、节假日目录规则、工具/博客面包屑要求以及页脚交互修复。
  • 服务工作线程缓存已提升至v51

记忆卡片制作器上线及签名生成器预览功能修复

新工具
  • 记忆卡片制作器 — 创建正反面学习卡片,翻阅卡片集,随机打乱复习顺序,并通过「揭示」加上「再次」「良好」「简单」的自我评分进行自测。试用 →
  • 私密学习工作流 — 卡片集自动保存至本地存储(localStorage),支持导入CSV/TXT配对文件,可导出JSON备份文件,使用空格键加方向键快捷键实现快速复习。
漏洞修复
  • 签名生成器预览对比度优化 — 在绘制或输入模式下选择黑色墨水时,预览区域现在切换为白色背景,以确保签名在编辑过程中始终清晰可见。
  • 透明输出保持不变 — 白色背景仅用于视觉预览;下载或复制的PNG格式签名仍保留透明背景。
  • 首页内容数更新——计入本条日志后,首页文章/资源总数为 99。
更新
  • 工具库更新 — 首页、搜索、统计、站点地图、清单文件、服务工作线程及相关工具池中,均显示65总工具数量,创意类工具更新为19个。
  • 服务工作线程缓存提升至v47

签名生成器、节拍器、首页优化及SEO全面检查

新工具
  • 签名生成器 — 可用手绘签名(鼠标、触控或笔触)或在优雅的连笔字体中输入姓名。可下载为透明PNG格式,用于文档、合同和邮件。支持可调节笔触大小和墨水颜色,支持撤销操作,支持复制到剪贴板。试用 →
  • 节拍器 — 免费在线节拍器,支持从30到300 BPM的节拍调节,六种节拍类型(2/4至7/8),可设置分音(8分、16分、三连音),支持点击设定节拍,四种声音类型。基于Web Audio API构建,采用前瞻调度器实现亚毫秒级时间精度。试用 →
搜索引擎优化
  • 页面 SEO——依据 SEMrush 的 233 个跟踪关键词,为 9 个高流量页面重写 title、描述和 H1,优先把搜索量高的目标词放在前面。
  • 页面性能优化: CPS测试、随机旋转器、字符计数器、瞄准训练器、白板、WebP转PNG、键盘测试器、骰子掷骰器、反应时间测试
  • 常见问题FAQ结构化数据修复 — 从「提取文本」工具中移除了重复的FAQPage结构化数据(解决了Google搜索控制台「字段重复」错误)
  • 拒绝外链文件——创建含 120 多个垃圾/PBN 域名的 disavow.txt,供向 Google 提交。
更新
  • 工具总数:64(音频类别现在包含3个工具)
  • 首页统计数据优化 — 替换了重复的可见工具数量计数器,改为更清晰的64工具总数、可点击的98资源文章数量弹窗、8分类,以及基于3月18上线日期动态计算的稳定运行时长。
  • ToolKnit吉祥物添加 — 在工具库卡片上方添加了一个微小的4帧蜘蛛精灵动画。该动画使用CSS精灵帧实现正向和反向循环,移动端隐藏,仅占用416字节。
  • 记忆卡片制作器规划 — 记录了5月24的下个工具路线图,包括本地存储卡片集、翻页学习模式、自测模式以及CSV/TXT的导入导出功能。
  • 服务工作线程缓存提升至v43

AI转PNG及第二里程碑版本

新工具
  • AI转PNG —— 一个基于浏览器的Adobe Illustrator文件转换工具,支持PDF兼容模式。可将AI文件本地导出为PNG格式,预览每一页或每个画板,并可下载单张图片或打包为ZIP文件,无需上传任何资产至服务器。
新博客文章 里程碑
  • 我的第二个独立项目现已上线 —— 今天正式推出一个专注于图像的独立项目。它最初围绕AI图像生成展开,未来可能会逐步发展为一个独立的图像工具箱,与ToolKnit并行发展。
  • 发布信息已更新 —— 博客首页、站点地图、服务工作线预缓存、首页计数器、公开统计命名以及发布文档,均已更新以包含AI转PNG功能的上线,以及每日结束时IndexNow工作流的结束。
开发者的话

国内现在是 5 月 19 日,已经连下几天雨。最近心情很好,更新节奏慢了一点,但今天仍抽空发布了很想做的 AI 转 PNG。

我特别喜欢这个功能,因为它自然地融入了整个网站的结构。先将Illustrator文件转为PNG,如果需要透明背景,再使用背景移除处理。这是一个简单的工作流程,但对标志、图形、贴纸以及快速交付的素材来说,非常实用。

今天也标志着另一个个人里程碑:我的第二个项目正式上线。它过去更侧重于AI图像生成,但最近我开始思考,将其发展为一个更专业的图像工具箱或许会更有趣。ToolKnit将保持广泛的功能,另一个网站则可以更专注于图像处理。两个独立的网站,同时并行发展——这让我感到非常开心。

生活挺好,我在认真工作、认真写代码,努力每天都在。明天是 5 月 20 日,提前祝大家与爱的人好好度过这一天。

我们依然在,而且会继续建设。

董子航 2026 年 5 月 19 日——雨季,仍是美好的一天

首页简化

用户界面 / 用户体验
  • 移除独立首屏横幅——工具库卡片成为首屏主体,用户不必滚动就能进入工具。
  • SEO保持不变 —— 将工具库标题从<h2>提升至<h1>;所有元标签、Open Graph和结构化数据均保持完整。
  • 内容加宽——有效宽度从 1200px 增至 1500px,在 ≥1440px 屏幕使用 4 列工具网格。
  • 导航栏优化 —— 每侧增加了25像素的内边距,以提供更舒适的视觉空间;指示器按钮现在等待fonts.ready后才进行测量,以修复首次访问时的宽度异常问题。
  • 搜索框对齐 —— 统一了所有容器的max-width和内边距,使搜索栏、筛选条和工具网格共享相同的左右边界。
  • 语言切换修复 —— 修复了切换语言时restoreAll()会错误地将data-label解析为textContent的问题。
  • 完整中文翻译——工具库引导文字、标题、描述及四个统计标签均可正确翻译;为 i18n.js 和 zh.json 加入 ?v=32 缓存版本参数。
开发者的话

今天只做了一件事:重新设计首页。白天和晚上都没睡好,脑子几乎转不动,能完成这一轮界面调整已经是极限。

彻底移除大块首屏横幅,打开首页就能看到工具卡片,不必先滑过装饰区。内容加宽到 1500px,宽屏不再浪费空间。也修好了切中文再切英文后图标消失的问题,原因是 restoreAll() 把 data-label 当作 textContent;一个条件判断就解决了。

计划接下来休息两天,好好补觉,让大脑恢复,然后继续优化。网站不会下线,只是暂时放缓更新节奏。

健康第一。晚安。

董子航 2026 年 5 月 19 日——凌晨 00:30,困得睁不开眼,终于完成

剪发与家务版

搜索引擎优化与基础设施
  • 反向链接拒绝——已识别并提交63垃圾/PBN域名至Google搜索控制台和Bing站长工具的拒绝列表。合并了此前四月审计中发现的14域名。
  • 首页 URL 规范化——在 6 个根目录页面把 href="./" 改为 href="/",让链接指向同一规范地址。
  • Nginx重写规则——新增了www → non-www 301、/index.html → / 301(使用$request_uri避免索引指令循环),以及/blog/tools/* → /tools/* 301用于处理失效的外部链接。
  • 元描述审核——将21页面(包括8工具页和13博客文章)从161到180字符缩短至不超过155。发现并重写了3博客页面(percentage-calculator、markdown-editor、unit-converter),其描述内容误用了番茄钟计时器模板的复制内容。
  • 标题标签审核——将15博客文章标题从71到86字符缩短至不超过60,以避免在搜索结果中被截断。
  • 关键词优化——重新撰写了whiteboard(现在以“在线白板”开头,更符合搜索词)、keyboard-tester(缩短至56字符)以及webp-to-png(描述中已包含精确搜索词并加入隐私角度)的标题和描述。
开发者的话

在16日没有发生什么重大变化。我剪了头发——还好,不算灾难,只是久违了。这就像网站的元描述和标题标签一样:它们变得太长,需要修剪。所以今天我也把它们都剪短了。

我仍在想我的宝宝。说实话,每一个清醒的时刻都在想她——即使我在读正则表达式、数字符长度。我想见她,但今天没有安排,哈哈。明天晚上见。其实严格来说,现在已经是明天了——我写这段时已经过了午夜。

下班晚了半小时。回家后吃了饭,剪了头发,玩了点游戏,然后来到这里优化ToolKnit。邮件订阅功能还没接入,但很快就会上线。我需要一小群忠实用户来参与新功能的内测——如果你觉得像这样,欢迎发邮件给我。我很期待听到你的声音。

最近开发工作很疲惫,更新节奏可能会稍微放慢一些——但我始终会在这里。这个项目不会停止。

夜深了,我还在想她。她太可爱了,写代码、部署、写手记时都会想起她。不过今晚下班就能见面,光是写到这里,都想把这一天快进。

好了。当你读到这段时,我已经部署了新版本,并推送了IndexNow。我的大脑需要休息了。晚安,感谢你阅读。

董子航 2026 年 5 月 17 日——凌晨 1 点,刚剪完头发,心里仍满是她

世界节日版

新功能 新博客文章 改进
  • 首页浅色模式切换——右上角新增太阳/月亮按钮,切换深浅主题;偏好保存在本机,新节日页面也会采用。
  • 浅色模式优化(工具列表下方) —— 架构、本地沙箱、行动号召(CTA)及页脚区域均进行了全面的浅色模式配色调整。本地沙箱终端卡片在浅色模式下保持深色(终端应看起来像终端),其悬停状态也不再破坏界面
  • 站点地图、llms.txt、service-worker —— 均已更新以包含 17 新增的 URL。缓存版本已提升至 toolknit-v27
开发者的话

如果你读了上一条,你就知道我曾说过要见她。我向你承诺要诚实,所以这里直接说清楚: 我们重新在一起了。

我开车过去,不知道会遇到什么情况——我脑子里反复演练了十几种开场白,到电梯门打开时却全都忘了。她已经站在那里了。还没等我说出一句话,她就走过来,把我拥入了一个她曾经给过我最深的拥抱。就这样,整个对话就结束了,之后的一切只是进一步确认

我们聊了几个小时。聊了发生了什么,聊了过去几天我们各自背负的困扰,聊了那些在 2 AM 文本中看起来巨大,但一旦当面说出来就变得微不足道的事。我思念她,她也思念我。结果发现,一个面对面的下午就能解决两周的屏幕交流、自尊和沉默无法解决的问题。也许这就是从这段经历中唯一值得吸取的教训:如果重要, 就去见他们。不要发消息,不要等待,要直视他们的眼睛

我爱她。我不想失去她。我没有失去她。关于这件事,我只说这么多——这是一份变更日志,不是日记,她值得比一个公开网页能给予的更多隐私

工作上,今天发布全球节日日历:122 个国家、3,469 条节日,一个汇总页、15 个国家页、一篇阅读约 11 分钟的博客,统一新页面页脚,还加上大家一直想要的首页浅色模式。发布顺利,我很满意。

我本该昨天就发布这个更新并写下这封信,但前一天晚上我几乎没睡——是紧张所致;昨晚我也没睡好,原因正好相反。当你太开心以至于闭不上眼时,就会有一种特别的疲惫感,我已经持续了大约三十六个小时了。所以,我会把这封信写得简短些。

明天我将开始开发邮件订阅功能——你只需在变更日志底部的输入框里填写你的邮箱地址,每当有新内容发布时,你就会收到一封邮件提醒。没有营销,没有追踪。只是在新功能上线时给你一个简单的通知。虽然需要几天时间来实现,但不会违背‘无服务器’的承诺,我会想办法搞定。

感谢你们阅读。真的,有些朋友从早期的键盘故障、烧烤失败、植物园经历,到一次非常糟糕的夜晚,一直陪伴到现在。希望这次能稍微平衡一下账目。

现在要睡觉了。这次是真正地睡个好觉。晚安。

董子航 2026 年 5 月 15 日——午夜,眼皮快撑不住了

植物园版

新博客文章 改进
  • 博客索引更新 — 计算器工具分类现在列出了5篇文章(此前为3篇)。每一个已发布的60工具都对应一篇博客文章。覆盖范围:完整。
  • 网站整体一致性检查 — 检查了所有60工具页面,修复了剩余的<section>属性异常,并确认了‘专业小贴士’列表在全站范围内均能正确显示。
开发者的话

我昨天没有写这篇日志。我写不了。昨天是她拒绝之后的第二天,是我删除了她的联系方式之后的第二天,是我没吃晚饭就上床睡觉的第二天。我需要在那晚和键盘之间,留出一段缓冲时间。

所以,在12日的早晨,我独自开车去了植物园。

季节不对。我原本想象的是花色——郁金香、牡丹,任何开花的植物——但花坛大多是绿色,小径半空,山茶花也早已过了盛花期。我绕了一圈,渐渐感到寂静比树木更沉重。于是,我只能做一件事:我给朋友发了消息,问他能否来陪我。他一个小时后就到了,没有任何问题。这就是你一生中该珍惜的朋友。

我们漫无目的地走了几个小时,聊了些不重要的事。走了一条不该走的路。某时刻我们抬头,才发现自己已经完全走出植物园,穿过一个我们都不记得经过的门,站在一条郊区小路上,一边是田野,另一边是仓库。没有共享单车,也看不到公交站。只有两个男人,非常迷路,非常疲惫,却在笑,因为除此之外,你还能做什么?

我们叫了出租车。司机花了二十分钟才找到我们。我的手机显示18,427步数。我的双腿也同意了。

然后我们犯了一个最后的错误:试图靠吃东西来缓解。我们找到了一家看起来不错的烧烤店。毫不夸张地说,这是我成年以后吃过的最差的串。外焦里生,像有人怀恨在心一样被腌过。我们还是吃了,因为我们已经配得上一个彻底糟糕的一天。

那天晚上回到家,我直接躺上床,突然意识到一件事:这一天很混乱,季节不对,食物很糟糕——但我感觉还不错。不是快乐,也不是痊愈,只是……比前一天轻松了一些。有时候,这可能就是一天该做的全部。

然后,今天,13日,我的手机亮起了她的名字。

她想见我。明天。

我还不知道该如何理解这一切。我不知道她会说什么,我该说什么,我们是真正地在修复什么,还是只是为一段关系画上一个合适的句点。但我知道一件事:我不会让骄傲、恐惧,或者一次糟糕的夜晚的记忆,让我错过最后一次直视她眼睛的机会。

我不想再次失去她。 如果存在某种我们能共同维系的关系,我必须以面对面的诚实去探寻——不是通过屏幕,不是通过沉默。

所以今天更新很简短。两篇博客文章。一个里程碑——ToolKnit上的每一个60工具现在都配有详细的书面指南。一个安静、平和的发布日。没有头条新闻,却对真正使用这个网站的人们至关重要。

明天是属于她的。今晚是完成这篇记录、提前关掉电脑、努力入睡,不再在脑海中反复演练每一个可能的句子。

如果你正在读这段文字——感谢你一直坚持阅读这些长而极其个人化的更新记录。我开始这样写,是因为在沉默中发布软件让我觉得不真诚,也因为我的内心深处,始终需要有人知道,我这个真实的人,其实就在部署的另一端。后来发现,这个‘人’会哭泣,会迷失在植物园里,会吃上一顿糟糕的烧烤,但第二天依然会准时提交代码。

祝我好运。

董子航 2026 年 5 月 13 日——晚上 11:30,见面前一夜

休息日特辑

新工具
  • 小费计算器 —— 计算小费金额、总账单以及人均分摊。支持自定义小费比例滑块、快速选择预设按钮,以及多人用餐时的即时明细展示。
  • 按揭计算器 —— 提供月供估算,包含本金与利息明细、完整的还款计划表,以及可交互的图表。支持自定义首付、利率和贷款期限。
新功能
  • 首页中文翻译——首页新增多语言支持,右上角“中文”按钮切换全部可见文字。默认英文,偏好保存于 localStorage。
  • 语言切换按钮——位于博客/工具故事链接旁,一键切换,跨会话保存偏好。当时不改变 title、meta、JSON-LD 等 SEO 元素。
设计
  • 首屏动态文字——新增七行工具名、格式、动词与品牌理念组成的滚动背景,以不同速度交替滚动,采用纯 CSS 动画,无 JavaScript 开销,设计目标为 60fps。
  • M 形布局遮罩——滚动文字通过 CSS mask-image 渐变仅显示在内容左右两侧,边缘自然淡出,中央内容保持清楚无遮挡。
清理工作
  • 移除了实验性的WebGL流体渐变、折射光和粒子效果脚本。动态文字动画方案胜出——更轻量、更简洁,也更符合品牌调性。
  • 清理了本地和服务器端的hero-fx.js和hero-particles.js。
开发者的话

今天是休息日。没有设计工作室,没有草图,没有加班。我主动休了,不是为了身体,而是为了某种更沉重的东西。

大约在三月份我开始构建ToolKnit的时候,我遇到了一个女孩。她是一位客户——她公寓的装修是通过80%完成的,那天晚上她是在11点之后联系我的。我以为她只是想修改平面图。她想和我聊天。

我们连续聊了两周。她来自郑州,比我还大四岁,是回周口探亲。我是个在现实中见到人时会瞬间僵住的人,但我克服了焦虑,去了见她。结果——非常轻松。我们吃了顿饭,第二天一起看了场电影。一切都感觉很对,是我从未体验过的感觉。我从未如此喜欢过一个人,也从未如此想念过一个人。

她四月底离开,我们每天联系。她说想认真对待关系,不想随意,我完全尊重。我只提了一个请求:5 月 1 日回来时,能不能一起安静待一天,什么都不做,好好歇一歇。她答应了。

昨天她回来了,却告诉我她做不到。她的手机有定位追踪,家人会看到。我理解这一点——我确实理解。但真正让我崩溃的,不是拒绝本身,而是时机。她几周前就已经答应了。我一直在倒数,把那个小小的承诺像一盏灯一样,带过每一个疲惫的班次。如果她当初直接说不,我早就释然了。我本会理解。

相反,我昨天晚上独自在房间里哭了。她没有安慰我,反而说我不该当初就提出这个请求。然后,那句话刺穿了我:‘我觉得我还不算你的女朋友。’

我问那我们是什么关系。她说:“正在了解中的人。”

我带着泪水做出了决定,用颤抖的手在手机上敲下文字。我告诉她,这段关系结束了。她没有同意,也没有反对,只是——沉默了。冷淡了。她曾经告诉我,分手后应该断绝联系。所以我删掉了所有内容。

我昨天跳过了午餐和晚餐,晚上9点睡觉。今早醒来,没有任何消息。我想,这大概就是我最害怕的结果。

我真的很喜欢她,喜欢她的性格、说话方式,以及她让我这个焦虑的 21 岁年轻人,多年来第一次感到安稳。只见两次就深陷其中。但她从不主动分享吃了什么,不问就不发照片,三周只发来三个视频。想一个人却几乎没有什么可回看的,你知道是什么感觉吗?

她从未理解我如何去爱。也许这没问题。也许有些人表达方式不同,或者根本不会表达。但我无法继续把心投入一个只回以沉默的关系里。

所以今天我休息了,也写了代码。发布了两款新计算器。制作了一个动态文字背景,我其实挺自豪的。在首页加上了中文,因为——毕竟,我来自这里,今天也像一个值得纪念的日子。

我在这里写下这些,因为几乎没人会读变更日志。这是互联网上最安静的角落。如果你在读这篇文章,你要么非常细致,要么非常无聊——无论哪种,谢谢。有时候,你只需要把话说出来,而变更日志比日记更真实。

致郑州的女孩:真心希望你能找到想要的。也希望有一天你明白,那个哭着睡着的男孩要得并不多,只是安静相处的一天,和你的一点真心。

董子航 2026 年 5 月 12 日——下午 2:10,休息日

加班与停电特别版

新工具
  • 每日计划表——一款美观的周计划表,支持自定义时间槽、拖拽任务、像素级PNG/PDF导出,基于Canvas 2D API开发。包含常见问题解答部分。
  • BMI 计算器——计算身体质量指数,切换公制/英制,显示 WHO 分类刻度、颜色结果和参考体重范围。
  • 时间戳转换器——Unix 时间戳与可读日期双向转换,自动识别秒/毫秒,并有实时走动的时钟。
  • 文本对比——并排比较两个文本,支持行级和字符级差异高亮。提供新增、删除和未变行的摘要条。
  • 图片翻转与旋转——水平或垂直镜像,旋转90°/180°/270°。基于Canvas API开发,支持JPG、PNG、WebP等多种格式。
  • 渐变生成器 —— 可视化CSS渐变构建工具,支持线性/径向模式、多色段颜色选择器、角度调节、预设库以及一键生成CSS代码。
改进
  • 每日计划导出重写——用直接 Canvas 2D 渲染替换 html2canvas,改善像素对齐、偏移和 CSS 渲染差异。经验是:有简单方案时,就用简单方案。
  • 每日计划 FAQ——新增结构化问答及 JSON-LD,当时用于支持搜索富结果。
  • 动态计数——博客文章、分类、故事、首页工具及状态页工具/分类数均从 DOM 动态计算,减少忘记更新固定数字的问题。
  • 状态页 DR 徽章——当时 Ahrefs Domain Rating 为 29,与运行时间统计一同显示在首屏卡片。
  • 合作链接——在 132 个页面页脚加入商务与合作咨询入口。
新博客文章 修复
  • 修复了每日计划导出的渲染问题——徽章、日期数字和分隔线在PNG和PDF输出中现已完美对齐。
  • 修复了博客首页错误显示51篇文章的问题,实际数量为52 —— 根因是硬编码数值。现在这一错误已不可能发生。
  • 修复了状态页中硬编码的“58工具”和“8分类”问题——现已通过search.js动态获取。
开发者的话

今天老板让我加班到很晚。连续五个小时在设计工作室里弯着腰,盯着那些根本不是我设计的草图,而时间却悄悄过了6点——本该离开的时间。我最终在7离开。直到你意识到那一个小时,其实是你与真正想做的事之间的间隔,才觉得它并不短。

回到家。放下包。打开笔记本。手指落在键盘上,终端已准备就绪,脑海里已经开始整理今晚的待办事项……

然后,停电了。

我坐在黑暗中大约四秒钟,心里已经构思好一条戏剧性的抱怨推文。接着——啪——灯重新亮了。屏幕亮起,光标闪烁。我将其视为一个信号:今晚的更新一定会是个好版本。

今天上线了六个新工具,发布了七篇新博客文章。每日计划导出引擎彻底重构——完全移除了html2canvas,因为我终于承认,任何重写CSS的库都无法媲美浏览器本身对CSS的实现。改用原生Canvas 2D API调用,实现像素级精准、零偏移。有时候,最简单的解决方案,恰恰是应该最先选择的。

随后我开启了一次全面的计数行动。网站上每一个硬编码的数字——“51篇文章”、“58个工具”、“8个分类”——全部被替换为通过JavaScript动态计算实际DOM元素数量的代码。新增一个工具卡片?首页显示59+。发布一篇博客?计数器显示59。再也不用在三个文件中忘记更新数字了。

今晚,所有132页面的底部新增了合作链接。状态页新增了DR 29徽章——由Ahrefs验证。我每天会检查我们的回链数据大约三十次。这并不健康。但每一个新增的外部引用域名,都像是有某人注意到了我们正在构建的东西,那种多巴胺的快感,甚至比咖啡还强。

如果 ToolKnit 曾帮你省下五分钟,或免于安装另一个可疑的桌面软件,请把它告诉别人。写在博客里,分享至 Reddit,推荐给还会给自己发邮件传 PDF 的朋友。每一次推荐,对独自深夜写代码的人都意义非凡。

现在已经过了午夜。明天闹钟会在 7:30 唤醒我,我将回到那个设计工作室,假装自己没有熬夜到 1 点,还在拼命把 CSS 推送到服务器上。但看看今晚都完成了什么:五个工具,七篇博客,一次完整重写,一次全站动态计数的优化,还有一场恰好持续足够长的断电,让它成了一个绝佳的故事。

值得。

董子航 2026 年 5 月 11 日 00:45

50+ 工具 —— 午夜里程碑

新工具
  • 单位转换器 —— 8 类别:长度、重量、温度、面积、体积、速度、数据与时间。双向实时转换,内置转换公式。
  • 百分比计算器 —— 三种模式:“X% 的 Y”、百分比变化、“X 是 Y 的百分之多少”。结果颜色标注。
  • Markdown 编辑器 —— 侧边栏实时预览,基于 marked.js。可导出 .md 文件,复制 HTML,查看字数、字符数、行数统计。
新增类别
  • 推出了 计算器工具 —— 一个全新的类别,包含年龄计算器、单位转换器和百分比计算器。首页和博客中设有专门的筛选标签。
更新
  • 工具总数更新为 52,覆盖所有页面。服务工作线缓存升级至 v18。
  • 发布了所有 3 新工具的博客文章。博客文章总数现为 51 篇。
  • 全站编码修复——修复 46 个工具页的破折号乱码(&#xFFFD;)。
  • 首页统计卡片已修正,与实际分类数量一致。

又是凌晨 00:30。房间安静,屏幕是唯一的光,终端光标像心跳一样闪烁。

五十个工具。还记得三月做第一个 PDF 压缩页时,紧张地把它传到自己都不太会配置的服务器。现在是五十二个,每一个都写在别人沉睡、代码仿佛自行流淌的夜晚。

没人告诉我,独自创造更多时候是在用代码填满寂静。每次深夜部署、凌晨 3 点让人怀疑人生的 bug、偶然看到的日出,都成为作品的一部分。

今晚 ToolKnit 超过 50 个工具。没有发布会和新闻稿,只有我、批量 SCP 上传,以及让我反思编码选择的破折号乱码,倒也很贴切。

期待下一个五十。同一张椅子,同一间暗房,同样的信念:免费工具应该好用,无需注册、追踪和多余打扰。如果你也在午夜读这份日志,我看见你了。

——Zihang Dong,2026 年 5 月 9 日,00:30

7 新工具 —— 单日新增最多工具

新工具
  • 精美文本生成器 —— 20+ Unicode 字体风格。一键复制,适用于 Instagram、TikTok、Twitter/X、Discord。
  • 年龄计算器 —— 精确计算年龄(年/月/天/小时),星座,生日倒计时。
  • 打字速度测试——15/30/60 秒测试,记录 WPM、准确率和按键。
  • HEIC 转 JPG 转换器 —— 批量将 iPhone 的 HEIC 图片转换为 JPG。可调节质量,基于 WebAssembly 实现。
  • JSON 格式化与验证器 —— 格式美化、验证和压缩 JSON。支持 2/4 空格缩进、文件加载、剪贴板粘贴。
  • 商业账单生成器——创建账单并下载 PDF。当时提供 10 种货币、自动税额计算和不限行数的项目。
  • 番茄钟计时器 — 专注与休息周期,带会话记录、自动启动和音频提醒。
更新
  • 工具数量已更新为49,覆盖所有页面,服务工作线程缓存已升级至v17。
  • 已发布所有7新工具的博客文章。
  • 全站编码修复 — 修复了29文件中的损坏Unicode字符。

背景移除工具 — 基于AI的图像背景移除

新工具
  • 背景移除工具 — 使用完全在浏览器中运行的AI模型,一键快速移除图像背景。支持点击自动移除,或使用画笔和橡皮擦工具手动精细调整。支持JPG、PNG、WebP格式,输出为透明PNG。
  • AI模型(约40 MB)仅下载一次,并由浏览器缓存,以便后续立即使用。
  • 提供手动精修模式,支持可调节画笔大小、边缘柔化、撤销操作及键盘快捷键。
  • 全屏加载层在模型准备就绪前阻止用户交互。
  • 工具数量已更新为42,覆盖所有页面。

黑白重置 — 全站视觉与架构全面重构

重新设计 改进 修复

连续四晚,ToolKnit从内部彻底重建。整个网站的每一页——工具页、博客、法律条款、更新日志——均以统一、简洁的黑白极简语言重新设计。不再有漂移的蓝色、不匹配的绿色、意外的白色或杂乱的灰蓝色边框。只保留一个安静、一致的界面。

1. 41 个工具页

  • 整个网站的字体已切换为Space Grotesk,背景色为`#0a0a0a`。
  • 主视觉模式统一:点阵网格 + 柔和的靛蓝色光晕 + 返回ToolKnit的圆形按钮 + 博客/工具故事链接。
  • 旧的白色导航栏已全局隐藏(`display:none`)。工具图标、面包屑导航、功能标签均移至半透明白色层级。
  • 操作按钮统一白底与 `#111` 文字;进度条为白色填充、`rgba(255,255,255,.06)` 底色,滑块、开关和选择器全面换肤。
  • 提示、常见问题和功能模块已重构,采用统一的极简卡片系统:`.03`背景,`.06`边框,`.15`强调色。

2。残留的彩色扫尾部分

  • 将14不同品牌颜色的`rgba()`悬停/发光阴影(翡翠绿/琥珀色/紫色/橙色/粉红色/蓝色/青色/ teal/玫瑰色/红色/洋红色/黄色)替换为白色调,应用于所有HTML和JS代码。
  • 修复了Coin Flip、Dice Roller、Password Generator、Pixel Art Converter和Reaction Time Test中所有白色背景上的白色按钮,通过注入内联样式`background:#fff;color:#111`实现。
  • 将非标准的Tailwind透明度(如`/8`、双透明度如`border-white/8/60`)替换为正确的编译值,以避免纯白色退化渲染。
  • 清理了`assets/js/main.js`、`coin-flip.js`、`dice-roller.js`、`whiteboard.js`、`password-generator.js`、`color-picker.js`、`what-to-eat.js`文件中所有`slate-*`、`bg-blue-*`、`text-emerald-*`等遗留类名。

3。本会话的工具特定修复

  • 随机转盘——移除白框,紫影改白,修复生成按钮白底白字风险。
  • 向宇宙提问——结果与过程脉冲由紫光改为白光,历史卡片和图标改为灰度。
  • 键盘测试——绿色强调和白色分隔改为半透明白。
  • 白板——修复工具栏无效双透明度类,添加文字弹窗的蓝色改为墨黑。
  • 今天吃什么——餐次标签与结果卡片全面调整配色。
  • 字符统计、文本提取、占位文本——统一文本框、拖放区、分隔线和 FAQ 样式。
  • 秒表与倒计时——修复数字居中和暂停按钮不可见,统一预设标签与进度条。
  • 世界时钟——修复搜索框白底白字。
  • 二维码生成器——重做自定义卡片内边距、分隔线,以及生成按钮与章节分隔的间距。
  • 像素画转换器——用内联样式修正“按住查看原图”间距、仅在生成结果后显示的使用说明前分隔线,以及底部段落至下一章节的间距。
  • 抛硬币——黑白硬币恢复金色正面,让正反面保持可辨。
  • 掷骰子——点数恢复为 `#1a1a1a`,在白色骰面上清晰可见。
  • 密码生成器——长度输入与批量数量选择强制深底,采用白箭头 SVG,避免浏览器默认白底。
  • 颜色拾取器——调色板选择使用同样的深底与箭头样式。

4。博客界面重设计 —— 新的编辑语言

  • 博客目录——将 3 列彩色卡片改为编号列表,CSS 计数 `01, 02, 03…`,配粘性分类筛选、分组计数,悬停时条目轻抬且箭头按钮变白。
  • 工具故事——采用同一版式重建,首屏统计条显示 9 篇故事、涉及 9 个工具、无需注册。
  • 44 个博客文章页由统一 PowerShell 提取器重建:读取各文件标题、SEO 元数据、JSON-LD、H1、副标题、分类、正文和工具链接,再套用同一黑白文章模板。
  • 第二轮清理移除遗留底部 CTA、相关文章区、零散 Phosphor 图标、重复 `theme-color` 及彩色渐变链接。
  • "什么是ToolKnit?" —— "按分类浏览"模块已改用新的极简卡片样式。

5. 法律与元信息页面

  • 隐私政策 和 服务条款 —— 两者均从纯白页面重构,采用相同的黑白布局,包含一个"LEGAL"标识英雄区域,`.legal` 字体样式(h2分隔线、白色带浅下划线链接、带标记色调的列表)以及统一的4列式页脚。
  • 更新日志(本页面)—— 完全视觉重构:采用点阵式英雄区域、粘性时间轴轨道、白色/半透明标签、柔和的 `tabular-nums` 日期格式、内嵌的温情备注块。

6. 页脚统一化

  • 现在每一页都以相同的4列式页脚结束:TK徽标、品牌描述、X与GitHub图标、热门工具、分类、支持与法律链接、© 2026版权信息、朋友推荐行以及四个发布日徽标。
  • 移除了所有旧版的"白色页脚"、"蓝色链接页脚"和"窄版简化页脚"变体。

本次更新中,工具的工作原理没有任何改变。所有变化均为视觉、结构或无障碍相关,旨在让41工具看起来像一个工具,一个网站。

开发者的话

从5 月 3 日凌晨到2026 年 5 月 6 日凌晨 2:00,连续四晚,一个人在台灯下逐行重写 ToolKnit:41 个工具页、44 篇博客、2 个法律页,以及现在这份更新日志。

它始于一个单一的白色按钮。这种按钮背景和文字都是白色,点击后没有任何可见变化。从mp3转wav到wav转mp3,从字符计数器到计时器,从问命运到随机转盘——一个接一个,一页接一页,直到窗外的鸟儿开始鸣叫。

4 日深夜最难:无法编译的 Tailwind 透明度、JS 中零散紫光、彩色悬停阴影、隐形暂停按钮、看不到点数的骰子和没有正面的硬币。那些只有独自盯着屏幕才会注意的小问题,被逐一找出,换成统一的半透明白。

到5日的凌晨,整个博客已被彻底拆解并重建:编辑式列表、CSS计数器、粘性分类标签、一个PowerShell提取器将44文章内容重新生成到统一模板上——同时,一双眼睛手动检查了每一条边距、每一个分隔线、每一个点。

随后,6 日凌晨 2 点,最后一次按键落在这一段上。

没有人要求做这些事。几乎没人会逐字阅读,也不会因为一个按钮变白而发消息。但还是必须完成。因为构建工具的人也使用这些工具。 每当页面重新加载时仍存在2像素偏差,那种安静的不适感,是无法自我欺骗的。

四个夜晚,几杯凉水,无数次“睡前再改一点”。最后一次修改停在 5 月 6 日凌晨 1:58,接着保存了这页。

这不是为了邀功,只想在某处留下一个小记号:有人认真在乎过,在乎免费工具网站的每一个像素是否干净。如果你用过 ToolKnit,又恰好读到这里,那四个晚上就值得。

——写于 2026 年 5 月 6 日凌晨 2:00 董子航

硬币抛掷、骰子投掷及法律页面刷新

新 改进
  • 硬币抛掷 —— 在线抛硬币,使用 3D CSS 动画。公平的 50/50 随机结果,抛掷历史记录,正反面概率条形图,当前与最佳连击记录追踪,以及通过空格键快速抛掷的快捷方式。
  • 骰子投掷 —— 投掷 1 到 6 标准骰子,带有动态翻滚动画。实时值分布图表,投掷历史记录,总和与平均值统计。使用数字键 1–6 来切换骰子数量,空格键进行投掷。
  • 硬币抛掷与骰子投掷博客文章 —— 介绍何时使用每个工具,虚拟随机性与真实硬币/骰子之间的数学原理,以及 5 创意应用场景。
  • 服务条款与隐私政策更新——按当时网站状态重写:无账户、不收集个人数据、通过 localStorage 提供每天 500 次免费额度,说明第三方统计和 CDN,并介绍 Service Worker 离线访问。
  • 将网站范围内的 RewriteEmail.com 底部链接替换为 B64Encode.com 的互惠链接,覆盖所有页面。
  • 首页更新 —— 硬币抛掷和骰子投掷被添加到创意工具卡片网格中,两个工具均加入滚动条、搜索索引和路线图弹窗。
  • 更新了 sitemap.xml、service-worker.js(已升级至 toolknit-v5)和 indexnow-submit.py,所有链接均已更新为新网址。

CPS 测试与 SEO 优化

新 改进
  • CPS 点击测试——新增 1 / 5 / 10 / 30 / 60 秒模式,显示实时 CPS、最佳 1 秒爆发、一致性分数、每秒柱状图和本地最佳记录。100% 浏览器处理,适配电脑与手机。
  • CPS 测试博客文章 —— 详细指南介绍 CPS 的含义,什么样的分数算好,不同时长模式的使用方法,常见点击技巧,以及如何安全提升点击速度。
  • 优化 CPS 测试的交互状态 —— 活跃的测试无法重新启动,计时结束后点击将被忽略,以确保结果的准确性。
  • 对高曝光工具页面进行 SEO 优化 —— 重新编写了 键盘测试器、字符计数器、白板 和 反应时间测试 的标题、元描述、社交元数据、JSON-LD 和首屏文案,更贴合真实搜索意图。
  • 从 反应时间测试 和 瞄准训练器 中添加指向新 CPS 测试的内部链接,并将 CPS 测试加入它们的相关工具推荐池中。
  • 网站搜索和路线图更新 —— CPS 测试已纳入 search.js,覆盖全部关键词。服务工作器版本已升级至 toolknit-v4。

瞄准训练器与登录系统移除

新 改进
  • 瞄准训练器——FPS 瞄准练习,速度分快/中/慢,目标数可选 10 / 20 / 30 / 50,带 3-2-1 倒计时。结果包括平均、最快、最慢点击时间、总耗时、逐目标柱状图及表现评级。
  • 瞄准训练器博客文章 —— 详细介绍如何使用瞄准训练器,练习流程,专业技巧,以及基准评分。
  • 移除登录注册系统——删除弹窗、API 端点和 JWT 认证,全部用户无需账户即可每天免费使用 500 次,流程更简单。
  • 删除后端 login.php、register.php、verify.php、usage.php;使用额度记录改为 100% 客户端 localStorage。
  • auth.js代码从789行简化至165行 —— 现在仅负责提示通知和本地使用量跟踪。

图片尺寸调整器 & 伪文本生成器

新
  • 图片尺寸调整器 —— 可将任意图片调整为精确尺寸、按百分比缩放,或一键使用社交媒体预设。支持JPG、PNG和WebP输出,并可控制画质。可锁定长宽比以防止变形。
  • 伪文本生成器 —— 为设计、原型和草图生成占位文本。可选择段落、句子或单词。可切换经典开头,可选添加HTML<p>标签包裹。
  • 对所有工具页面的"您可能也喜欢"区域进行了重新设计。
  • 修复了首页搜索缺失9工具的问题 —— 所有35工具现在均可搜索。

像素艺术转换器 & 视频转音频

新
  • 像素艺术转换器 —— 可将任意图片转换为像素艺术。支持可调节的像素分辨率(8–256),颜色调色板控制(2–128种颜色),Floyd-Steinberg抖动算法,Sobel边缘检测轮廓,饱和度增强,以及复古游戏主机预设(Game Boy、NES、SNES、CGA)。
  • 视频转音频 —— 可从任意视频文件(MP4、WebM、MOV)中提取音频并以无损WAV格式下载。使用Web Audio API实现快速、高质量的提取。
  • 发布了一篇新的博客文章,详细解释了转换器背后的算法。
  • 发布了一篇新的博客文章,介绍基于浏览器的音频提取技术。

按键计数器 & 更新日志页面

新 改进
  • 更新日志页面 —— 您正在阅读的内容。记录了每一个ToolKnit更新的完整历史,按日期组织,并为每个工具提供内部链接。
  • 键盘测试器现在可按按键统计按键次数。可查看每个按键被按下的具体次数,帮助您检测卡键或双触发问题。
  • 关注我们的构建历程,前往Creem。

二维码生成器 & SEO优化

新 改进 修复
  • 二维码生成器 —— 可为URL、纯文本、Wi-Fi凭证和邮箱生成自定义二维码。可选择前景/背景颜色、尺寸(200–1024像素)和纠错等级。支持以PNG格式下载。
  • 字符计数器 —— 常见问题解答部分从3扩展至7个问题。新增了对比内容和写作长度要求表格,以提升SEO覆盖效果。
  • 随机转盘 — 更新标题、标题和描述。将 FAQ 从 3 扩展至 6 问题。
  • 优化了以下页面标题:图片压缩器、PDF 压缩器、视频压缩器、图片网格分割器 以及 计时器。
  • 修复:删除白板重复的 FAQ 结构化数据,解决 GSC 验证错误。

反应速度测试

新
  • 反应时间测试 — 通过 4 游戏模式测试你的反应能力:点击、空格键、视觉选择和速度轮。结果以毫秒显示,并附带性能评级。

键盘测试器 & 随机转盘

新
  • 键盘测试器 — 每次按键时,键盘地图都会亮起。立即识别损坏、卡住或无响应的按键。支持全尺寸和紧凑布局。
  • 随机转盘 — 可自定义的转盘,最多支持 15 个选项。添加你的选择,转动转盘,获得随机结果。

创意工具:画板、今天吃什么与向宇宙提问

新
  • 在线绘图板 — 免费白板,支持笔、铅笔、书法笔和草图上色模式。可添加形状、文字和图片。导出为 PNG 或 PDF。
  • 吃什么? — 无法决定吃什么?选择早餐、午餐或晚餐,即可获得随机食物建议。
  • 向宇宙提问——输入是非问题,获得神秘答案;当时每天一个问题,让宇宙来决定。

图片裁剪 & 网格分割

新
  • 图片裁剪 — 支持自定义比例裁剪,包括自由裁剪、正方形、16:9、4:3 等多种模式。
  • 图片网格分割器 — 将任意图片分割成网格(如 3×3、2×2 等),适用于 Instagram 卡片式发布。

时间工具:计时器、倒计时 & 世界时钟

新
  • 在线计时器 — 毫秒级精度计时器,支持分段计时记录。
  • 倒计时器 — 可设置自定义倒计时,可选提醒音效。
  • 世界时钟 — 查看全球所有时区的当前时间。可搜索并收藏你常去的城市。

文本工具 & 音频转换器

新
  • 字符计数器 — 在输入过程中实时统计字符、单词、句子和段落数量。
  • 文本提取器 —— 从PDF、DOCX、XLSX和12+文件格式中提取文本内容。
  • MP3转WAV 和 WAV转MP3 —— 在可调节比特率的情况下,实现MP3与WAV音频格式之间的转换。

视频工具及图像格式转换器

新
  • 视频压缩器 —— 在保持视觉质量的前提下,减小MP4、WebM、MOV和AVI文件大小。采用浏览器原生编码技术 —— 无需上传服务器,无需下载大型WASM引擎。
  • 视频转GIF —— 将视频片段转换为动态GIF。可设置开始时间、持续时间、帧率和输出尺寸。
  • 图像格式转换器 —— JPG转WebP,WebP转JPG,PNG转WebP,以及WebP转PNG。

发布日

上线

ToolKnit正式上线,推出首批核心工具 —— 全部免费,基于浏览器,无需注册。

网站采用HTML、Tailwind CSS和原生JavaScript构建。所有工具均在浏览器中运行 —— 你的文件永远不会上传至任何服务器。