学员实践:openbili AI 接入驾驶舱介绍
Calvin 是「翔宇工作流」的学员,方向是 AI 模型中转。他把这件事做成了独立站点「openbili」,覆盖 OpenAI SDK 兼容、模型路由、调用成本可见、失败可解释。本文将其介绍给关注同方向的读者。
用 Make.com 和 Firecrawl 爬虫搭建全自动博客文章引流工作流。Firecrawl 抓取目标网站内容转为 Markdown,ChatGPT 基于抓取素材生成原创 SEO 文章,Make 自动发布到 WordPress 博客。教程涵盖 Firecrawl API 配置、网页内容清洗策略、SEO 文章结构设计和 WordPress REST API 对接,实现从素材采集到文章...
做自媒体最头疼的事情之一,就是内容产出跟不上发布节奏。尤其是想做 SEO 引流的朋友,手动找素材、翻译、排版、发布,一篇文章折腾下来半天就没了。更别提你想同时覆盖公众号、小红书、博客多个平台——光是格式转换就够喝一壶的。
我是翔宇。翔宇在做内容引流实验时测试了五种爬虫方案,Firecrawl 在输出质量和稳定性上表现最好。
我一直在想,有没有一种方法,能把"从采集到发布"这条链路完全自动化?输入一个网址,工作流自动抓取内容、翻译、去除原站推广、生成图文混排的博客文章,顺带连小红书笔记都一起出了。
这期视频我就分享这样一套工作流。核心用到两个工具:Firecrawl 做全网数据采集,Make 串联整个自动化流程。一次配置,每天定时运行,3000 多篇文章分批处理,全程无需手动干预。
本教程配套视频已发布在 YouTube,建议搭配视频一起学习效果更佳。
Firecrawl 是一个自动化网络爬虫工具,核心能力是将网站内容转化为干净的 Markdown 格式——这个格式既适合大语言模型处理,也可以直接用于博客文章发布。
和我之前视频介绍过的 Jina Reader API 类似,Firecrawl 也能抓取网页内容并转成 Markdown。但两者有几个关键区别:
| 对比项 | Jina Reader API | Firecrawl |
|---|---|---|
| 部署方式 | 在线服务,通过 API 调用 | 支持本地部署,也有在线版 |
| 免费额度 | 每个 API Key 100 万次 | 在线版每月 500 页 |
| 输出格式 | 纯文本为主 | Markdown 图文混排 |
| 开源 | 否 | 是 |
| 适合场景 | 大量纯文本处理 | 图文混排、多媒体内容采集 |
Firecrawl 最大的优势在于图文混排。它抓取的 Markdown 会保留原文中的图片链接、表格、加粗等格式,生成的内容可以直接用,省去了手动配图的麻烦。
Firecrawl 提供三个核心端点,各司其职:
Map(站点地图):输入一个网站根地址,返回该网站下所有子页面的 URL 列表。速度极快,我测试一个网站返回了 3553 个子链接。还支持关键词过滤,比如只筛选包含 "RSS" 的页面。
Scrape(单页抓取):输入一个具体页面的 URL,返回该页面的 Markdown 内容。图片链接、文本格式、表格结构全部保留。
Crawl(多页抓取):从指定 URL 开始,递归遍历所有子页面,批量抓取内容。适合需要整站采集的场景。
简单总结:Map 爬链接,Scrape 爬单页内容,Crawl 爬全站内容。
整套工作流的逻辑分为上下两部分:
上半部分——获取链接:Basic Trigger 输入目标网站 → HTTP 请求调用 Map 端点获取所有子页面 → Iterator 遍历器逐个发射 → Notion 创建数据条目。
下半部分——采集与生成:Scrape 端点抓取单页 Markdown → 第一个 LLM 模块翻译并去除推广内容 → 第二个 LLM 模块生成小红书笔记 → 第三个 LLM 模块校对格式 → 保存到 Notion。
这套流程跑一次,一篇完整的博客文章加一条小红书笔记就同时出来了。
在 Make 中新建场景,第一个模块选择 Basic Trigger。在触发器中添加一个条目,输入目标网站的地址。
这里有个技巧:观察你要采集的网站,找到目标内容的父级域名。比如你想采集某个网站 /blog 下的所有文章,就把 URL 填到 /blog 这一级,Map 端点会自动抓取它下面的所有子页面。
添加 HTTP 模块,选择"创建一个请求"。几个关键配置:
Authorization(API Key)和 Content-Type(application/json)关于 HTTP 模块的几个要点:POST 用于创建新请求,GET 用于检索已有数据;Header 里放 API 密钥,相当于请求的"钥匙";Timeout 默认 40 秒,如果目标网站响应慢可以调到 300 秒。
Map 端点返回的是一个包含几千条 URL 的数组。我们需要用 Iterator(遍历器)把数组拆成单条数据,逐个发射给后续模块。
添加 Iterator 模块后,选择 Map 端点返回的数组。注意这里需要用 map() 函数提取数组中的 Value 字段——直接选数组可能拿不到数据。
在 Notion 中创建一个数据库,结构如下:
| 字段 | 类型 | 说明 |
|---|---|---|
| 标题 | Title | 文章标题 |
| 采集状态 | Select | 开始 / 已完成 |
| 网址 | Text | 采集的原始 URL |
| 小红书 | Text | 生成的小红书笔记内容 |
在 Make 中添加两个 Notion 模块:
再添加一个 HTTP 请求模块,这次调用 Scrape 端点。配置和 Map 类似,区别在于 URL 换成 Scrape 端点,Body 里面的 URL 填遍历器输出的具体页面地址,格式指定为 Markdown。
这是整个工作流的核心,串联三个 LLM 模块:
模块一:翻译与去推广。系统提示词要求将英文内容翻译为中文,同时删除原站的推广植入、作者信息、站内链接,仅保留核心内容和图片。User 角色输入 Scrape 返回的 Markdown 内容。Token 上限设 4096。
模块二:生成小红书笔记。系统提示词要求从翻译后的文章中提炼小红书笔记,输出 JSON 格式包含标题、正文(300-400 字)、标签。Token 上限设 1000,开启 JSON 解析。
模块三:文章校对。因为删除推广内容后,文章的编号、表格条目数可能不一致,这个模块负责整理编号、优化段落结构、清理冗余的 Markdown 格式。
最后两个 Notion 模块:一个更新数据条目,把采集状态改为"已完成",填入标题和校对后的文章内容;另一个追加小红书笔记的标题、正文、标签到对应字段。
3000 多条数据不可能一次跑完。我设计了一个日期公式来实现每日自动分批:
用当前日期减去一个固定的起始日期,得到天数差,乘以每批数量(比如 10),就是今天的起始位置。加上批量数就是结束位置。比如第一天采集第 0-10 条,第二天采集第 10-20 条,以此类推。
在 Iterator 的过滤条件中设置 Bundle Order Position 大于等于起始值、小于结束值,再把场景的定时运行设为每天固定时间,整套流程就完全自动化了。
Q:Firecrawl 免费版够用吗?
每月 500 页的免费额度对个人用户来说基本够用。如果需要大规模采集,可以考虑本地部署开源版本,没有页数限制。
Q:出现 400 错误 "messages must contain the word JSON" 怎么办?
这通常是因为在 LLM 模块中选择了 JSON 输出格式,但提示词里没有包含 JSON 相关的指示。如果不需要 JSON 输出,把格式改成 Text 即可。
Q:有些网站抓取失败怎么办?
部分网站有严格的反爬机制,Firecrawl 无法保证 100% 成功率。遇到这种情况可以尝试更换目标网站,或者等 Firecrawl 后续推出的 SmartCrawl 端点,它结合了 AI 技术能更好地应对复杂页面。
Q:如何确保映射没有出错?
在 Make 中运行后,点击每个模块查看 Input Bundle 和 Output Bundle 的实际数据。特别注意模块编号,复制模块后要检查映射的源模块编号是否正确。JSON Body 中如果有多余的空格或特殊符号也会导致请求失败。
这套工作流把"全网采集 → 翻译去推广 → 图文混排博客 → 小红书笔记 → 分批定时发布"整条链路串了起来,一次配置后每天自动运行,真正做到了内容生产的全自动化。最关键的是,Firecrawl 抓取的 Markdown 保留了原文的图片和格式,生成的文章质量远高于纯文本采集再手动配图的方式。
下一期我会分享小红书图文笔记的批量制作方法,教你用 Make 实现图片创作的自动化。
每周精选 AI 编程与自动化实战内容,直达你的邮箱