找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1464

积分

0

好友

216

主题
发表于 3 天前 | 查看: 8| 回复: 0

通过整合 Obsidian 笔记软件与 Claude AI 的能力,我们可以构建一套高效的内容自动生成工作流。本教程将详细讲解如何利用 Node.js 脚本,实现从输入主题到产出多风格带图文章的全程自动化。

环境准备:搭建自动化技术栈

实现全自动写作,需要组合使用 Obsidian 编辑器、其功能插件以及 Claude API,为核心流程提供支持。

第一步:安装 Obsidian 核心插件

Obsidian 的基础功能可通过社区插件大幅扩展,实现自动化需要依赖 TemplaterQuickAdd

  1. 打开 Obsidian,进入「设置」→「社区插件」。
  2. 关闭「安全模式」,随后搜索并安装 TemplaterQuickAdd 插件,启用后重启 Obsidian。
插件名称 启用后位置 主要功能
Templater 左侧活动栏图标或命令面板 (Ctrl/Cmd + P) 提供动态模板(如自动插入日期、文件名),需配合模板文件使用。
QuickAdd 左侧活动栏或通过快捷键唤出 提供“捕捉”功能,可快速创建笔记、运行脚本,通常表现为一个输入框。

注意:Templater 插件需在设置中开启「Enable Folder Templates」选项,否则无法正常执行自动化脚本。

Obsidian Templater 插件安装界面

第二步:配置 Node.js 开发环境

调用 Claude API 需要运行 JavaScript 脚本,因此需预先配置 Node.js 环境:

  1. 访问 Node.js 官网 下载并安装 LTS 版本(推荐 18.x 或更高)。
  2. 安装完成后,在终端输入 node -v,出现版本号即表示安装成功。

Node.js 命令行执行效果

  1. 创建项目目录并初始化,安装必要的依赖包:
    mkdir auto-writer && cd auto-writer
    npm init -y
    npm install @anthropic-ai/sdk axios md5 fs-extra openai

第三步:获取 Claude API 密钥

API 密钥是与 Claude 服务交互的凭证:

  1. 访问 Anthropic 控制台 注册并登录。
  2. 进入「API Keys」页面,点击「Create Key」。
  3. 为密钥命名(如「Obsidian-Writer」),并妥善保存生成的一次性密钥字符串。

Claude API 密钥创建界面

安全提示:API 密钥需严格保密,建议通过环境变量管理,避免硬编码在脚本中。

第四步:创建环境变量配置文件

auto-writer 项目根目录下,新建一个名为 .env 的文件,并填入以下内容:

ANTHROPIC_API_KEY=你的Claude密钥
OPENAI_API_KEY=你的OpenAI密钥(用于生成图片)

env 文件配置示例

注意:如果无需生成图片,可省略 OPENAI_API_KEY。请确保 .env 文件位于项目根目录,否则程序可能无法读取密钥。

编写核心脚本:定义AI工作流

环境就绪后,需要编写核心的智能体脚本。该脚本将定义 AI 的完整工作逻辑。

核心逻辑:从指令到成品的自动化流程

当用户输入类似 /write 人工智能发展趋势 的指令时,系统将自动执行以下序列:

  1. 调用 Claude 分析主题,并抓取2-3篇相关的参考文章。
  2. 基于资料,生成「专业报告」、「科普短文」、「自媒体文案」三种不同风格的草稿。
  3. 为每篇文章生成配图提示词,并调用图像生成API(如DALL-E 3)创建配图。
  4. 将所有内容按 Markdown 格式排版,并自动写入指定的 Obsidian 笔记文件。

完整脚本实现与解析

auto-writer 文件夹中创建 writer-agent.js 文件,并复制以下代码:

// 1. 导入依赖库
import Anthropic from '@anthropic-ai/sdk';
import axios from 'axios';
import fs from 'fs-extra';
import { createRequire } from 'module';
const require = createRequire(import.meta.url);
const md5 = require('md5');
require('dotenv').config(); // 加载环境变量

// 2. 初始化 Claude 客户端
const anthropic = new Anthropic({
  apiKey: process.env.ANTHROPIC_API_KEY
});

// 3. 定义网页内容抓取工具函数
async function fetchWebContent(url) {
  try {
    const response = await axios.get(url);
    return response.data; // 返回HTML,Claude具备提取正文能力
  } catch (error) {
    return `抓取失败:${error.message}`;
  }
}

// 4. 定义图片生成工具函数
async function generateImage(prompt, imagePath) {
  const OpenAI = require("openai");
  const openai = new OpenAI({
    apiKey: process.env.OPENAI_API_KEY
  });
  const response = await openai.images.generate({
    model: "dall-e-3",
    prompt: prompt,
    size: "1024x1024",
    quality: "standard"
  });
  // 下载图片到本地
  const imageResponse = await axios.get(response.data[0].url, {
    responseType: 'arraybuffer'
  });
  await fs.writeFile(imagePath, imageResponse.data);
  return imagePath;
}

// 5. 主函数:接收主题并启动写作流程
async function main(topic) {
  // 创建Obsidian笔记文件路径(请替换为你的实际库路径)
  const vaultPath = '/Users/你的用户名/Documents/Obsidian Vault';
  const notePath = `${vaultPath}/AI写作-${topic}-${Date.now()}.md`;

  // 定义Claude的系统指令(核心提示词)
  const systemPrompt = `你是专业写作助手,需按以下步骤处理用户主题"${topic}":
  1. 用 fetchWebContent 工具抓取3篇相关中文文章
  2. 生成三种风格文章:
     - 专业版:500字,引用数据,适合行业报告
     - 科普版:300字,比喻拟人,适合公众号
     - 小红书版:200字,emoji开头,带话题标签
  3. 为每篇生成配图prompt,调用 generateImage 工具
  4. 用Markdown排版后通过 appendToObsidianNote 写入笔记`;

  // 调用 Claude API 执行任务
  const message = await anthropic.messages.create({
    model: "claude-3-5-sonnet-20241022",
    max_tokens: 4096,
    tools: {
      fetchWebContent,
      generateImage,
      appendToObsidianNote: async (path, content) => {
        await fs.appendFile(path, content);
        return "写入成功";
      }
    },
    system: systemPrompt,
    messages: [{ role: "user", content: "开始执行" }]
  });
  console.log("任务完成!笔记路径:", notePath);
}

// 从命令行参数接收主题
const topic = process.argv[2];
if (!topic) {
  console.error("请提供主题,例如:node writer-agent.js \"AI写作趋势\"");
  process.exit(1);
}
main(topic);

JavaScript 代码编写界面

代码关键点说明

  • tools 对象:向 Claude 声明了可调用的外部工具函数。
  • systemPrompt:严格规定了 AI 的任务步骤与输出格式,确保结果符合预期。
  • appendToObsidianNote:自定义工具函数,用于将生成的内容追加写入 Obsidian 笔记文件。

配置 Obsidian 快捷命令:创建触发入口

脚本完成后,需在 Obsidian 中配置便捷的触发方式。

方法一:使用 QuickAdd 宏命令(推荐)

  1. 打开 Obsidian 设置,进入「QuickAdd」设置项,点击「Manage Macros」。
  2. 新建一个宏,命名为「AI 全自动写作」。
  3. 点击「Add Action」→ 选择「User Script」→ 指向之前创建的 writer-agent.js 文件。
  4. 点击「Add Argument」→ 选择「Prompt User」→ 输入提示文字如「请输入写作主题」。
  5. 返回 QuickAdd 主界面,点击「Add Choice」添加刚创建的宏,并可为其设置快捷键(如 Ctrl+Shift+W)。

Obsidian QuickAdd 设置教程

方法二:使用 Templater 模板(备用方案)

若 QuickAdd 配置遇到问题,可使用 Templater 作为备用方案:

  1. 在 Obsidian 中新建笔记,输入以下内容,并将其保存为 AI写作模板.md(存放于 .obsidian/templates 目录):
    <%*
    const topic = await tp.system.prompt("请输入写作主题");
    const command = `node /path/to/auto-writer/writer-agent.js "${topic}"`;
    require('child_process').exec(command, (error, stdout, stderr) => {
      if (error) {
        new Notice("执行失败:" + error.message);
        return;
      }
      new Notice("写作任务已启动,完成后将自动创建笔记");
    });
    %>
  2. 进入 Templater 插件设置,在「Template Hotkeys」中为该模板绑定一个快捷键。

Obsidian Templater 模板编辑界面

注意:请将 /path/to/auto-writer 替换为你电脑上的实际项目绝对路径。

效果测试:一键生成多风格内容

完成所有配置后,即可进行测试。以「量子计算的未来」为主题:

  1. 按下 Ctrl+Shift+W 调出 QuickAdd 输入框,输入主题。
  2. 系统将在后台运行脚本,终端会显示抓取、生成、配图等日志。
  3. 约5-8分钟后,Obsidian 库中会自动生成一篇新的笔记,内含:
    • 专业报告版:引用行业数据与研究报告。
    • 科普短文版:运用比喻手法解释复杂概念,并配有风格轻松的插图。
    • 自媒体文案版:以吸引眼球的 emoji 和话题标签开头,适合社交媒体传播。

Obsidian 自动生成的文章效果

常见问题排查

问题 1:Claude API 调用失败

  • 可能原因:密钥错误、过期或网络连接问题。
  • 解决方案:检查密钥是否正确,或尝试在初始化 Anthropic 客户端时配置代理:
    const anthropic = new Anthropic({
      apiKey: process.env.ANTHROPIC_API_KEY,
      baseURL: "https://your-proxy-server.com" // 替换为代理地址
    });

问题 2:Obsidian 笔记未生成

  • 排查步骤
    1. 检查终端错误输出,确认文件写入权限。
    2. 核对脚本中 vaultPath 设置的 Obsidian 库路径是否为绝对路径且正确无误。

问题 3:图片生成失败

  • 解决方案
    1. 若无 OpenAI API 密钥,可暂时注释掉 generateImage 相关调用。
    2. 可替换为国内可访问的图像生成 API,例如百度文心一言,这需要对 generateImage 函数进行相应改造,涉及网络请求和 API 调用。

拓展应用与思维提升

本方案不仅是一个写作工具,更展示了一种通过 自动化 流程连接不同技术组件来解决复杂任务的方法论。这种思路可以迁移至多种场景:

  • 学术研究:自动抓取最新文献并生成研究综述。
  • 内容运营:批量生产适配不同平台调性的宣传素材。
  • 知识管理:快速整理会议纪要或学习笔记,并形成结构化文档。

掌握流程设计与工具整合的能力,将使你在人机协同的创作模式中占据主动。




上一篇:i.MXRT大容量NOR Flash地址模式切换导致软复位失败的排查与解决方案
下一篇:Python 3.15.0 alpha 3发布:全新性能分析、UTF-8默认编码与错误信息优化
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-24 19:22 , Processed in 0.279779 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表