以主机厂全球备件生态事业部视角,收集和分析汽车后市场每日资讯。所有行动均以主机厂视角出发。
在抓取任何固定来源之前,先问用户:
> "还有其他文章链接需要一起分析吗?请直接发 URL,或者回复「没有了」开始抓取。"
如果用户提供了链接,先判断 URL 类型,选择合适的抓取方式获取内容:
| URL 类型 | 抓取方式 |
|---|---|
| 微信公众号 (mp.weixin.qq.com) | "python" "scripts\fetch_wechat.py" " |
| 第一电动网 (d1ev.com) | requests + BeautifulSoup,选择器 div.main_content |
| 腾讯新闻 (view.inews.qq.com) | requests + BeautifulSoup,选择器 .content-article 或 article |
| 通用网页 | requests + BeautifulSoup,取最长文本块 |
用户回复「没有了」或「生成报告」后,进入 Step 2。
快捷指令:当用户说「直接开始」关键词时,跳过此步骤,直接进入 Step 2。
"python" "scripts\fetch_all.py"
输出统一 JSON,格式:[{title, url, time_raw, time_parsed, source, text?}]
来源:第一电动网 + 中国汽车报(QQ) + 汽车服务世界 + 盖世汽车 + 乘联分会。
抓取完成后,必须向用户输出各来源文章数量统计,让用户确认无遗漏后再进入筛选。格式:
📊 抓取结果:
第一电动网: XX篇
中国汽车报: XX篇
汽车服务世界: XX篇
盖世汽车: XX篇
乘联分会: XX篇
总计: XX篇
若某来源超时或为0篇,明确标注「⚠️ 超时」或「⚠️ 0篇」,询问用户是否重试或跳过。
在后续处理之前,先识别并拆分所有复合新闻(合集/早报/快讯汇总),使每一条都是独立新闻。
AI 基于以下标准智能判断一条新闻是否为复合新闻:
识别标准:
拆分规则:
| 规则 | 适用场景 | 操作 |
|------|----------|------|
| A — 标题拆分 | 标题含「;」分隔多个主题 | 按「;」拆分 |
| B — 板块拆分 | 正文含「国内新闻」「国际新闻」「企业新闻」「要闻」等板块 | 按板块切分,每个板块下的每条子新闻独立拆出 |
| C — 编号拆分 | 正文以序号组织,子新闻间以空行分隔 | 按序号/空行拆分 |
| D — 通用拆分 | 正文明显包含多个独立主题但无明确分隔符 | AI 根据语义边界拆分 |
拆分后的子新闻格式:
{
"title": "子新闻标题(AI 从原文提取或概括,简洁表达核心内容)",
"url": "父新闻的 url",
"time_raw": "继承",
"time_parsed": "继承",
"source": "父新闻来源",
"text": "子新闻的正文片段"
}
拆分后,所有子新闻与普通独立文章合并,形成统一的待筛选列表。
背景:AC汽车、汽车服务世界等公众号常发布合集类文章(如「汽服早报」「AC早报」),一篇文章包含多条独立新闻。拆分后所有子新闻的链接都指向同一篇合集文章。需用联网搜索追溯每一条子新闻的原始出处。
执行时机:Step 3 拆分完成后,Step 4 全文抓取之前。
识别标记:凡是 URL 相同的多条子新闻(即从同一篇合集拆出),进入追溯流程。
搜索策略:
web_search_baidu(query="<子新闻标题>", top_k=3)
取子新闻标题中核心关键词(去掉「汽服早报」「AC早报」等栏目前缀),构造搜索词。
链接替换规则:
| 搜索结果情况 | 处理方式 |
|---|---|
| 找到标题高度匹配、内容一致的独立文章 | ✅ 替换 url 为原文链接,更新 source 为实际来源 |
| 搜索结果模糊,无法确认 | ⚠️ 保留合集原文链接,不做替换 |
| 原文链接本身也在本次抓取范围内 | ✅ 优先匹配,同时标记避免重复分析 |
替换后连锁动作:
输出统计:追溯完成后,向用户简要报告:
> 🔗 原文追溯:合集 X 篇 → 拆分出 Y 条子新闻 → 成功追溯 Z 条原文链接
在价值筛选之前,先对所有待筛选条目逐篇抓取完整正文。理由:正文内容是 AI 判断新闻价值的核心依据,仅凭标题无法做出准确判断。禁止仅凭标题分析。
如果某篇文章尝试 3 次仍无法获取正文(反爬/超时/JS渲染失败),按以下流程处理:
> "以下 X 篇文章无法自动获取全文,请选择处理方式:
> [1] 标题A — URL
> [2] 标题B — URL
> …
> 回复「跳过」全部丢弃,或把正文粘贴给我。"
**
⚠️ 所有内容抓取通过 astrbot_execute_shell 运行脚本,不在 astrbot_execute_python 中调 Playwright(Node.js CWD 冲突)。
| URL 类型 | 正文选择器 | 抓取方式 |
| ------------------------ | ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 第一电动网 (d1ev.com) | div.main_content | requests + BeautifulSoup |
| 腾讯新闻 (view.inews.qq.com) | .content-article 或 article | requests + BeautifulSoup |
| 微信公众号 (mp.weixin.qq.com) | #js_content(⚠️ 必须用 fetch_wechat.py) | "python" "scripts\fetch_wechat.py" " |
| 通用网页 | 最长文本块 | requests + BeautifulSoup |
import requests
from bs4 import BeautifulSoup
H = {"User-Agent": "Mozilla/5.0", "Referer": "https://mp.weixin.qq.com/"}
resp = requests.get(url, headers=H, timeout=15, verify=False)
resp.encoding = 'utf-8'
soup = BeautifulSoup(resp.text, 'html.parser')
# d1ev: div.main_content
# 腾讯新闻: .content-article
# 微信: 必须用 fetch_wechat.py
body = soup.find('div', class_='main_content') or soup.select('.content-article') or soup.find(id='js_content')
基于全文内容,由 AI 根据以下五条规则判断每条新闻是否值得纳入报告。不再依赖关键词机械匹配。
规则 A — 后市场直接相关
涵盖汽车销售之后的整个车辆生命周期。典型信号:
规则 B — 整车企业战略动作(影响后市场格局)
规则 C — 技术趋势影响后市场
规则 D — 宏观政策与标准规范
规则 E — 市场数据与行业趋势
规则 F — 有趣好玩的行业趣闻
AI 逐条阅读全文内容,对照上述规则独立判断。不确定时,倾向于保留(宁可多一条,避免遗漏)。 最终形成纳入列表,进入 Step 6。
🔴 筛选标注(内部标注,不体现在报告中):每条纳入的新闻须在筛选时标注匹配的筛选规则(如「规则A-轮胎」「规则B-出海」「规则D-政策」),确保不凭直觉取舍。
基于全文内容,写客观摘要。每条约 3-4 句话,讲清核心事实与关键背景。去宣传化表述,不照搬原文。
分析该新闻对六条业务线的潜在影响(1-2 句即可):
| 业务线 | 关注点 |
|---|---|
| 备件 | 原厂备件供应链、渠道管控、价格体系、假件打击 |
| 精品 | 车载精品、生活精品、IP 联名、品牌溢价 |
| 改装 | 官方改装套件、性能升级、外观定制、合规认证 |
| 车险 | UBI 车险、延保产品、事故车配件直供 |
| 连锁维修 | 第三方授权维修网络、快修快保、下沉渠道 |
| 衍生业务 | 机器人运维、碳交易、低空经济、数据服务等一切创新延伸 |
关键原则:
生成报告前,读取 reports/daily/ 目录下前三个自然日的早报文件:
import os, glob
prev_reports = sorted(glob.glob("reports/daily/20*.md"))[-3:]
# 读取每个文件,提取已覆盖的新闻标题和核心事实
如果某条待纳入新闻的核心事实已在近期报告中出现,按以下方式处理:
编制时间:YYYY年M月D日
**编制作者**:全球市场策略部-市场研究
> 本日报扫描全球汽车后市场产业链动态,整合备件生态相关业务资讯,供快速参阅。
内容取自公开权威渠道,力求客观务实。仅供内部研判参考,欢迎互动交流、共研共进。
> 引用块
报告生成后,AI 从当天所有新闻中选出最重要的 4 条,单独列在「✨ 今日看点」板块。该板块置于声明之后、国际新闻之前。
选取标准:以筛选规则A~E为优先级,从上到下排列,同级内按重要性排序,不搞同级别竞争——凡是满足条件的都按重要性排列,取前4条:
取前4条,不足4条就少列。
🔴 判断重要性时,遵循客观原则:
格式:每条一句话概括核心事实和关键影响,不加链接,不做展开分析。🔴 每条亮点末尾必须加上原文超链接(使用 → 格式),链接指向对应新闻的原文URL。亮点均从当天新闻中摘出,因此链接与对应新闻条目中的「内容链接」保持一致。
## ✨ 今日看点
1. **[标题]** — 一句话总结。
2. ...
3. ...
4. ...
---
## 🌍 国际新闻
[条目...]
---
## 🇨🇳 国内新闻
### 🚗 整车
[条目...]
### 🔧 后市场
[条目...]
---
## 📺 直播预告
[直播条目,每条独立成段,文字排版]
---
## 📅 展会论坛
[展会条目,每条独立成段,文字排版]
以筛选规则A~E为优先级,从高到低:
N. [标题]
- **信息来源**: 来源
- **关联业务**: 业务线
- **内容链接**: [阅读原文](url)
- **内容摘要**:3-4 句话客观总结,讲清核心事实与关键背景。
- **研究预判**:1-2 句简短分析,聚焦市场趋势判断。有则写,无则跳过。
每天用 web_search_baidu 搜索未来几天汽车线上直播。
搜索策略:
web_search_baidu(query="2026年M月 D+1日 D+2日 汽车发布会 上市 直播", top_k=5)
范围:线上直播(新车发布、技术战略发布会等),排除大会/论坛/峰会。
格式(文字排版,不用表格,不加超链接):
## 📺 直播预告
**(已结束)5月27日 XX发布会**
已结束。本次发布会核心看点:xxx正式发布,xxx技术首次亮相,xxx方面有重要升级。市场反响xxx。
**5月28日 19:30 比亚迪"敢为"智能化战略发布会**
即将举行,预计将发布xxx、xxx等内容。
**5月29日 — 暂无重要直播**
规则:
每天用 web_search_baidu 搜索下月汽车行业展会。
搜索策略:
web_search_baidu(query="2026年N+1月 汽车展会 车展 论坛 汽配展", top_k=5)
web_search_baidu(query="2026年N+1月 国际汽车展 博览会", top_k=3)
范围:汽车后市场、零部件、新能源、智能驾驶等线下展会(可实地参加)。全球范围,优先中国和出海目的地。
格式(文字排版,不用表格,不加超链接):
## 📅 展会论坛
**6月3-5日 ATC上海汽车技术及零部件展 — 上海**
涵盖xxx、xxx等领域,规模约xxx。
**6月13-21日 重庆国际车展 — 重庆**
已结束。本届车展重点车型包括xxx、xxx,xxx品牌首发亮相。整体参展规模xxx。
**7月(暂无已知展会)**
规则:
禁止使用通用域名占位链接(如 https://www.d1ev.com)。每条纳入报告的新闻,必须从抓取数据中查找该文章的真实 URL,填入「内容链接」字段。
保存到 reports/daily/信息参考日报-YYYY-MM-DD.md。
群消息格式(固定模板):
【全球备件生态事业部市场信息速递】
✨ 今日看点
1. [标题短句,不加副标题]
2. ...
3. ...
4. ...
👉 链接查看详情,欢迎交流探讨
[飞书文档链接]
文档底部加一行转发引导:> 📤 觉得有用?转发给需要的人,一起看。
发送完整报告文本 + MD 文件。创建飞书云文档时标题固定为「全球备件生态事业部市场信息速递」,不带日期。
报告生成完成后,询问用户是否需要生成 HTML 版本:
> "日报已生成。是否需要生成 HTML 和 PDF 文件?"
若用户回复是,则:
templates/日报HTML模板.html 的样式,直接生成独立 HTML。要求:
信息参考日报-YYYY-MM-DD.html
.card .highlight-block .simple-card 设置 break-inside: avoid 避免内分页
.section-title .subsection-title .hero 设置 break-after: avoid 确保标题不孤悬页底
h1~h4 均设置 break-after: avoid
@page { size: A4; margin: 15mm 10mm }
scripts/html2pdf.py 渲染为 A4 版式 PDF。参数:视口 1400×2000,A4 幅面,无边距缩放,打印背景色。
"python" "scripts\html2pdf.py"
模板位置:templates/日报HTML模板.html
PDF 脚本:scripts/html2pdf.py
| 脚本 | 用途 | 命令 |
|------|------|------|
| fetch_all.py | 调度器:串行调用各源脚本,合并去重 | python fetch_all.py |
| fetch_d1ev.py | 第一电动网 | python fetch_d1ev.py |
| fetch_qq_auto.py | 中国汽车报(QQ) | python fetch_qq_auto.py |
| fetch_asworld.py | 汽车服务世界 | python fetch_asworld.py |
| fetch_wechat.py | 微信公众号 Playwright 抓取 | python fetch_wechat.py " |
| fetch_cpca.py | 乘联分会车市解读 | python fetch_cpca.py |
| html2pdf.py | HTML 渲染为 A4 PDF | python html2pdf.py |
reports/daily/ reports\daily 下前三个自然日的早报(如有)。如果某条新闻的核心事实已在近期报告中覆盖,则标注「延续关注」简化处理,避免重复展开。新事件或新进展正常分析。
飞书云文档是唯一数据源,MD文件只是本地镜像。禁止从MD反推飞书。
| 步骤 | 操作 | 工具 |
|------|------|------|
| 1 | fetch飞书 → 同步MD | lark-cli docs +fetch |
| 2 | 修复格式问题 | 替换不换行空格、粘连---、补齐双换行 |
| 3 | 大模型直接读写MD | astrbot_file_read_tool / astrbot_file_edit_tool |
| 4 | 格式校验 | scripts/validate_md.py |
| 5 | 推送飞书 | lark-cli docs +update --mode overwrite |
铁律:步骤4校验不通过绝不推送。禁用Python regex切片改MD,改用大模型直接理解文档结构后精确替换。两次修改之间必须重新fetch。
共 3 个版本