2026 年,我们每天被信息包围:公众号文章、知乎回答、微博动态、播客视频、PDF 文档...信息散落在各处,需要时找不到。
本教程将教你用 OpenClaw 搭建全渠道信息收集系统,让有价值的信息自动流入知识库。
主流信息来源:
收集原则:
📥 自动化优先(能自动不手动) 🎯 质量优先(宁缺毋滥) 🏷️ 及时标签(收集时就分类) 🔗 保留来源(方便追溯)
步骤 1:配置 RSS 订阅源
// ~/.openclaw/workspace/config/rss-feeds.json{"feeds":[{"name":"阮一峰的网络日志","url":"http://www.ruanyifeng.com/blog/atom.xml","category":"Tech","priority":"high"},{"name":"酷壳","url":"https://coolshell.cn/feed","category":"Tech","priority":"high"},{"name":"待办","url":"https://daobang.app/rss","category":"Productivity","priority":"medium"},{"name":"36 氪","url":"https://36kr.com/feed","category":"News","priority":"low"}]}步骤 2:创建 RSS 收集脚本
// ~/.openclaw/workspace/scripts/rss-collector.jsconst { OpenClaw } = require('openclaw-sdk');constParser = require('rss-parser');const fs = require('fs');const path = require('path');asyncfunctioncollectRSS() {const oc = newOpenClaw();const parser = newParser();const feeds = JSON.parse(fs.readFileSync('./config/rss-feeds.json', 'utf-8'));// 获取上次收集时间const lastRun = awaitgetLastRunTime();for (const feed of feeds.feeds) {console.log(`收集:${feed.name}`);try {// 抓取 RSSconst feedData = await parser.parseURL(feed.url);// 过滤新文章const newItems = feedData.items.filter(item =>newDate(item.pubDate) > lastRun );for (const item of newItems) {// AI 判断价值const valueScore = await oc.ai.score({task: 'content_value',input: {title: item.title,content: item.contentSnippet,category: feed.category } });// 只保存高价值内容if (valueScore >= 7) {awaitsaveArticle({title: item.title,url: item.link,author: item.creator || item.author,date: item.pubDate,content: item.content,source: feed.name,category: feed.category,value_score: valueScore });console.log(` ✓ 保存:${item.title}`); } else {console.log(` ✗ 跳过:${item.title}(分数:${valueScore})`); } } } catch (error) {console.error(`收集失败 ${feed.name}:`, error.message); } }// 更新运行时间awaitupdateLastRunTime();console.log('RSS 收集完成!');}asyncfunctionsaveArticle(article) {const oc = newOpenClaw();// AI 生成摘要和标签const analysis = await oc.ai.analyze({task: 'article_analysis',input: article.content.substring(0, 3000) });// 创建笔记const note = {title: article.title,url: article.url,author: article.author,date: newDate(article.date).toISOString().slice(0, 10),source: article.source,category: article.category,tags: analysis.tags,summary: analysis.summary,key_points: analysis.keyPoints,content: article.content,value_score: article.value_score };// 保存文件const filename = `${note.date}_${note.title.replace(/[^a-zA-Z0-9\u4e00-\u9fa5]/g, '_')}.md`;const filepath = path.join('./knowledge/Resources/Inbox', filename);const markdown = generateMarkdown(note); fs.writeFileSync(filepath, markdown);// 发送到待读列表await oc.wecom.send({content: `📰 新文章待读\n\n标题:${note.title}\n来源:${note.source}\n价值分:${note.value_score}/10` });}functiongenerateMarkdown(note) {return`# ${note.title}**来源:** [${note.source}](${note.url}) **作者:** ${note.author}**日期:** ${note.date}**标签:** ${note.tags.join(', ')}**价值分:** ${note.value_score}/10---## AI 摘要${note.summary}## 关键点${note.key_points.map(p => `- ${p}`).join('\n')}## 原文内容${note.content}---## 我的思考<!-- 在此添加你的思考 -->## 相关笔记<!-- AI 会自动填充相关笔记链接 -->---*创建时间:${newDate().toISOString()}* `.trim();}asyncfunctiongetLastRunTime() {const statePath = './state/rss-collector.json';try {const state = JSON.parse(fs.readFileSync(statePath, 'utf-8'));returnnewDate(state.lastRun); } catch {returnnewDate(0); // 首次运行 }}asyncfunctionupdateLastRunTime() {const statePath = './state/rss-collector.json'; fs.writeFileSync(statePath, JSON.stringify({lastRun: newDate().toISOString() }, null, 2));}collectRSS().catch(console.error);步骤 3:设置定时任务
# 每 2 小时收集一次openclaw cron create \ --name "RSS 自动收集" \ --schedule "0 */2 * * *" \ --command"node ~/.openclaw/workspace/scripts/rss-collector.js" \ --enabled true需求: 看到好文章,一键保存到知识库。
创建浏览器书签脚本:
// 书签代码(保存为浏览器书签)javascript:(function(){const data = {title: document.title,url: location.href,content: document.body.innerText,selected: window.getSelection().toString() };fetch('http://localhost:18789/api/clip', {method: 'POST',headers: {'Content-Type': 'application/json'},body: JSON.stringify(data) }).then(() => {alert('已保存到知识库!'); });})();服务端接收脚本:
// ~/.openclaw/workspace/scripts/web-clipper-server.jsconst { OpenClaw } = require('openclaw-sdk');const express = require('express');const fs = require('fs');const path = require('path');const app = express();app.use(express.json());app.post('/api/clip', async (req, res) => {const oc = newOpenClaw();const { title, url, content, selected } = req.body;// AI 处理const analysis = await oc.ai.analyze({task: 'clip_analysis',input: selected || content.substring(0, 2000) });// 创建笔记const note = {title: title,url: url,date: newDate().toISOString().slice(0, 10),tags: analysis.tags,summary: analysis.summary,selected_text: selected,full_content: content };// 保存const filename = `${note.date}_${title.replace(/[^a-zA-Z0-9\u4e00-\u9fa5]/g, '_')}.md`;const filepath = path.join('./knowledge/Resources/Inbox', filename);const markdown = `# ${note.title}**链接:** ${url}**日期:** ${note.date}**标签:** ${note.tags.join(', ')}---## AI 摘要${note.summary}## 选中内容${note.selected_text || '全文剪藏'}---## 我的思考<!-- 在此添加思考 -->---*剪藏时间:${newDate().toISOString()}* `.trim(); fs.writeFileSync(filepath, markdown); res.json({ success: true, filepath });});app.listen(3456, () => {console.log('剪藏服务运行中...');});需求: 公众号文章自动保存到知识库。
创建收集脚本:
// ~/.openclaw/workspace/scripts/wechat-collector.jsconst { OpenClaw } = require('openclaw-sdk');const fs = require('fs');asyncfunctioncollectWeChatArticles() {const oc = newOpenClaw();// 1. 获取星标公众号列表const accounts = awaitgetStarredAccounts();for (const account of accounts) {// 2. 获取最新文章const articles = awaitfetchWeChatArticles(account.id);for (const article of articles) {// 3. 检查是否已收集const exists = awaitcheckIfCollected(article.url);if (exists) continue;// 4. 抓取文章内容const content = awaitfetchArticleContent(article.url);// 5. AI 分析const analysis = await oc.ai.analyze({task: 'article_analysis',input: content.substring(0, 3000) });// 6. 保存笔记awaitsaveWeChatArticle({title: article.title,url: article.url,account: account.name,date: article.publishTime,content: content,analysis: analysis });console.log(`已保存:${article.title}`); } }}asyncfunctionsaveWeChatArticle(article) {const markdown = `# ${article.title}**公众号:** ${article.account}**日期:** ${newDate(article.date).toLocaleDateString('zh-CN')}**链接:** ${article.url}**标签:** ${article.analysis.tags.join(', ')}---## AI 摘要${article.analysis.summary}## 关键点${article.analysis.keyPoints.map(p => `- ${p}`).join('\n')}## 原文${article.content}---## 我的思考<!-- 在此添加思考 -->---*收集时间:${newDate().toISOString()}* `.trim();const filename = `${article.account}_${article.date}_${article.title.replace(/[^a-zA-Z0-9\u4e00-\u9fa5]/g, '_')}.md`; fs.writeFileSync(`./knowledge/Resources/WeChat/${filename}`, markdown);}collectWeChatArticles().catch(console.error);需求: 走路/开车时有想法,语音输入保存。
创建语音收集脚本:
// ~/.openclaw/workspace/scripts/voice-note.jsconst { OpenClaw } = require('openclaw-sdk');const fs = require('fs');asyncfunctioncreateVoiceNote(audioPath) {const oc = newOpenClaw();// 1. 语音转文字const transcription = await oc.ai.transcribe({audio: audioPath,language: 'zh-CN' });// 2. AI 整理const organized = await oc.ai.organize({task: 'voice_note_organization',input: transcription });// 3. 创建闪念笔记const note = {type: 'fleeting_note',content: organized.text,tags: organized.tags,action_items: organized.actionItems,created_at: newDate().toISOString() };// 4. 保存const filename = `voice_${newDate().toISOString().slice(0,19).replace(/:/g,'-')}.md`;const markdown = `# 语音笔记**时间:** ${note.created_at}**标签:** ${note.tags.join(', ')}---## 内容${note.content}## 行动项${note.action_items.map(a => `- [ ] ${a}`).join('\n') || '无'}---*语音转文字,可能有误差* `.trim(); fs.writeFileSync(`./knowledge/Resources/Inbox/${filename}`, markdown);console.log('语音笔记已保存!');}createVoiceNote(process.argv[2]).catch(console.error);实施前后对比:
信息收集的目标不是囤积,而是为后续处理提供原料。
让系统处理:
全渠道自动收集 AI 初步筛选 自动标签分类 统一格式存储
你专注于:
判断信息价值 深度阅读理解 思考内化连接 行动实践应用
收集是第一步,后续还有整理、连接、输出。
系列教程:个人知识管理实战 第 2 篇
上一篇: 第 1 篇:入门指南
下一篇: 第 3 篇:笔记系统实战
夜雨聆风