三阶段实战:Playwright CLI + Skills 打造自动 AI 简报系统
如果你还在手动搜索、复制、粘贴 AI 行业的新闻,那你还停留在信息获取的 1.0 时代。
真正的 2.0 时代,是你睡一觉醒来,邮箱里已经躺着一份排版精美的《AI 行业简报》,内容包括昨天所有重要的 AI 动态——全过程零人工干预,0 Token 消耗。
这不是科幻。这是 Playwright CLI + Skills + 固化脚本 架构能做到的事情。
本文将用一个完整的实战案例,带你从零搭建一套自动化 AI 简报系统。示例目标:获取 AI 行业最新动态,汇总成简报,发送到指定邮箱。
一、整体架构:三阶段演进路线
我们把这套系统分为三个演进阶段:
| 阶段 | 方案 | Token 消耗 | 适用场景 |
|---|---|---|---|
| 阶段一 | Playwright CLI + 即时 Prompt | 较高(每次消耗 Token) | 临时需求、快速验证 |
| 阶段二 | Playwright CLI + Skills | 显著降低(约 1/10) | 固定流程、需 AI 弹性处理 |
| 阶段三 | 固化脚本(独立执行) | 0 Token | 成熟流程、定时任务 |
三个阶段是一个完整的降本增效路径:让 AI 替你踩坑 → 把经验固化成 Skill → 把固定流程写成脚本。
二、前置准备:环境搭建
在开始任何阶段之前,需要完成基础环境配置。
2.1 安装 Playwright CLI
1
2
3
4
5
6
7
8
9
# 全局安装 Playwright CLI
npm install -g @playwright/cli@latest
# 验证安装
playwright-cli --version
# 预期输出:1.46.0 或更高
# 安装浏览器
npx playwright install
2.2 安装 Skills
在项目目录中安装 Skills:
1
2
3
4
5
# 创建项目目录
mkdir ai-news-bot && cd ai-news-bot
# 安装 Skills(这一步很重要!)
playwright-cli install --skills
2.3 配置 AI Agent
启动 Claude Code 并验证 Skills 加载:
1
claude
在 Claude Code 中输入 /skills,应该能看到 playwright-cli 技能已加载 。
三、阶段一:Playwright CLI + 即时 Prompt
第一阶段的目标是用手工指令完成一次完整的新闻采集和邮件发送,让 AI 自己摸索出最佳路径。
3.1 设计采集任务
打开 Claude Code,输入以下指令:
1
2
3
4
5
6
7
8
使用 playwright-cli,帮我完成以下任务:
1. 打开 https://www.infoq.cn/topic/AI,获取当天关于 AI 的最新文章标题和链接
2. 再打开 https://36kr.com/information/ai,获取 AI 相关新闻标题和链接
3. 将采集到的信息汇总成一份简报,内容包括:
- 简报标题:AI 行业日报 YYYY-MM-DD
- 按来源分类列出文章标题和链接
4. 最后,使用邮件发送功能,将简报发送到 2363613998@qq.com
3.2 AI 执行过程详解
AI 收到指令后,会执行以下步骤:
第一步:学习 Skills - 读取 .playwright/skills/ 中的技能文件,了解 playwright-cli 的使用方法。
第二步:打开第一个网页并获取快照
1
2
3
4
5
> playwright-cli open https://www.infoq.cn/topic/AI --headed
✅ 浏览器已打开
> playwright-cli snapshot
📸 快照保存到 .playwright-cli/snapshot-xxx.yml
快照内容示例(YAML 格式):
1
2
3
4
5
6
- heading "AI 前沿" [ref=e1]
- article [ref=e2]
- link "OpenAI 发布新模型..." [ref=e3]
- link "Google DeepMind 最新突破..." [ref=e4]
- article [ref=e5]
- link "Meta 开源 Llama 3..." [ref=e6]
第三步:提取文章信息
AI 读取快照文件,识别所有 link 标签,提取标题和 href 属性。
第四步:重复对 36Kr 执行相同操作
1
2
> playwright-cli open https://36kr.com/information/ai --headed
> playwright-cli snapshot
第五步:汇总生成简报
AI 将采集到的数据汇总成 Markdown 格式的简报。
第六步:发送邮件
1
2
3
4
> 使用 playwright-cli 打开邮箱服务,撰写邮件...
> 粘贴简报内容...
> 填写收件人 2363613998@qq.com...
> 点击发送...
3.3 阶段一的局限
第一次运行通常会消耗较多 Token。根据实测数据,类似的首次探索任务大约会消耗 30-40% 的上下文窗口 。
原因包括:
- AI 需要自己摸索页面结构
- 可能需要多次尝试找到正确的元素
- 邮件发送可能需要调试登录逻辑
四、阶段二:Playwright CLI + Skills(沉淀经验)
第一阶段虽然成功了,但消耗的 Token 太多。我们需要把 AI 摸索出来的经验固化,让下次执行更高效。
4.1 创建 Skill:让经验可复用
在 Claude Code 中输入:
1
2
3
4
5
6
7
8
请根据刚才执行的全部过程,创建一个新的 skill,命名为 "ai-news-briefing",
把以下内容固化到 skill 中:
1. 采集的目标网站和对应的选择器规则
2. 每个网站的具体操作步骤
3. 简报的格式模板
4. 邮件发送的配置和步骤
5. 执行过程中遇到的坑和解决方案
4.2 Skill 文件结构
AI 会创建类似这样的目录结构:
1
2
3
4
5
6
7
8
9
.claude/skills/ai-news-briefing/
├── SKILL.md # 主技能文件
├── references/
│ ├── infoq-selectors.md # InfoQ 页面选择器规则
│ ├── 36kr-selectors.md # 36Kr 页面选择器规则
│ └── email-config.md # 邮件发送配置
└── scripts/
├── parse-infoq.js # InfoQ 解析脚本
└── parse-36kr.js # 36Kr 解析脚本
4.3 SKILL.md 核心内容示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# AI 行业简报生成技能
## 适用场景
当用户要求生成 AI 行业日报或简报时,使用此技能。
## 数据源配置
| 来源 | URL | 内容选择器 |
|:---|:---|:---|
| InfoQ | https://www.infoq.cn/topic/AI | article.compu-database-table |
| 36Kr | https://36kr.com/information/ai | article.item-title |
## 操作流程
1. 使用 `playwright-cli open <url> --headed --persistent` 打开页面
2. 执行 `playwright-cli snapshot` 获取页面结构
3. 从快照中提取标题和链接
4. 汇总数据生成简报
5. 发送邮件到 2363613998@qq.com
## 注意事项
- 页面可能存在动态加载,需要等待 2-3 秒再截图
- 36Kr 需要滚动加载更多内容
- 邮件使用 `--persistent` 保持登录状态
## 简报模板
```markdown
# AI 行业日报 [日期]
## 📰 InfoQ 动态
- [标题1](链接1)
- [标题2](链接2)
## 🔥 36Kr 热闻
- [标题1](链接1)
- [标题2](链接2)
---
*本简报由 AI 自动生成 | 采集时间: [时间]*
1
2
3
4
5
### 4.4 验证 Skill 效果
清理上下文后,重新执行任务:
使用 ai-news-briefing skill,生成今天的 AI 行业简报并发送给我
1
2
3
4
5
6
7
8
9
10
11
12
此时任务执行的 Token 消耗会显著降低。实测数据显示,有 Skill 指导的任务 Token 消耗约为首次探索的 **1/10** 。
## 五、阶段三:固化成 0 Token 脚本
很多固定工作流其实不需要 AI 参与,只需要让 AI **帮你写一次脚本**。
### 5.1 让 AI 把 Skill 转写成脚本
在 Claude Code 中输入:
请把 ai-news-briefing skill 中描述的全流程,转写成一个可以直接执行的 PowerShell 脚本。 要求:
- 脚本可以独立运行,不需要 AI 参与
- 包含完整的延时和错误处理
- 使用 playwright-cli 命令
- 最后发送邮件到 2363613998@qq.com
- 脚本执行后输出简报文件到本地 ```
5.2 AI 生成的脚本示例
AI 会生成类似这样的 PowerShell 脚本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# ai-news-briefing.ps1
# AI 行业简报自动采集脚本 - 0 Token 运行
param(
[string]$Recipient = "2363613998@qq.com"
)
$Date = Get-Date -Format "yyyy-MM-dd"
$BriefFile = "briefing_$Date.md"
$SmtpServer = "smtp.qq.com"
$SmtpPort = 587
$From = "your-email@qq.com" # 替换为你的邮箱
# 函数:采集 InfoQ
function Get-InfoQNews {
playwright-cli open https://www.infoq.cn/topic/AI --headed --persistent
Start-Sleep -Seconds 3
playwright-cli snapshot | Out-File -FilePath "infoq_snapshot.yml"
# 提取标题和链接(简单示例,实际可用正则或 JSON 解析)
$news = @()
# ... 解析逻辑
return $news
}
# 函数:采集 36Kr
function Get-36KrNews {
playwright-cli open https://36kr.com/information/ai --headed --persistent
Start-Sleep -Seconds 3
# 滚动加载更多
playwright-cli eval "window.scrollTo(0, document.body.scrollHeight)"
Start-Sleep -Seconds 2
playwright-cli snapshot | Out-File -FilePath "36kr_snapshot.yml"
$news = @()
# ... 解析逻辑
return $news
}
# 函数:生成简报
function Generate-Briefing {
param($InfoQNews, $Kr36News, $Date)
$content = @"
# AI 行业日报 $Date
## 📰 InfoQ 动态
$($InfoQNews | ForEach-Object { "- [$_($_.Title)]($($_.Url))`n" })
## 🔥 36Kr 热闻
$($Kr36News | ForEach-Object { "- [$_($_.Title)]($($_.Url))`n" })
---
*本简报由自动化脚本生成 | 采集时间: $(Get-Date -Format "yyyy-MM-dd HH:mm:ss")*
"@
$content | Out-File -FilePath $BriefFile -Encoding UTF8
Write-Host "✅ 简报已生成: $BriefFile"
}
# 函数:发送邮件(使用 Blat 或 PowerShell 内置)
function Send-EmailReport {
$subject = "AI 行业日报 $Date"
$body = Get-Content -Path $BriefFile -Raw
# 使用 PowerShell 内置的 Send-MailMessage(需要配置 SMTP)
Send-MailMessage -To $Recipient `
-From $From `
-Subject $subject `
-Body $body `
-SmtpServer $SmtpServer `
-Port $SmtpPort `
-UseSsl
}
# 主流程
Write-Host "🚀 开始采集 AI 行业动态..."
$infoQ = Get-InfoQNews
Write-Host "✅ InfoQ 采集完成,共 $($infoQ.Count) 条"
$kr36 = Get-36KrNews
Write-Host "✅ 36Kr 采集完成,共 $($kr36.Count) 条"
Generate-Briefing -InfoQNews $infoQ -Kr36News $kr36 -Date $Date
Send-EmailReport
Write-Host "✅ 简报已发送至 $Recipient"
Write-Host "🎉 任务完成!消耗 Token: 0"
5.3 执行固化脚本
将脚本保存后,直接执行:
1
.\ai-news-briefing.ps1
输出示例:
1
2
3
4
5
6
🚀 开始采集 AI 行业动态...
✅ InfoQ 采集完成,共 8 条
✅ 36Kr 采集完成,共 12 条
✅ 简报已生成: briefing_2026-04-26.md
✅ 简报已发送至 2363613998@qq.com
🎉 任务完成!消耗 Token: 0
这就是 0 Token 魔法:脚本完全独立运行,没有任何 AI 模型参与 。
六、深化:让简报更智能
6.1 添加邮件附件功能
如果希望以 HTML 格式发送邮件(排版更美观),可以使用 nodemailer 等工具。社区已有人实现了 Playwright 的邮件报告功能 :
1
2
# 安装邮件发送依赖
npm install playwright-email-reporter
配置示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// playwright.config.ts
import { defineConfig } from "@playwright/test";
export default defineConfig({
reporter: [
[
"playwright-email-reporter",
{
send: "always",
from: "sender@example.com",
to: "2363613998@qq.com",
subject: "AI 行业日报",
html: (result, testCases) => {
// 动态生成 HTML 报告
return generateHTMLReport(testCases);
}
}
]
]
});
6.2 添加定时任务
可以使用系统的定时任务工具,让脚本每天自动运行:
Windows 任务计划程序:
1
2
# 创建每天 9:00 执行的任务
schtasks /create /tn "AIDailyBriefing" /tr "powershell -File C:\scripts\ai-news-briefing.ps1" /sc daily /st 09:00
Linux Crontab:
1
2
3
4
5
# 编辑 crontab
crontab -e
# 添加每天 9:00 执行
0 9 * * * /usr/bin/pwsh /home/user/scripts/ai-news-briefing.ps1
6.3 添加内容摘要(可选)
如果需要 AI 对采集的内容进行智能摘要而非简单罗列,可以在脚本中调用免费的 LLM API:
1
2
3
4
5
6
7
8
9
10
# 调用本地或免费 API 生成摘要
$summary = Invoke-RestMethod -Uri "http://localhost:11434/api/generate" `
-Method POST `
-Body (@{
model = "llama3.2"
prompt = "请用一句话总结以下 AI 新闻:$articleContent"
stream = $false
} | ConvertTo-Json)
# 将摘要加入简报
注意:这一步会重新消耗 Token,适合对摘要质量有高要求的场景。
6.4 邮件送达排查
如果邮件未能成功送达,可检查以下几点 :
- 确保正确 await:如果使用自定义 Reporter,发送邮件的异步函数需要正确
await - 配置 SMTP:QQ 邮箱需要使用授权码而非密码
- 检查垃圾箱:自动发送的邮件可能被归类为垃圾邮件
七、三阶段对比总结
| 维度 | 阶段一:即时 Prompt | 阶段二:+ Skills | 阶段三:固化脚本 |
|---|---|---|---|
| Token 消耗 | 30-40% 上下文 | 约 5% 上下文 | 0 |
| 执行速度 | 较慢(AI 推理) | 中等 | 极快 |
| 灵活性 | 高(可随意调整) | 中等 | 低(需改脚本) |
| 适用场景 | 临时需求、探索 | 固定流程、团队复用 | 成熟流程、定时任务 |
| 维护成本 | 低(一句话的事) | 中(更新 Skill) | 高(需懂代码) |
| 最佳实践 | 第一次探索 | 沉淀经验 | 上线运行 |
核心规律:让 AI 替你踩坑 → 把经验固化成 Skill → 把固定流程写成脚本 。
八、延伸应用
这套“三阶段”方法论可以应用到更多场景:
| 应用场景 | 阶段一(探索) | 阶段二(Skill) | 阶段三(脚本) |
|---|---|---|---|
| 竞品价格监控 | 人工指令抓取一次 | 固化抓取规则 | 定时运行,涨价时告警 |
| 社交媒体自动发布 | 摸索发文流程 | 沉淀发布规范 | 一键发布到多平台 |
| Web 应用 E2E 测试 | 探索测试路径 | 固化 Page Object | CI 自动执行 |
| 数据报表生成 | 手工采集汇总 | 固化数据源 | 每天自动发送报表 |
九、结语
如果说去年我们还在教 AI “如何写代码”,那么今年我们正在教 AI “如何像人一样使用电脑”,更重要的是——把 AI 摸索出的经验固化下来,变成可以0 Token 运行的资产。
Playwright CLI 给了 AI 操作浏览器的手脚, Skills 给了 AI 遵循规范的大脑, 固化脚本 让重复劳动彻底告别 Token 消耗。
这套组合拳让 AI 从“每次都要花钱请的顾问”变成了“一次投资、永久使用的自动化工具”。
现在就开始吧,打开终端,创建你的第一个 Skill,然后对它说:
“使用 ai-news-briefing skill,生成今天的 AI 行业日报,发送到 2363613998@qq.com。”
你会发现,AI 不仅会帮你完成工作,还会帮你把这份能力永久的保留下来。