☰
RSS+大模型:3分钟跑完内容自动化的个人工作流
2026/10/17 3:07:14 网站建设 项目流程

上周在南方某城市的一场线下开发者聚会上,我现场演示了自己搭的一个自动化小工具“龙虾”:从信息抓取、AI辅助写作,到内容平台提交发布,一条龙跑完只花了3分钟。当时在场有朋友的第一反应不是“好厉害”,而是“这玩意儿是不是用来批量发水文洗稿的”。我当场就笑了,因为这个工具在设计时做的第一件事,恰恰是给自动化套上缰绳——能自动完成的只是重复劳动,真正的内容判断权始终留给人。

“龙虾”本质上是串起了“信息采集 → 初稿生成 → 草稿提交”三环的个人内容工作流,适合几类人:经常做技术文献整理的自媒体作者,有固定更新频率的社区写作者,需要把行业资讯快速变成素材库的运营同学。它不追求让机器独立发稿,而是把“找资料、写初稿、排版提交”这些耗时体力活砍到分钟级,让人的精力集中在选题判断、内容校对和价值把关。这套方案对个人免费可搭,不需要自建服务器,研究清楚了以后,你完全可以按自己的需求改出一套专属版本。

1. 3分钟背后的设计思路:先想清楚自动化的边界再动手

很多人一听“自动化写文章”,第一反应是套壳卖课、批量生成垃圾内容。但真正用自动化工具做内容的人会明白,这个方向的核心价值不在于“无人生成”,而在于“降低启动成本”。我搭“龙虾”之前,写完一篇正常的技术分享,平均要经历这些步骤:花半小时到一小时找选题、翻资讯、收集素材,再花一到两小时搭框架、写初稿,排版发布又得二十分钟。一套流程下来,两个多小时就没了,真正花在思考上的时间反而不多。

1.1 龙虾这个名字的来由,以及我盯上的效率痛点

给这个工具起名“龙虾”,纯粹是命名恶趣味:工具本身很小,像只小虾米,但跑通的是“一条龙”流程。“龙虾”两个字合在一起,既说明体量轻,也点明它能做的事很完整。用顺口之后,这个名字反而成了项目最自然的代号,代码仓库、脚本目录、定时任务名都直接用了它。

我真正想解决的效率痛点,不是“写得快”,而是“开始得慢”。写技术文章最难的不是打字,是面对空白文档时的启动阻力。每次要从零开始找资料、想框架,大脑很容易被这个前期成本吓退,拖到半夜还是一个字没写。所以我需要的不是一台写作机器,而是一个能替我完成“热身动作”的助手:它把资料找好、把初稿骨架搭好,我再上手去修改、补充、校正,写作门槛一下子就低了。

这套思路落到工具设计上,就变成三个最小可行模块:一个负责抓取和聚合资讯,一个负责调用大模型接口生成初稿,一个负责通过平台开放接口提交草稿。三个模块用脚本编排,串成流水线,3分钟跑完是这个流水线在普通家庭宽带和标准API响应耗时下的真实表现。

1.2 为什么我坚决不用通用爬虫,而只接RSS和开放接口

这里有一个很重要的取舍。“抓取”两个字听起来很简单,但在实现路线上分成两种完全不同的做法:一种是通用网页爬虫,看到一个网页就下载、解析HTML、提取正文;另一种是接入RSS订阅源和开放API,从数据源直接拿结构化内容。我一开始也试过前一种,但很快放弃了,原因很现实。

第一是稳定性的问题。网站页面结构说改就改,今天还在的CSS选择器,明天可能整块DOM都换了。每换一次版式,解析逻辑就要跟着调一次,维护成本高得离谱。而RSS的XML结构几十年没怎么变过,解析代码写一次就能长期运行,几乎不用维护。

第二是合规性的问题。通用爬虫很容易踩到robots协议、服务条款和版权归属的灰色地带;RSS订阅源本身就是为了让内容被订阅、被聚合而提供的,版权边界更清晰。我做一个面向个人工作流的效率工具,没必要让自己整天处于模糊地带。

第三是效率问题。一个网页下载下来,光HTML标签就能占大半体积,真正要的正文可能只有几百字;RSS源直接给标题、链接、摘要,字段干净,解析后直接能喂给大模型。同样是跑一次任务,RSS的投入产出比高得多。

所以“龙虾”的采集模块只做三件事:读RSS摘要、调用公开API、解析结构化元数据。如果你想把它用在别的领域,比如追踪某个行业的产品发布、论文更新、开源项目动态,只要找到对应的合规订阅源,思路完全一样。

1.3 拆成三个子任务而不是一个脚本:故障隔离与重试自由

第一版“龙虾”其实是一个巨型脚本,从抓取到写作到发布全部串在一个文件里。跑了一个星期之后我就后悔了,原因是有天模型接口超时,导致已经抓到本地的30条资讯全部没进入下一步,还得手动重新跑抓取任务。问题不在于接口不稳定——这是正常现象——而在于我设计错了任务边界。

后来我把流程拆成三个独立子任务,每个任务有自己的入口、日志和重试能力。抓取出问题,不耽误写作;写作超时,不耽误已经抓到的内容;发布失败,初稿还在本地缓存里,随时可以手动补发。每个子任务的产物都落盘成JSON文件,下一次运行时先检查已有产物,能跳过的步骤直接跳过。

这就像做饭:菜洗好了但灶台坏了,菜不会凭空消失;锅修好之后,重新开火就行,不需要重新买菜。模块化的好处不是省了多少代码,而是让每一步都可以独立验证、独立重跑,这对自动化流水线来说是基本要求。另外,模块化还能让你把替换任何一个环节的成本降到最低——哪天觉得某个大模型接口不好用了,只需要改写作模块的配置,其他模块完全不用动。

2. 核心模块拆解:采集、生成、发布三个环节的关键细节

整体框架定下来之后,接下来就是把三个模块逐个填实。“龙虾”使用的核心语言是Python,因为RSS解析、网络请求、JSON处理这些基础能力在Python里都是一行import的事,对个人工具来说开发效率最高。下面三个小节的代码都是简化后的核心骨架,能跑通主流程,你自己扩展的时候按同样的结构往里加逻辑就行。

2.1 抓取模块:feedparser与订阅源的规范化处理

抓取模块我用的库是feedparser,这是Python生态里处理RSS最成熟的库,没有之一。它的代码接口设计得很稳定,不管面对的是Atom还是RSS 2.0,解析结果都能统一成一个结构体。

import feedparser FEEDS = [ "https://example-news-feed.example/rss", # 示意地址,请替换成你常用的合规订阅源 ] def fetch_items(): results = [] for url in FEEDS: feed = feedparser.parse(url) for entry in feed.entries: results.append({ "title": entry.get("title", ""), "link": entry.get("link", ""), "summary": entry.get("summary", "")[:500], "published": entry.get("published", ""), "source": url, }) return results

代码本身不长,但有几个细节值得说清楚。summary字段我只截取前500个字符,这不是随手写的,而是出于两个考虑:一是大模型接口按token计费,摘要越长成本越高;二是RSS的摘要本来就是为了让读者判断“这条值不值得点开”的,500字以内足够完成这个使命。里面那行entry.get("title", "")也不能省,不同订阅源的字段完整度差异很大,用get加默认值,能保证某个源缺字段时不至于让整个脚本抛异常。

有了原始条目之后,我还会做一个匹配动作:把抓回来的每条资讯和我维护的“选题清单”做关键词交叉。“选题清单”存在一个本地JSON文件里,记录了我近期想写的方向和技术关键词。匹配上的条目才会进入写作环节,匹配不上的就存进素材库备查。这能避免一个常见问题——自动抓取的内容越来越多,但真正写的时候还是不知道写什么。

2.2 写作模块:四段式提示词模板才是质量上限

写作模块是“龙虾”里最值得琢磨的部分。用一句话“请把这段内容写成文章”来驱动大模型,我测试过很多次,结果基本都不能直接看——要么开头全是“随着时代的发展”,要么把300字的摘要扩写成2000字的空洞长文。后来我总结了经验,提示词必须使用“角色 + 任务 + 输出格式 + 限制”的四段式结构。

你是一名技术社区编辑,熟悉人工智能工具和信息整理。 根据以下标题和摘要,写一篇适合发布在技术社区的文章初稿。 要求: 1. 标题不超过30个字,保留关键信息; 2. 第一段直接说明背景,不要空话套话; 3. 正文结构清晰,尽量包含3个左右的小标题; 4. 总字数控制在800到1200字; 5. 结尾附上一条实事求是的使用提示。 资料: 标题:{title} 摘要:{summary}

把这段提示词放进请求里,模型的输出质量会明显上升一个台阶。原因是“输出格式”这一栏很关键:你给了明确的字数区间、小标题数量、段落组织方式,模型就不用自己猜“用户到底想要什么风格的文章”,产出自然更可控。

不过提示词只能解决一部分问题。模型生成的初稿里,还会出现“赋能”“抓手”“闭环”“助力”这类空泛词汇,整篇文章看似通顺,实则没什么信息增量。我在“龙虾”里加了一个轻量后处理规则:生成完初稿之后,本地脚本会对这些高频空词做标记,提示我哪些段落可能写虚了。遇到这种情况,我不会让脚本直接改,而是在人工审稿时重点关照这些段落。为什么不直接让脚本删掉?因为有些语境下这些词是必要的,机器判断不了,人的判断才是负责任的。

2.3 发布模块:始终以草稿优先,把最终决定权留给人

发布模块是最容易做错的地方。“龙虾”接入内容平台开放接口时,有一个设计原则是“可以自动提交,绝不直接公开”。默认的提交状态永远是draft(草稿),而不是publish(发布)。也就是说,哪怕整套自动化流程跑得再顺,文章最终出现在公开页面前,一定会有一个人工确认动作。

import os import requests def publish_draft(article): token = os.environ["PUBLISH_API_TOKEN"] resp = requests.post( "https://api.example-content-platform.com/v1/articles", headers={"Authorization": f"Bearer {token}"}, json={ "title": article["title"], "content": article["content"], "status": "draft", }, ) if resp.status_code == 201: article["status"] = "draft" return True article["status"] = "manual_review" return False

这段代码里有几个细节要讲。Token从环境变量读取而不是硬编码在源码里,这个习惯能避免你的密钥随着仓库一起泄露。接口返回非201状态码时,我不做无脑重试,而是把文章状态置为manual_review,转人工排查。这样做不是因为懒,而是因为发布接口返回错误往往意味着标题违规、内容重复或者账号异常,这种情况重试100次也没用,需要人来看。

文章本身的状态字段会经历这样一个流转链:created(刚抓取) → generated(初稿生成) → draft(已提交草稿) → published(人工确认发布)。手里有这条状态链,你会发现整个流程的透明度高了很多:每天打开日志,一眼就知道哪篇卡在哪个环节,哪篇该看还没看。这个习惯帮我养成了固定的“审稿时间窗口”,每天集中审一次,效率很高。

3. 实操记录:从零搭建跑通3分钟流水线

理论讲再多,不如亲手跑一遍。这一节我把搭建“龙虾”的完整操作过程记录下来,从环境准备、目录结构、时间分配,到实跑后的产物样式,都给一份可以直接参考的方案。

3.1 环境准备:安装依赖与目录结构的一次性配置

“龙虾”的运行环境很简单,一台装了Python 3.10以上的电脑就行。如果你用Windows,建议装个WSL;如果你用macOS或Linux,直接终端里操作。依赖只有三个库,写在requirements.txt里:

feedparser==6.0.11 requests==2.31.0 openai==1.30.0

安装命令就一行:

pip install -r requirements.txt

我把“龙虾”做成一个这样的目录结构:

lobster/ ├── config.yaml # 订阅源、模型参数、发布平台配置 ├── fetch.py # 抓取模块 ├── write.py # 写作模块 ├── publish.py # 发布模块 ├── run_all.py # 流水线编排入口 ├── data/ │ ├── feed_items.json # 抓取产物缓存 │ ├── drafts/ # 生成的文章草稿 │ └── status.json # 文章状态跟踪 └── prompts/ └── article.md # 写作提示词模板

配置独立放在config.yaml里,是“龙虾”能适配不同使用场景的关键。比如你今天想追的是AI行业新闻,明天想追的是开源项目动态,只需要改订阅源列表和提示词模板,其余代码一行都不用动。

3.2 3分钟的时间线拆解:每件事到底花了多久

现场演示3分钟跑完全程时,有朋友以为3分钟是极限压榨出来的产物。实际上,3分钟里有明确的时间分配,而且大头不在“抓取”,也不在“发布”,而在“写作”这一环。

环节耗时说明
抓取资讯(fetch)10~20秒取决于订阅源数量和网络延迟,缓存命中后可缩短到1秒
生成初稿(write)约2分钟大模型接口响应耗时占大头,提示词越长通常越慢
提交草稿(publish)2~8秒单个API请求,基本秒级完成
中间数据读写与匹配10秒左右本地JSON读写与关键词匹配,几乎可忽略

从这张表能看出来,3分钟的时间瓶颈完全取决于第三方接口的响应速度。如果你用的大模型接口比较稳定,整个流程甚至可以压到1分半。但反过来,如果接口超时两次,“龙虾”内置的重试机制会等30秒再试,单篇耗时就会拉到4到5分钟。所以我更愿意说“龙虾”的承诺是“一个可预期的短时间”,而不是一个严苛的数字。

3.3 实跑一次:完整执行链路与产物解析

跑起来之后,终端输出大致长这样:

$ python run_all.py [fetch] 正在读取 3 个订阅源... [fetch] 共发现 27 条新资讯,其中 4 条命中选题清单 [write] 生成文章《AI写作工具对技术内容生产流程的改进》 [write] 耗时 126 秒,输出 986 字 [publish] 已提交草稿,文章 ID: 987654 [status] 当前草稿箱待审核文章数: 3

对应的产物结构体长这样:

{ "title": "AI写作工具对技术内容生产流程的改进", "source_url": "https://example-news-feed.example/items/1234", "status": "draft", "created_at": "2026-03-28T15:30:00+08:00", "content": "# AI写作工具对技术内容生产流程的改进\n\n...正文内容...", "tags": ["AI写作", "效率工具"] }

到这里,“龙虾”的使命已经完成了99%,剩下的1%是我每天固定打开草稿箱,逐篇检查。检查的重点有三项:原始资讯里的关键信息有没有写错,模型补充的背景内容是不是准确,文章里有没有明显的AI腔调。全部确认没问题之后,我才会手动点击发布或定时发布。这个过程通常只要几分钟,但它是整个链条里最不能省略的一环。

4. 避坑实录与问题排查:真正跑了三个月才知道的细节

“龙虾”从第一个能跑的版本到现在,已经稳定跑了三个多月。这个过程中踩过的坑不少,有些问题光看官方文档根本想不到。把这些问题整理出来,比分享成功经验更有价值。

4.1 限流、超时和Token成本:自动化里的隐形支出

第三周的时候,我遇到过一次“灵异事件”:流程跑到写作模块总是失败,但手动测试接口又一切正常。后来看日志才发现,是连续跑了十几次之后触发了接口的每分钟请求次数限制。大模型的API限流策略通常分两种:每分钟请求次数限制,以及每分钟Token数限制。前者好理解,后者更隐蔽——哪怕你只发了5个请求,如果每个请求传了上万字的提示词,照样可能触发限流。

问题现象可能原因我的解决方案
偶发超时,重试后成功第三方接口波动增加超时重试,间隔30秒,最多3次
连续运行时报429状态码超过每分钟请求限制在请求之间加sleep,或把并发改为串行
费用明显上涨但产文量没变输入Token超量给summary截断字数,缩短提示词模板
生成内容越来越跑题上下文过度累积每个请求只喂单篇文章的资料,不携带历史记录

Token成本这块,我的经验是“能省则省”。刚开始RSS摘要直接全量传进去,一个月下来费用比预期高了不少。后来改成500字截断,并把提示词模板里的示例段落去掉,费用直接降了三分之一左右,产出质量基本没受影响。如果你用的是按量付费的模型接口,这是一笔很值得算的账。如果接口是免费的,虽然不心疼钱,但缩短输入也能让响应更快,同样有价值。

4.2 如何对付AI味:后处理规则与信息增量判断

AI味是个很难量化但每个人都能感知的东西。我刚开始用“龙虾”连续跑了几篇初稿,读完之后的统一感受是:内容都对,但读了等于没读,没有什么能让人记住的观点。这个问题靠改提示词只能缓解,不能根治。因为模型本来就没有真实使用经验和立场,它的“原创”本质上是对海量语料的概率组合。

我最终采用的办法是双管齐下。第一管是提示词里给模型植入“明确立场”的任务描述,比如“请基于实际使用经验展开,避免空泛评价”。第二管是后处理规则:脚本把初稿中高于一定频率出现的“赋能、助力、加速、打造、闭环”等词标记出来,我在审稿时看到这些标记就会主动重写对应段落。有些段落你不知道该写什么,就把自己的真实操作步骤、真实截图、真实数据填进去。信息增量这个东西,模型给不了,只有做过这件事的人能给。

另外,版权边界也值得一提。“龙虾”抓取的是RSS里的标题和摘要,不是原文全文,生成的初稿是基于摘要的二次整理。这些摘要只是写作线索,不是复制粘贴的对象。我在运行脚本时也刻意排除了那些“摘要即全文”的源,避免生成过程和原文构成实质性雷同。自动化工具是用来帮助思考的,不是用来搬运的,这个边界如果模糊了,整个项目也就变味了。

4.3 最后一道防线:人工审核不是可选项,是必选项

我见过不少自动化发布方案,设计思路是“全自动跑、零人工干预”,表达得很美好,但在真实使用中这种方案风险极高。除了内容质量问题,还有账号安全、平台规则、内容合规等一系列因素。平台开放API允许你提交内容,但不会豁免你的内容责任。文章发出去,署的是你的名,承担后果的也是你。

所以“龙虾”的默认行为是:自动生成,人工审核,才可发布。我把这个原则直接写进了发布模块的核心逻辑,只要接口支持草稿箱,就绝不提交“发布”状态。如果某次返回错误码,文章会进入manual_review队列,等待人工介入。这套机制会在你某天特别忙的时候体现价值:脚本已经帮你把能做的都做完了,你只需要花两三分钟扫一眼,说一声“行”或者“不行”。

从运营角度看,这个习惯还带来了一个额外好处:日积月累的审稿记录,会慢慢形成你自己的内容标准。哪些标题点击率高、哪些选题方向读者更买账、模型在什么情况下容易跑偏,这些判断会越来越准。工具是死的,判断力是活的,这也是为什么我一直觉得“人机协作”比“全自动无人工”更适合个人创作者。

最后再分享一个小技巧:别把你的模式局限在“文章”上。我在“龙虾”基础上只改了提示词模板,就把它扩展成了短视频脚本生成器和产品发布说明生成器。抓取逻辑、发布逻辑、状态管理代码几乎原封不动。你一旦真正理解了这套流程的设计逻辑,换一个内容形态只是换一张“提示词卡片”而已。自动化流水线最大的价值,不是让你今天多发了三篇内容,而是让你在很长一段时间里,持续用更低的成本做出可控的产出,并把省下来的时间真正花在值得判断的事情上。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询