从搜索到日报自动生成:手把手搭建你的信息工作流
AI搜索 工作流自动化教程|附完整命令
在信息爆炸的时代,传统搜索方式正在发生变化。过去我们习惯打开搜索引擎,输入关键词,逐条浏览网页、筛选资料、复制内容、整理笔记;而现在,借助 AI搜索 + 工作流自动化,我们可以把“搜索、阅读、提炼、总结、归档、通知”等环节串成一条自动化流程,大幅提高信息获取和知识整理效率。
本文将围绕一个实用场景展开:自动抓取指定主题的最新信息,通过AI进行总结分析,并自动保存到本地或文档中。文章会从原理、工具选择、环境准备、完整命令、脚本实现、定时运行和扩展优化几个方面详细讲解,适合想要搭建个人信息助手、研究助手、运营监控系统或内容创作工作流的用户。
一、什么是AI搜索工作流自动化?
所谓 AI搜索工作流自动化,可以拆分成三个关键词:
-
AI搜索
不只是简单搜索网页,而是让AI参与信息理解、筛选、摘要和推理。例如,AI可以根据搜索结果判断哪些内容更重要,提取关键观点,生成结构化报告。 -
工作流
工作流是指一组连续任务,比如:- 输入搜索关键词;
- 获取搜索结果;
- 抓取网页正文;
- 调用AI模型总结;
- 输出Markdown报告;
- 保存到本地文件;
- 发送到邮箱、飞书、钉钉或Notion。
-
自动化
自动化意味着这些操作不需要人工重复执行,可以通过脚本、定时任务或自动化平台按规则运行。
一个典型的AI搜索自动化流程如下:
用户设定主题
↓
调用搜索接口获取结果
↓
抓取网页内容
↓
清洗正文文本
↓
调用AI模型总结分析
↓
生成Markdown报告
↓
保存或推送
↓
定时循环执行
二、适合哪些使用场景?
AI搜索自动化并不是“炫技”,它有非常实际的应用价值。
1. 行业资讯监控
例如你关注“人工智能 Agent 最新进展”“新能源汽车政策”“跨境电商平台规则变化”,可以每天自动搜索相关新闻,并输出一份简报。
2. 竞品动态跟踪
运营、产品经理、创业者可以设置竞品关键词,比如:
某某产品 融资
某某公司 新功能
某某品牌 价格调整
系统每天自动抓取信息,帮助你及时发现市场变化。
3. 内容创作选题
自媒体作者可以自动收集热门话题、用户讨论和行业趋势,再让AI提炼选题方向,生成文章大纲。
4. 学术资料整理
研究人员可以设置论文关键词,自动搜索新论文、技术博客或开源项目更新,节省人工检索时间。
5. 个人知识管理
你可以把自动生成的报告保存到Obsidian、Notion、语雀或本地Markdown文件中,逐渐形成自己的知识库。
三、本文要实现的目标
本文将实现一个简单但完整的自动化AI搜索工作流:
输入一个关键词,程序自动搜索相关网页,提取搜索结果标题和摘要,然后调用AI模型生成一份中文总结报告,最终保存为Markdown文件。
最终效果类似:
# AI搜索日报:AI Agent
## 一、今日核心信息
1. AI Agent应用正在从概念验证走向企业级落地。
2. 多家厂商开始强调工作流编排、工具调用和多智能体协作。
3. 开源社区在Agent框架、浏览器自动化和代码执行方面更新活跃。
## 二、重点内容摘要
...
## 三、值得关注的趋势
...
## 四、后续建议
...
四、工具与技术选型
为了降低门槛,本文使用以下工具:
| 工具 | 作用 |
|---|---|
| Python | 编写自动化脚本 |
| requests | 调用搜索接口和AI接口 |
| python-dotenv | 管理环境变量 |
| Markdown | 输出结构化报告 |
| cron / 任务计划程序 | 定时执行 |
| AI模型API | 负责总结、分析和生成报告 |
搜索接口可以选择多种方式,例如:
- Bing Search API;
- SerpAPI;
- Tavily API;
- Brave Search API;
- 自建搜索服务;
- 普通搜索结果抓取。
为了教程通用,本文以“搜索API + AI模型API”的方式说明。你可以根据自己使用的平台替换接口地址和密钥。
五、准备工作
1. 安装Python
建议使用 Python 3.10 及以上版本。
查看当前Python版本:
python --version
或:
python3 --version
如果没有安装,可以前往 Python 官网下载安装:
https://www.python.org/downloads/
2. 创建项目目录
在终端执行:
mkdir ai-search-workflow
cd ai-search-workflow
建议项目结构如下:
ai-search-workflow/
├── .env
├── main.py
├── requirements.txt
└── reports/
创建报告目录:
mkdir reports
3. 创建虚拟环境
macOS / Linux:
python3 -m venv venv
source venv/bin/activate
Windows PowerShell:
python -m venv venv
.\venv\Scripts\Activate.ps1
如果Windows提示脚本执行策略限制,可以运行:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
然后重新激活虚拟环境。
4. 安装依赖
创建 requirements.txt:
touch requirements.txt
写入以下内容:
requests
python-dotenv
安装依赖:
pip install -r requirements.txt
六、配置环境变量
为了避免把API密钥直接写进代码中,我们使用 .env 文件统一管理。
创建 .env 文件:
touch .env
写入以下内容:
SEARCH_API_KEY=你的搜索API密钥
SEARCH_API_URL=https://api.example.com/search
AI_API_KEY=你的AI模型API密钥
AI_API_URL=https://api.example.com/v1/chat/completions
AI_MODEL=your-model-name
你需要根据自己实际使用的平台替换:
SEARCH_API_KEY=
SEARCH_API_URL=
AI_API_KEY=
AI_API_URL=
AI_MODEL=
例如,如果你的AI服务兼容 OpenAI Chat Completions 格式,通常接口形式类似:
AI_API_URL=https://api.openai.com/v1/chat/completions
AI_MODEL=gpt-4o-mini
如果你使用其他兼容接口,只要请求格式兼容,也可以直接替换。
七、编写完整Python脚本
下面是完整的 main.py 示例代码。它包含以下功能:
- 读取环境变量;
- 根据关键词调用搜索API;
- 整理搜索结果;
- 调用AI接口生成报告;
- 保存为Markdown文件。
注意:不同搜索API返回字段不完全一致,下面代码采用通用写法。如果你的搜索接口字段不同,需要稍作调整。
import os
import json
import argparse
import requests
from datetime import datetime
from dotenv import load_dotenv
load_dotenv()
SEARCH_API_KEY = os.getenv("SEARCH_API_KEY")
SEARCH_API_URL = os.getenv("SEARCH_API_URL")
AI_API_KEY = os.getenv("AI_API_KEY")
AI_API_URL = os.getenv("AI_API_URL")
AI_MODEL = os.getenv("AI_MODEL", "gpt-4o-mini")
def search_web(query, limit=5):
"""
调用搜索API,获取搜索结果。
你需要根据自己使用的搜索服务调整headers、params和解析字段。
"""
if not SEARCH_API_KEY or not SEARCH_API_URL:
raise ValueError("请先在 .env 中配置 SEARCH_API_KEY 和 SEARCH_API_URL")
headers = {
"Authorization": f"Bearer {SEARCH_API_KEY}",
"Content-Type": "application/json"
}
params = {
"q": query,
"query": query,
"count": limit,
"limit": limit
}
response = requests.get(
SEARCH_API_URL,
headers=headers,
params=params,
timeout=30
)
response.raise_for_status()
data = response.json()
results = []
# 兼容常见搜索API结构
possible_items = (
data.get("results")
or data.get("items")
or data.get("webPages", {}).get("value")
or []
)
for item in possible_items[:limit]:
title = item.get("title") or item.get("name") or "无标题"
url = item.get("url") or item.get("link") or ""
snippet = item.get("snippet") or item.get("description") or item.get("summary") or ""
results.append({
"title": title,
"url": url,
"snippet": snippet
})
return results
def build_search_context(results):
"""
将搜索结果转换成适合AI阅读的上下文文本。
"""
if not results:
return "没有找到相关搜索结果。"
lines = []
for index, item in enumerate(results, start=1):
lines.append(f"## 结果 {index}")
lines.append(f"标题:{item['title']}")
lines.append(f"链接:{item['url']}")
lines.append(f"摘要:{item['snippet']}")
lines.append("")
return "\n".join(lines)
def call_ai_generate_report(query, search_context):
"""
调用AI模型,根据搜索结果生成中文Markdown报告。
"""
if not AI_API_KEY or not AI_API_URL:
raise ValueError("请先在 .env 中配置 AI_API_KEY 和 AI_API_URL")
system_prompt = """
你是一名专业的信息分析师,擅长根据搜索结果生成结构化中文报告。
你的任务是:
1. 阅读用户提供的搜索结果;
2. 提炼核心事实、趋势和洞察;
3. 不编造搜索结果中没有的信息;
4. 如果信息不足,要明确说明;
5. 使用Markdown格式输出。
"""
user_prompt = f"""
请根据以下搜索结果,围绕主题「{query}」生成一份中文分析报告。
要求:
- 标题清晰;
- 包含核心摘要;
- 包含重点信息整理;
- 包含趋势判断;
- 包含可执行建议;
- 如果搜索结果存在明显重复,请合并归纳;
- 输出格式必须是Markdown。
以下是搜索结果:
{search_context}
"""
headers = {
"Authorization": f"Bearer {AI_API_KEY}",
"Content-Type": "application/json"
}
payload = {
"model": AI_MODEL,
"messages": [
{
"role": "system",
"content": system_prompt.strip()
},
{
"role": "user",
"content": user_prompt.strip()
}
],
"temperature": 0.3
}
response = requests.post(
AI_API_URL,
headers=headers,
data=json.dumps(payload, ensure_ascii=False).encode("utf-8"),
timeout=60
)
response.raise_for_status()
data = response.json()
# 兼容OpenAI Chat Completions格式
content = data["choices"][0]["message"]["content"]
return content
def save_report(query, content):
"""
保存Markdown报告到reports目录。
"""
os.makedirs("reports", exist_ok=True)
date_str = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
safe_query = "".join(
c for c in query
if c.isalnum() or c in (" ", "-", "_")
).strip().replace(" ", "_")
filename = f"reports/{date_str}_{safe_query}.md"
with open(filename, "w", encoding="utf-8") as f:
f.write(content)
return filename
def main():
parser = argparse.ArgumentParser(description="AI搜索工作流自动化工具")
parser.add_argument(
"--query",
type=str,
required=True,
help="要搜索和分析的主题关键词"
)
parser.add_argument(
"--limit",
type=int,
default=5,
help="搜索结果数量,默认5条"
)
args = parser.parse_args()
print(f"正在搜索:{args.query}")
results = search_web(args.query, args.limit)
print(f"共获取到 {len(results)} 条搜索结果")
search_context = build_search_context(results)
print("正在调用AI生成报告...")
report = call_ai_generate_report(args.query, search_context)
filename = save_report(args.query, report)
print(f"报告已保存:{filename}")
if __name__ == "__main__":
main()
八、运行完整命令
确保当前位于项目目录,并且虚拟环境已激活。
macOS / Linux:
source venv/bin/activate
Windows PowerShell:
.\venv\Scripts\Activate.ps1
运行脚本:
python main.py --query "AI Agent 最新进展" --limit 5
如果你使用的是 python3 命令:
python3 main.py --query "AI Agent 最新进展" --limit 5
运行成功后,终端会输出类似内容:
正在搜索:AI Agent 最新进展
共获取到 5 条搜索结果
正在调用AI生成报告...
报告已保存:reports/2025-01-01_10-30-00_AI_Agent_最新进展.md
查看生成的报告:
ls reports
打开文件:
macOS:
open reports
Linux:
xdg-open reports
Windows:
explorer reports
九、增加网页正文抓取能力
上面的版本主要依赖搜索结果中的标题和摘要。如果你希望AI分析得更深入,可以进一步抓取网页正文。
安装依赖:
pip install beautifulsoup4 lxml
更新 requirements.txt:
requests
python-dotenv
beautifulsoup4
lxml
新增正文提取函数:
from bs4 import BeautifulSoup
def fetch_page_text(url):
"""
抓取网页正文。
注意:不同网站结构不同,该方法只做基础提取。
"""
try:
headers = {
"User-Agent": "Mozilla/5.0"
}
response = requests.get(
url,
headers=headers,
timeout=20
)
response.raise_for_status()
response.encoding = response.apparent_encoding
soup = BeautifulSoup(response.text, "lxml")
for tag in soup(["script", "style", "nav", "footer", "header"]):
tag.decompose()
text = soup.get_text(separator="\n")
lines = [
line.strip()
for line in text.splitlines()
if line.strip()
]
clean_text = "\n".join(lines)
return clean_text[:5000]
except Exception as e:
return f"正文抓取失败:{str(e)}"
然后在 build_search_context 中加入正文:
def build_search_context(results):
if not results:
return "没有找到相关搜索结果。"
lines = []
for index, item in enumerate(results, start=1):
page_text = fetch_page_text(item["url"]) if item["url"] else ""
lines.append(f"## 结果 {index}")
lines.append(f"标题:{item['title']}")
lines.append(f"链接:{item['url']}")
lines.append(f"摘要:{item['snippet']}")
lines.append(f"正文节选:{page_text[:3000]}")
lines.append("")
return "\n".join(lines)
再次运行:
python main.py --query "大模型应用落地案例" --limit 3
这里建议 limit 不要设置太大,因为网页正文会显著增加输入长度,也会提高AI调用成本。
十、设置定时自动运行
如果你希望每天自动生成一份报告,可以使用系统定时任务。
1. macOS / Linux 使用 cron
查看当前Python路径:
which python
查看项目路径:
pwd
编辑定时任务:
crontab -e
添加以下内容,表示每天早上8点运行:
0 8 * * * cd /你的项目路径/ai-search-workflow && /你的项目路径/ai-search-workflow/venv/bin/python main.py --query "AI Agent 最新进展" --limit 5 >> cron.log 2>&1
示例:
0 8 * * * cd /Users/yourname/ai-search-workflow && /Users/yourname/ai-search-workflow/venv/bin/python main.py --query "AI Agent 最新进展" --limit 5 >> cron.log 2>&1
查看定时任务列表:
crontab -l
查看日志:
cat cron.log
2. Windows 使用任务计划程序
假设项目路径为:
C:\Users\yourname\ai-search-workflow
Python解释器路径为:
C:\Users\yourname\ai-search-workflow\venv\Scripts\python.exe
可以新建一个 run.bat:
@echo off
cd /d C:\Users\yourname\ai-search-workflow
C:\Users\yourname\ai-search-workflow\venv\Scripts\python.exe main.py --query "AI Agent 最新进展" --limit 5 >> task.log 2>&1
然后在“任务计划程序”中:
- 创建基本任务;
- 设置每天运行;
- 操作选择“启动程序”;
- 程序选择
run.bat; - 保存并测试运行。
也可以用命令创建任务:
schtasks /Create /SC DAILY /TN "AI Search Workflow" /TR "C:\Users\yourname\ai-search-workflow\run.bat" /ST 08:00
查看任务:
schtasks /Query /TN "AI Search Workflow"
删除任务:
schtasks /Delete /TN "AI Search Workflow" /F
十一、批量监控多个关键词
如果你有多个主题要监控,可以创建一个关键词文件。
创建 keywords.txt:
AI Agent 最新进展
大模型应用落地案例
自动化工作流工具
企业知识库 AI
多智能体协作
新增批量脚本 batch.py:
import subprocess
def main():
with open("keywords.txt", "r", encoding="utf-8") as f:
keywords = [
line.strip()
for line in f
if line.strip()
]
for keyword in keywords:
print(f"开始处理:{keyword}")
subprocess.run([
"python",
"main.py",
"--query",
keyword,
"--limit",
"5"
])
print(f"完成处理:{keyword}")
if __name__ == "__main__":
main()
运行:
python batch.py
如果是在 Linux 或 macOS,可能需要改成:
subprocess.run([
"python3",
"main.py",
"--query",
keyword,
"--limit",
"5"
])
定时运行批量任务:
0 8 * * * cd /你的项目路径/ai-search-workflow && /你的项目路径/ai-search-workflow/venv/bin/python batch.py >> batch.log 2>&1
十二、将报告推送到飞书、钉钉或企业微信
自动化工作流的价值不只是生成文件,更重要的是把信息推送到你真正会看的地方。
以飞书机器人为例,通常可以通过Webhook发送消息。
在 .env 中增加:
FEISHU_WEBHOOK=https://open.feishu.cn/open-apis/bot/v2/hook/xxxx
新增函数:
def send_to_feishu(content):
webhook = os.getenv("FEISHU_WEBHOOK")
if not webhook:
print("未配置 FEISHU_WEBHOOK,跳过推送")
return
payload = {
"msg_type": "text",
"content": {
"text": content[:3000]
}
}
response = requests.post(
webhook,
json=payload,
timeout=20
)
response.raise_for_status()
print("已推送到飞书")
在 main() 中保存报告后增加:
send_to_feishu(report)
如果报告较长,建议只推送摘要和本地文件路径,或者使用富文本消息格式。
十三、常见问题与排查方法
1. 报错:环境变量为空
如果出现:
请先在 .env 中配置 AI_API_KEY 和 AI_API_URL
检查 .env 文件是否位于项目根目录,并确认变量名没有写错。
可以临时打印测试:
print(os.getenv("AI_API_KEY"))
2. 报错:401 Unauthorized
通常是API Key错误或权限不足。
检查:
API Key是否复制完整;
接口地址是否正确;
账户是否有余额;
模型名称是否可用;
Authorization格式是否符合平台要求。
有的平台不是:
Authorization: Bearer xxx
而是使用:
X-API-Key: xxx
这时需要修改代码中的 headers。
3. 报错:429 Too Many Requests
说明请求过于频繁或额度超限。
解决方法:
- 降低关键词数量;
- 减少搜索结果数量;
- 增加请求间隔;
- 升级API套餐;
- 在批处理脚本中加入
time.sleep()。
示例:
import time
time.sleep(5)
4. AI总结内容不准确
AI输出质量取决于搜索结果质量和提示词设计。可以优化提示词,例如增加:
请严格基于提供的搜索结果,不要扩展未经验证的信息。
如果某个判断缺乏依据,请标注“信息不足”。
请列出每个结论对应的来源标题。
5. 网页正文抓取为空
很多网站有反爬机制或内容由JavaScript渲染。解决方案包括:
- 使用搜索API摘要;
- 使用支持正文抽取的搜索服务;
- 使用 Playwright 渲染页面;
- 使用 RSS 源;
- 使用网站官方API。
十四、进阶优化方向
1. 加入去重逻辑
搜索结果中经常出现重复内容,可以根据URL、标题相似度进行去重。
简单URL去重示例:
def deduplicate_results(results):
seen = set()
unique = []
for item in results:
url = item.get("url")
if url and url not in seen:
seen.add(url)
unique.append(item)
return unique
使用方式:
results = deduplicate_results(results)
2. 输出结构化JSON
如果你希望后续做数据分析,可以让AI同时输出JSON。
提示词中加入:
请在报告最后输出一个JSON对象,包含:
- topic
- summary
- key_points
- trends
- recommendations
3. 接入Notion知识库
可以使用 Notion API 将报告写入数据库。基本流程是:
- 创建 Notion Integration;
- 获取 Token;
- 创建数据库;
- 授权Integration访问数据库;
- 调用 Notion API 写入页面。
环境变量示例:
NOTION_TOKEN=secret_xxx
NOTION_DATABASE_ID=xxxx
4. 使用向量数据库做长期记忆
如果你每天都生成报告,长期积累后会形成大量内容。此时可以将报告切分并写入向量数据库,例如:
- Chroma;
- Milvus;
- Qdrant;
- Weaviate;
- pgvector。
这样你就可以问:
过去30天AI Agent领域有哪些持续出现的趋势?
哪些公司最近频繁发布相关产品?
某个关键词的热度是否在上升?
这就从“日报生成器”升级成了“个人研究助理”。
十五、安全与合规建议
在搭建AI搜索工作流时,需要注意以下几点:
-
不要泄露API Key
.env文件不要上传到公开仓库。建议创建.gitignore:touch .gitignore写入:
.env venv/ reports/ __pycache__/ -
遵守网站规则
抓取网页正文时应遵守目标网站的服务条款和 robots 协议,避免高频请求。 -
标注信息来源
AI生成报告时最好保留链接,方便后续核查。 -
避免完全依赖AI判断
AI适合辅助总结和归纳,但重要决策仍需要人工复核。 -
控制成本
搜索API和AI模型API通常按量计费。建议先用较少结果测试,再逐步扩大规模。
十六、完整命令汇总
下面将本文涉及的核心命令集中整理,方便直接复制使用。
创建项目
mkdir ai-search-workflow
cd ai-search-workflow
mkdir reports
touch main.py requirements.txt .env
创建虚拟环境
macOS / Linux:
python3 -m venv venv
source venv/bin/activate
Windows:
python -m venv venv
.\venv\Scripts\Activate.ps1
安装依赖
pip install requests python-dotenv
pip freeze > requirements.txt
运行单个关键词
python main.py --query "AI Agent 最新进展" --limit 5
运行多个关键词
python batch.py
查看报告目录
ls reports
Windows:
dir reports
设置Linux/macOS定时任务
crontab -e
添加:
0 8 * * * cd /你的项目路径/ai-search-workflow && /你的项目路径/ai-search-workflow/venv/bin/python main.py --query "AI Agent 最新进展" --limit 5 >> cron.log 2>&1
Windows创建定时任务
schtasks /Create /SC DAILY /TN "AI Search Workflow" /TR "C:\Users\yourname\ai-search-workflow\run.bat" /ST 08:00
十七、总结
通过本文的教程,我们完成了一个基础但可扩展的 AI搜索工作流自动化系统。它能够根据指定关键词自动搜索信息,调用AI模型生成结构化报告,并保存为Markdown文件。如果再结合定时任务、企业 IM 推送、Notion知识库、向量数据库和多关键词批处理,它就可以逐步升级为一个真正实用的个人或团队信息中枢。
这类工作流的核心价值不在于“让AI替你搜索一次”,而在于把重复的信息收集、筛选、整理和归档过程持续自动化。对于研究、运营、产品、投资、内容创作等工作来说,它可以显著降低信息处理成本,让你把时间投入到更高价值的判断和决策中。
如果你是初学者,建议先完成本文的基础版本:关键词搜索 → AI总结 → Markdown保存。等流程跑通后,再逐步增加网页正文抓取、批量关键词、定时任务、消息推送和知识库沉淀。这样既容易调试,也能快速看到实际效果。