20250206 更新,一次成功案例:DeepSeek AI 编程应用: Obsidian 文档批量生成器
阅读提示:本文仅用于记录个人学习 AI 编程的实践经过,没有什么阅读价值,为了不浪费你的时间,这里有一段 AI 总结:
这是一段 AI 总结,点击展开
在这篇文章中,作者分享了自己作为编程新手,尝试用 AI 工具 Windsurf 开发一个本地网页工具的经历。
目标是实现 SRT 字幕翻译、Youtube 视频下载及双语字幕嵌入功能。虽然成功调用了 DeepSeek API 完成字幕翻译,并使用 Git 进行版本控制,但在功能整合时遇到了翻译速度慢、结果不准确、界面混乱等问题。
通过调试和 AI 辅助,作者逐步优化了翻译效果,但项目依赖过多导致复杂度超出能力范围,最终回滚到可用版本。
总结的经验包括:使用 Git 保存版本、精准提问、控制项目规模、及时调试和总结教训。这次尝试虽未完全成功,但为作者积累了宝贵的编程经验。
背景描述
项目缘起
虽然沉浸式翻译 可以在线显示双语字幕,但是「字幕下载」功能需要付费会员才可以使用,无奈沉浸式翻译的会员太贵了,于是动起了歪脑筋,试试看自己能不能完全用 AI 来实现这个需求。
何为零基础
这里稍微备注一下,我自己所谓的零基础编程,究竟是哪种零基础。
- 基本编程概念:能描述项目需求,知道编程需要依赖一些 API 或者已经存在的模块
- 前端开发:知道 HTML 能生成网页雏形
- 版本控制:听过 Git 的概念,知道 Git 能保存项目编辑记录
- 调试能力:知道能打开浏览器的控制台,查看报错的记录
- API 调用:知道 API 的概念
- 优化与需求分析:能提出优化需求并实现
- 经验总结:能总结项目经验并提出改进建议。
最终实现效果
创建了一个本地网页工具,可以提交 SRT 字幕文件,然后调用 DeepSeek 的 API 来翻译,并导出双语 SRT 字幕文件。

过程记录
提交基础需求
我想开发一个本地的网页工具,可以翻译 SRT 字幕,调用 AI 大模型的 API,具备 SRT 字幕上传、与翻译后的双语字幕结果导出功能。
AI 根据上面这段简短的命令,完成了基本的框架,并让我补充大模型 API,于是我申请了一个 DeepSeek 的 API,并直接将 API 的接口文档 复制粘贴给它。

随后 AI 根据接口文档进行了 API 的配置

随后 AI 生成了一个本地网页雏形

测试翻译功能
初步发现的问题有两个
- 虽然会显示翻译中,但是没办法一边翻译一边显示翻译进度
- 翻译的速度非常慢,可能是设置了翻译间隔

- 万幸的是,翻译成功了!并且字幕行数、时间轴也对得上

- 可以正常导出双语翻译后的 SRT 字幕文件

保存版本
鉴于这第一个 MVP 已经可用,所以我需要开始研究一下如何保存版本记录了。
于是我问 Claude:
我在 vscode 中用 AI 创建了个可运行的网页项目,我想做一些修改,但是我希望能够将当前版本保存下来,以便日后可以回滚,如何做到?
Claude 回答我,可以使用 Git 版本控制系统来管理项目版本。于是我又直接将这个需求提交给了 Windsurf,它果然也创建了一个 Git 仓库

Windsurf 提示我可以创建一个新的分支,非常好。
尝试需求
加快翻译速度
- 我希望字幕生成速度可以快一点,因为 DeepSeek 是不限制并发数的
- 我希望能够实时显示翻译结果

再来翻译同一份字幕文件,看看效果,完全实现了我的需求

优化翻译结果
我注意到,因为字幕时间轴会将一句连贯的话拆成好几句,使得 AI 翻译的结果会不够准确,缺少上下文的联系,例如:

并且翻译结果不够地道,毕竟这是一个 Youtube 视频的字幕,很多视频口语化的表达习惯没有准确地被翻译出来。
我将这些吐槽直接发给了 Windsurf,它也理解了问题所在,并提出了改进方法

- 上下文感知翻译:
- 添加了上下文窗口(前后各3条字幕)
- 翻译时会考虑相邻字幕的内容
- 通过标记【当前】和【上下文】来区分待翻译内容
- 优化翻译提示词:
- 明确指出这是 YouTube 视频字幕
- 要求使用口语化、自然的翻译风格
- 保持表达的生动性和趣味性
- 使用目标语言的网络用语和本地化表达
- 技术优化:
- 减少并发数(从5降到3)以便发送更多上下文
- 添加随机延迟避免请求过于密集
- 增加温度参数使翻译更自然
- 翻译质量提升:
- 保持原文的语气和情感
- 确保译文符合当地人的表达习惯
- 注重上下文的连贯性
重新测试,可以看到翻译结果明显有参考了上下文,然而也因为参考了上下文,使得翻译出现了重复结果。

于是我直接将我的判断,以及这段字幕结果提交给 Windsurf,让它继续优化。Windsurf 的优化结果是,先将短句合并成一句长句,然后再对长句进行翻译。

重新测试翻大车,它直接所有的字幕进行合并了

我要求 AI 撤销这个优化方案,重新解决问题,它的改进如下

重新测试看看,还是没能实现完美的翻译效果,不过先这样吧,勉强可用。

添加 Youtube 字幕与视频下载功能
我问 Claude 有哪些可以下载 Youtube 字幕的开源项目,Claude 告诉我 yt-dlp 这个项目可以做到,于是我询问 Windsurf 能不能直接通过访问这个项目的地址,然后研究一下它的功能。
答案是可以的:

并且 Windsurf 通过自己的研究,开始安装各种依赖

最终实现效果:
- 默认会下载 1080p 分辨率的视频(如果有)
- 默认会下载英文字幕(包括自动生成的字幕)
- 默认会将字幕嵌入到视频中
- 所有字幕都会转换为 SRT 格式
- 视频会输出为 MP4 格式

行不行,测试一下,提示「获取视频信息失败」

将提示发给 Windsurf ,它表示需要 Python 依赖,于是又安装了一堆东西,最终成功了,可以获取视频信息

现在再来看看能不能下载视频

竟然成功了,并且自动将字幕嵌入在视频中了

但是我需要的是将翻译后的双语字幕嵌入到视频,所以这一步有点提前。
字幕翻译功能坏了
在上一步中,虽然实现了视频下载效果,但是把一开始做好的字幕翻译功能弄坏了,具体表现为「无法上传字幕文件」,就算提交了字幕文件,还是会再次弹出提交文件的对话框,我需要重新修复一下。
于是我把这个问题再次提交给了 Windsurf,经过一番试错,Windsurf 解决了这个问题。

合并工作流
现在我实现了以下几个功能
- 调用 DeepSeek API 对 SRT 格式的英语字幕文件进行翻译
- 可以导出翻译后的 SRT 文件
- 可以提交 Youtube 视频链接,并下载 1080 p 的视频,以及对应的字幕
现在我想合并一下这几个功能,实现以下效果:
- 提交 Youtube 视频链接
- 自动下载 1080 p 视频文件,以及英文字幕
- 将英文字幕翻译为双语字幕
- 将视频与翻译后的双语字幕进行合并
将需求提交给 Windsurf

虽然确实缝合了这个工作流,但是界面有点丑陋,并且功能有点混乱

我直接将截图提交给 Windsurf,并让它根据我的意见,保留特定的功能按钮。

优化结果如下

测试一下效果,发现虽然有「获取视频信息」的按钮,但这个按钮是按不了的。
我用浏览器的「检查」功能,查看是否有代码报错,发现确实有这么一行 main.js:27 Uncaught SyntaxError: Identifier 'translateBtn' has already been declared (at main.js:27:7)
,提交给 Windsurf 后,它成功解决了问题。
新的问题出现了,无法下载字幕,提示如下

XXXXX
XXX
XX
此处经历了一大堆折腾,还是无法解决问题,并且项目越来越大,引入的依赖越来越多,问答窗口越来越长,AI 恢复的速度越来越慢,显然有点超出了我的能力范围。
所以我暂时放弃了,并用 Git 回滚到第一个可用的版本,目前只保留字幕的双语翻译功能,也幸好我知道有 Git 这个东西的存在,至少还能留下一些成果。
总结经验
- 多用 Git 保存重要版本。并且要找到 Git 的正确用法和快捷用法。
- 需要找到精准提问的方法,不然让 AI 在一个那么长的窗口里回答问题,会越来越慢,准确率也会越来越低。
- 需要搜索一下, Windsurf 有没有更熟练的用法
- 在执行项目前,最好能先进行一番搜索,看看有没有现成的项目可以调用或者模仿
关联阅读
- 在 Obsidian 中集成 AI 问答功能:Obsidian Copilot + DeepSeek 设置教程
- Obsidian AI 插件 Text Generator 的配置方法
- 自由使用任意大模型 API:OpenRouter 注册、付费与 API Key 设置教程
我的 Notion 课程
《Notion 搭建高能效率系统》
- 从「效率困局」到「生产力中枢」
- 用 18 个月打磨的 Notion 精进指南
- 助你在 7 天内掌握精英必备的效率神器
- 推出一年半,帮助近 6000 位学员精通 Notion
- 国内销量最高的 Notion 系统课程
- 小红书好评率超过 98%
详情介绍:点我

本站所有文章,除非特别说明或标注,均为本站原创发布。转载本文需附上本文链接,未经授权,禁止大篇幅复制、盗用、采集或发布本站内容至其他网站、书籍等各类媒体平台。