本文介绍基于Claude Agent SDK构建一个新闻自动搜索&提炼推送邮件智能体案例。

早期自己基于AI接口写了每日推送极简新闻功能,吧啦吧啦用AI写了一千多行代码,中间还调了n遍(新闻可信度,新闻来源很重要)。
出于模型安全限制:有时候会因为提示词敏感网络搜索不会返回内容;
一方面自己在提示词和逻辑闭环做得不够完善,导致可能会出现部分关注主题新闻内容空白,内容重复。

得益于Claude Agent SDK的自主规划,审视闭环设计,重写该功能,核心用到只是一段提示词。
Claude Agent SDK介绍请见:
数据分析新姿势!用 Claude Agent SDK 搞定数据挖掘与可视化(文章见公众号:数据打工人的自我修养
linux系统,模型直接在环境变量里配置:在这里插入图片描述

先来结果,终端执行python脚本
python3 ai_email_news.py
在这里插入图片描述

邮件收件消息(我用的qq邮箱):
在这里插入图片描述

代码如下:

  1. 编写邮件发送代码以便ai调用:/
    home/yinrong/email_news.py
    ai搜索提炼新闻内容,然后使用该脚本发送邮件到自己qq邮箱。(该代码其实也可以由claude sdk自主生成)
import os
import sys
import yagmail

def send_email(attachments=None):
    """发送邮件
    :param attachments: 附件路径列表,例如 ['/path/to/file.xlsx']
    """
    # 替换为你自己的 QQ 邮箱和对应的授权码
    sender_email = "发件人邮箱@qq.com"  
    sender_password = os.getenv('QQ_EMAIL_PW')  # 邮箱授权码,不是登录密码!
    file_path = sys.args[1]   # 文件路径,第一个参数
    subject = sys.args[2]  # 有加你主题,第二个参数
    with open(file_path,'r',encoding='utf-8') as f:
        content = f.read()    # 邮件正文内容
    try:
        yag = yagmail.SMTP(
            user=sender_email, # 发件人
            password=sender_password,
            host='smtp.qq.com',  # QQ 邮箱 SMTP 地址,腾讯企业邮箱使用域名:smtp.exmail.qq.com
            smtp_ssl=True       # 强制启用 SSL 安全传输
        )
        yag.send(
            to='收件邮箱@qq.com',
            cc=None,   # 抄送
            subject=subject,
            contents=content,
            attachments=attachments
        )
        print("✅ 邮件发送成功!")
    except Exception as e:
        print(f"❌ 邮件发送失败: {e}")
send_email()  # 发送邮件
  1. 编写调度代码块:整体由提示词和sdk调用构成,没有过多的代码。
    /home/yinrong/ai_email_news.py
import os
from claude_agent_sdk import query, ClaudeAgentOptions
import anyio
import datetime 
# 昨天的日期
search_date = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%Y年%m月%d日')
# 构造提示伺候
prompt = f"""
你是一名专业新闻编辑,请基于以下要求搜索 {search_date} 有关'AI前沿应用'、'社会民生政策'、'经济发展动态'、'金融投资动态'主题新闻,提炼要点并推送邮件。
【主题范围】
**AI前沿应用**
聚焦AI技术在商业场景落地和产业变革的核心动态。重点锁定:主流大模型厂商产品商业化进程、AI对传统行业改造升级、AI编程工具(Cursor、Windsurf等)研发效率革命、智能数据分析工具(自然语言处理Excel/SQL/ChatBI)应用突破。选题标准:具有行业示范意义的商业化案例,剔除纯技术发布和敏感信息。
**社会民生政策**
聚焦国家级重大民生政策发布与实施影响。核心关注:国务院及各部委出台的民生领域重大改革、涉及就业、医疗、教育、住房、社保等基础民生制度的全国性政策调整、重大民生工程实施进展。筛选原则:以全国性政策文件和官方解读为主,排除地方政策和日常新闻报道。
**经济发展动态**
聚焦宏观经济走势与产业政策导向。报道重点:国家统计局宏观经济数据发布与权威解读、国家发改委等部门重大产业规划与区域发展战略、新兴产业政策布局、国际贸易环境变化对国内经济的传导效应。价值判断:选择影响面广、具有前瞻性的宏观经济信号,避免单一企业层面信息。
**金融投资动态**
聚焦金融市场重大变化与投资趋势。核心领域:"一行一局一会"重大监管政策、央行货币政策调整、市场流动性变化、A股/港股/美股宏观层面的投资机会切换、行业轮动与资本运作事件。筛选标准:关注影响市场整体走向的关键变量,排除个股推荐和短期技术分析。
【具体要求】
1. 每个主题筛选10条核心动态,每条提炼不超过60字。
2. 每条新闻提炼内容尾部必须对新闻来源和连接进行标记。
3. 新闻摘要包含:主体+事件+影响/意义;语言风格:客观、专业、新闻化。
4. 质量要求:信息准确,来源可靠;具有新闻价值和行业影响;避免重复和雷同内容。
【输出格式示例】:不同主题中空出一行
**AI前沿应用**
1. OpenAI发布Operator智能体,可自主操作浏览器完成复杂任务。<a href="http://finance.sina.com.cn/zl/2025-11-05/zl-infwifvu9264116.shtml?cref=cj" style="color:
#4A90E2
;text-decoration:none;line-height:1.8" target="_blank">新浪财经</a>
2. 微软Copilot全面接入Office 365,企业办公效率提升30%+。<a href="http://finance.eastmoney.com/a/202511043554782143.html" style="color:
#4A90E2
;text-decoration:none;line-height:1.8" target="_blank">东方财富网</a>
【邮件推送】
提炼后将内容以txt文本格式保存到 /home/yinrong/ainews 目录下,文件命名:AI新闻_{search_date}.txt
邮件推送使用如下命令:
python3 /home/yinrong/email_news.py [保存的新闻文件路径] [邮件主题]
具体示例如下(邮件主题直接使用文件名):
python3 "/home/yinrong/email_news.py" "/home/yinrong/ainews/AI新闻_{search_date}.txt" "AI新闻_{search_date}"
"""
options = ClaudeAgentOptions(
    allowed_tools=["Read", "Write", "Bash", "Task", "WebSearch", "WebFetch"],  # 配置允许的工具,网络搜索工具
    permission_mode='acceptEdits'  # 允许编辑文件,claude的默认行为是拒绝编辑文件
)
async def main():
    async for message in query(
        prompt=prompt,
        options=options
    ):
        if hasattr(message, 'content') and isinstance(message.content, list):
            for block in message.content:
                if hasattr(block, 'text'):
                    print(block.text)
anyio.run(main)

最后 crontab -e添加如下定时调度任务:每天早上6点调度,抓取推送前一天的新闻
0 6 * * * python3 /home/yinrong/ai_email_news.py

公众号:数据打工人的自我修养 分享数分相关 技能,欢迎大家关注~

如需接收该推送的同学可以公众号文章末尾留言邮箱,点个赞支持下,谢谢!全免费推送

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐