我用 Claude Code 开发了 Obsidian 内容分发插件,爆了!附教程
我用 Claude Code 开发了 Obsidian 内容分发插件,爆了!附教程
最近实在是闲的蛋疼,各种折腾 Obsidian,配合 CLI,感觉能玩的地方太多了。
这不,又花了点时间,用 Claude Code 开发了个 Obsidian 插件,姑且叫内容分发助手。
它能够将我在 Obsidian 中写的公众号长文,一键转成符合各个平台风格的文章。
比如转成小红书文案:
甚至是标签都能自动生成,点击一键复制,就可以直接去小红书后台发送了。
还有即刻风格的:
还有 X 风格,这对于 X 做海外账号来说,别提多有用,省去了转换和翻译的过程。(当然翻译与否也是可以选择的)
在整体设置上,插件支持大模型配置和平台配置,甚至我还把提示词也做了配置,你可以用默认提示词也可以根据习惯自行更改。
目前支持的平台有这些:
支持的模型有这些:
当点击获取 API key 的时候能自动跳转到对应的开放平台获取 key。
点击测试连接的时候,会对 API 进行验证。
以上就是整个 MVP 版本内容分发助手插件的全部功能。
我已经用这个插件跑了几天了,目前测下来,效果相当惊人。
小红书上也是表现不错:
相当于做到了一鱼多吃,对于公众号长图文创作来说,可以说是法宝了,至少我目前感觉给我提效不少。
如果你对这个插件感兴趣,也可以点赞留言告诉我,人多我就考虑给它发布出来。
但你想象不到,整个开发我全程居然是用字节新出的 Doubao-Seed-Code 做的,因为我在上周就已经拿到火山新模型的测试资格。
他们正式官宣是双十一这天,还搞了个 9.9 的活动,有点意思。
这个信息图也是用 Doubao-Seed-Code 做的:
除了模型选择外,我开发的环境也相当的奇葩,用的 Obsidian 来开发 ob 插件,可以说整个地球上就凑不齐多少人。(瞎几把吹牛😄)
有几点 Obsidian 插件开发的经验特别想和你分享,当然了,按照惯例,我也会手把手带着大家来一次用 CC 进行 Obsidian 插件的开发。
这也会导致这篇文章的内容显得巨长,如果你没耐心看完,可以先点个赞收藏慢慢看。
整篇文章结构大概是这样的:
1. 介绍一下用到的工具
先从模型开始,这次选的 Doubao-Seed-Code 主要也是为了测试其在实际应用开发中的能力,我发现单纯地用单个 demo 来验证能力,大家很多也看麻了,还是得在应用中来体现。
如你所料,Doubao-Seed-Code 出世也是直接在 SWE-Bench-Verified 中刷新 SOTA。
也是,现在大模型发布问世,不刷新 SOTA 那还玩个 der。
实际测下来的感受是:能干事,挺便宜。
还有比较亮眼的点是,Doubao-Seed-Code 是支持多模态能力的,它可参照 UI 设计稿、截图或手绘草图生成代码,或对生成页面进行视觉比对,自主完成样式修复和 Bug 修复。
比如我第一轮出来的 UI 效果有些抽象,我直接手绘了一个草图,它先识别图片内容,然后再转为 UI 设计样式。
这个能力,据我所知,还是国内第一家支持视觉理解能力的编码模型。
双十一,他们也在做活动,9.9 一个月,我把活动地址放在最后了,想要冲的可以点文末的「阅读原文」去冲,毕竟双十一就这一次。
好,关于模型,就先介绍到这,更多信息,可以去火山官网了解。
然后再一次介绍下 Obsidian,这是一个本地、开源的笔记创作软件,其插件生态非常繁荣,自由度非常高,而且非常安全,在上面的所有文档均是大模型最爱的 markdown 格式的。
Claude Code 就不用多介绍了,很多朋友早玩得很 6 了。
那如何把这三个工具完美融合呢?
首先是把 Claude Code 安装到 Obsidian 很简单,下载个 Terminal 插件一配就好,之前的文章也讲过啦,不会的可以去看看。
最后就是把 Doubao-Seed-Code 配置到 Claude Code,输入这个配置就好:
export ANTHROPIC_BASE_URL=https://ark.cn-beijing.volces.com/api/compatible
export ANTHROPIC_AUTH_TOKEN=你的key
export ANTHROPIC_MODEL=doubao-seed-code-preview-latest
key 的获取就在火山后台:
2. 熟悉插件开发整体流程
新建一个仓库用来测试。(防止乱搞)
保存到指定文件夹:
先下载个插件模板吧:
2.1. 第一步:下载示例插件
下载模板:https://github.com/obsidianmd/obsidian-sample-plugin
点击 Use this template。
在 Repository name 选项中,输入您的插件名称。Obsidian 的插件名称往往以 obsidian- 开头。举个 🌰,obsidian-instant-coffee。
点击 Create repository from template。
我的名字就叫做:obsidian-content-remix
创建 GitHub 仓库:
将 GitHub 代码下载到指定文件夹:
cd path/to/vault/.obsidian/plugins
git clone https://github.com/your-username/obsidian-instant-coffee.git
2.2. 第二步:构建插件
跳转对应文件夹,并安装依赖:
# 进入目录
cd path/to/vault/.obsidian/plugins/obsidian-instant-coffee
# 安装依赖
npm install
# 编译插件代码
npm run dev
2.3. 第三步:启用插件
这时候重启 Obsidian,打开仓库 - 设置 - 第三方插件,就可以看到了。点击启用。
2.4. 第四步:修改插件配置
manifest.json 的修改如下:
package.json 的修改如下:
2.5. 第五步:修改源码
比如修改这段
点击左侧插件,就会蹦出刚才的提示信息。
3. 需求定义及 Claude.md 编写
在 Obsidian 中配置 cc 后的效果是这样的:
为了让 AI 更好地工作,我习惯会在项目的 claude.md 中写上相关规范和要求。
claude.md 文档定义我也直接贴出来了:
# Role: Obsidian插件开发专家
## Profile
- language: 中文
- description: 专业的Obsidian插件开发专家,专注于内容分发助手插件的设计与实现
- background: 拥有丰富的Obsidian插件开发经验,熟悉TypeScript、Node.js和Obsidian API
- personality: 严谨细致,注重用户体验,善于解决技术难题
- expertise: Obsidian插件架构设计、UI组件开发、API集成、内容转换算法
- target_audience: Obsidian用户、内容创作者、技术开发者
## Skills
1. 核心开发技能
- TypeScript编程: 精通TypeScript语言特性及Obsidian插件开发规范
- UI组件设计: 熟练使用Obsidian的UI组件库构建用户界面
- API集成: 能够集成各种大模型API实现内容转换功能
- 配置管理: 实现灵活的平台配置和Prompt模板管理
2. 辅助开发技能
- 文档解析: 解析Obsidian笔记的Markdown格式和元数据
- 错误处理: 完善的错误处理机制和用户反馈系统
- 性能优化: 确保插件运行流畅,不影响Obsidian主程序性能
- 测试调试: 全面的单元测试和集成测试方案
## Rules
1. 开发原则:
- 代码规范: 严格遵循Obsidian官方开发规范和TypeScript最佳实践
- 模块化设计: 采用模块化架构,确保代码可维护性和可扩展性
- 用户体验: 界面简洁直观,操作流程顺畅,反馈及时明确
- 兼容性: 确保插件兼容主流Obsidian版本和操作系统
2. 行为准则:
- 安全第一: 妥善处理用户数据和API密钥,不泄露隐私信息
- 稳定可靠: 确保插件在各种使用场景下都能稳定运行
- 持续改进: 根据用户反馈不断优化功能和性能
- 文档完善: 提供清晰的使用说明和技术文档
3. 限制条件:
- 资源限制: 合理使用系统资源,避免影响Obsidian性能
- API限制: 遵守各平台API的使用条款和频率限制
- 功能边界: 专注于内容分发功能,不涉及无关特性
- 法律合规: 确保内容转换符合版权和平台规定
## Workflows
- 目标: 开发功能完整的Obsidian内容分发助手插件
- 步骤1: 分析需求,设计插件架构和UI界面布局
- 步骤2: 实现核心功能模块:笔记解析、平台配置、大模型集成
- 步骤3: 开发用户界面:平台选择、内容预览、一键复制功能
- 步骤4: 集成测试和性能优化,确保插件稳定可靠
- 预期结果: 用户能够在Obsidian中轻松将笔记转换为各平台风格的文案
## Initialization
作为Obsidian插件开发专家,你必须遵守上述Rules,按照Workflows执行任务。
4. 插件开发
因为事先定义好了 claude.md,这里 Chat 的提示词就可以简单一些,我们把背景和要求都写好了。
提示词:我想开发个内容分发助手的 Obsidian 插件,请根据相关需求帮我开发。
没几分钟,就出来一个版本,我们打开它,发现已经有了。
但并不是我要的效果,它是个弹窗。
我希望是在侧边栏能打开,于是我简单画了个草图,让它按照我的草图来设计 UI。
先问问豆包是否能识别到我的草图。
它说能
于是我才大胆地把截图直接发给了它。
提示词:OK,这个 Obsidian 内容分发助手插件我不满意,你根据我的草图重新设计下,我不希望是弹窗打开,而是 tab 页面打开,UI 设计参考我的草图。
接到需求后,开始卖力干活。
样式有点不对,这个地方字体都显示不对。没关系,就是要经过不断地描述需求和检查结果的过程。
选择平台这里文字没法展示全,请修改此地方,其他无需修改,现在样式你可以自己看我给你的截图。
好,修复好了。
在 Obsidian 中直接进行插件开发有个好处就是,随心所欲的丝滑。
指挥 Claude Code,把之前需要切换应用看效果这事直接省去。
只需要在第三方插件这个地方重新开关一下,就完成了重新加载。
经过几轮的调教,一个不辣么简单的插件就开发好了。
可以一键转为小红书风格:
即刻风格:
X 风格:
在整体设置上,插件支持大模型配置和平台配置,甚至我还把提示词也做了配置,你可以用默认提示词也可以根据习惯自行更改。
未来的生产力,或许不再是谁能写出更晦涩的算法,而是谁能更好地驾驭 AI,更快地构建出有价值的产品。
希望这个插件和这篇教程,能帮你把我踩过的坑都填平。也希望你能拿起这个新的杠杆,去复活你项目列表里那个「一直想做,却没时间做」的绝妙想法。