三阶段实战:Playwright CLI + Skills 打造自动 AI 简报系统

Posted by Corey Blog on April 26, 2026

三阶段实战: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 脚本。 要求:

  1. 脚本可以独立运行,不需要 AI 参与
  2. 包含完整的延时和错误处理
  3. 使用 playwright-cli 命令
  4. 最后发送邮件到 2363613998@qq.com
  5. 脚本执行后输出简报文件到本地 ```

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 邮件送达排查

如果邮件未能成功送达,可检查以下几点 :

  1. 确保正确 await:如果使用自定义 Reporter,发送邮件的异步函数需要正确 await
  2. 配置 SMTP:QQ 邮箱需要使用授权码而非密码
  3. 检查垃圾箱:自动发送的邮件可能被归类为垃圾邮件

七、三阶段对比总结

维度 阶段一:即时 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 不仅会帮你完成工作,还会帮你把这份能力永久的保留下来