【广告营销Agent实战06】市场洞察Agent连接外部世界

chengsenw 网络营销评论1阅读模式

【广告营销Agent实战06】市场洞察Agent连接外部世界

🌐 如果说 AdAnalysisAgent 是向内看(查内部数据),那 MarketAgent 就是向外看(搜外部信息)。这篇聊聊如何让 AI 自动搜索、整合、分析市场信息。

【广告营销Agent实战06】市场洞察Agent连接外部世界

为什么需要 MarketAgent?

举个例子。我们的投放团队要推一款新的借贷产品,需要了解:

  • 竞品(比如分期乐、360借条)最近有什么动作
  • 他们的广告素材是什么风格
  • 市场上的主流利率是多少
  • 最近监管有没有新政策

这些信息分散在各种新闻网站、行业报告、社交媒体里。以前的做法是人工去搜,然后整理成文档。一个人搞一天,信息还可能不全。

有了 MarketAgent,用户可以直接问:• "分析一下分期乐最近的市场策略"• "最近消费金融行业有什么重大新闻"• "对比一下主要竞品的广告素材特点"Agent 会自动搜索、整合、分析,最后给出一个结构化的报告。

核心能力设计

MarketAgent 的核心能力有三层:

1. 搜索层把用户的问题转化成搜索关键词,调用搜索引擎获取原始信息。

2. 整合层对搜索结果去重、排序、可信度评估,过滤掉垃圾信息。

3. 分析层基于整合后的信息,回答用户的具体问题,给出分析结论。

搜索层:SerpAPI 的接入

我们用的是 SerpAPI,它封装了 Google 搜索,返回结构化的结果。

func(s *SerpSearchTool) Execute(ctx context.Context,                                 query string) (*SearchResult, error) {    req := s.client.R().        SetQueryParams(map[string]string{            "q":     query,            "hl":    "zh-cn",            "gl":    "cn",            "num":   "10",  // 返回10条结果        }).        SetResult(&SearchResult{})    resp, err := req.Get("/search")    if err != nil {        return nil, err    }    return resp.Result().(*SearchResult), nil}

查询改写

但这里有个关键问题:用户的问题往往不适合直接作为搜索关键词

比如用户问:"分析一下分期乐最近的市场策略"

直接搜这句话,返回的结果可能很零散。更好的做法是分解成多个关键词:

  • "分期乐 2024 营销策略"
  • "分期乐 广告投放"
  • "分期乐 最新动态"

所以我们在搜索前加了一个"查询改写"步骤,让 LLM 把用户的问题改写成更适合搜索的关键词列表。

func(a *MarketAgent) rewriteQueries(ctx context.Context,                                     question string) []string {    prompt := `把用户的问题改写成3-5个搜索关键词,用逗号分隔。    每个关键词要具体、有针对性,便于搜索相关信息。    用户问题:` + question    response, _ := a.model.Generate(ctx, []*schema.Message{        {Role: schema.User, Content: prompt},    })    // 解析逗号分隔的关键词    return strings.Split(response.Content, ",")}

整合层:信息处理流水线

搜索返回的原始数据很乱,需要清洗和整合。

1. 去重

同一个新闻可能被多个网站转载,URL 不同但内容一样。我们用简单的文本相似度算法去重:

funcdeduplicate(results []*SearchResult) []*SearchResult {    var unique []*SearchResult    for _, r := range results {        isDup := false        for _, u := range unique {            if similarity(r.Snippet, u.Snippet) > 0.8 {                isDup = true                break            }        }        if !isDup {            unique = append(unique, r)        }    }    return unique}

2. 可信度评估

不是所有搜索结果都值得信任。我们给信息源打了标签:

  • 高可信度
    :官方新闻网站、知名财经媒体(36氪、虎嗅等)
  • 中可信度
    :行业自媒体、知乎专栏
  • 低可信度
    :内容农场、未经验证的自媒体

搜索结果的排序会参考这个可信度权重。

3. 时效性排序

市场信息时效性很强。一个三个月前的新闻可能已经没有参考价值了。我们优先返回最近一个月的内容。

funcscoreResult(result *SearchResult) float64 {    score := 0.0    // 可信度权重(0-1)    score += result.CredibilityScore * 0.4    // 时效性权重(0-1)    daysSince := time.Since(result.PublishDate).Hours() / 24    if daysSince <= 7 {        score += 1.0 * 0.3  // 一周内    } else if daysSince <= 30 {        score += 0.7 * 0.3  // 一个月内    } else {        score += 0.3 * 0.3  // 更早    }    // 相关性权重(0-1)    score += result.RelevanceScore * 0.3    return score}

分析层:从信息到洞察

有了整合后的信息,最后一步是让 LLM 基于这些信息回答用户的问题。

Prompt 设计

你是一个市场分析专家。基于以下搜索结果,回答用户的问题。搜索结果:{{SEARCH_RESULTS}}要求:1. 回答要有理有据,引用具体的信息来源2. 如果信息不足,明确说明3. 给出结构化的分析结论4. 标注信息的时效性(如"根据2024年3月的报道"用户问题:{{USER_QUESTION}}

结构化输出

对于复杂的市场分析,我们要求 LLM 按照固定格式输出:

【市场概况】简要描述当前市场状况【竞品动态】列举主要竞品的最新动作【趋势分析】总结行业趋势和变化【建议】基于分析给出的行动建议【信息来源】列出主要参考来源和时间

实际案例

案例:分析分期乐的市场策略

用户问:分析一下分期乐最近的市场策略

查询改写:

  • 分期乐 2024 营销策略
  • 分期乐 广告投放
  • 分期乐 最新动态
  • 分期乐 市场份额

搜索结果(整合后):

  1. 36氪:《分期乐Q1财报:营收增长25%,重点布局下沉市场》(2024-03-15)
  2. 虎嗅:《消费金融新战场:分期乐押注场景化营销》(2024-03-10)
  3. 知乎专栏:《分期乐的广告投放策略分析》(2024-02-28)

LLM 生成的分析报告:

【市场概况】根据2024年Q1财报,分期乐营收同比增长25%,用户规模突破1.2亿。当前重点发力下沉市场和场景化营销。【核心策略】1.下沉市场布局:加大三四线城市的推广力度,与本地商户合作2.场景化营销:从单纯的借贷产品转向"消费+金融"的场景化服务3.品牌年轻化:签约年轻代言人,在抖音、B站等平台加大投放【广告投放特点】• 短视频平台占比60%(抖音、快手为主)• 素材风格偏向生活化场景,弱化"借钱"概念• 强调"分期免息"、"额度高"等卖点【建议】如果要与分期乐竞争,可以考虑:1. 差异化定位(如专注某个细分人群)2. 在分期乐覆盖较弱的渠道发力3. 强化风控和服务体验的差异化【信息来源】• 36氪(2024-03-15)• 虎嗅(2024-03-10)• 知乎专栏(2024-02-28)

踩过的坑

坑1:搜索结果质量不稳定

有时候搜索返回的都是垃圾信息(SEO 内容农场)。

解决方案:维护一个黑名单,过滤掉已知的低质量域名。同时在 Prompt 里加了一条:"如果搜索结果质量不高,明确告诉用户信息不足,不要编造内容。"

坑2:信息时效性判断困难

很多网页没有明确的发布时间,或者时间是错的(比如转载时改了时间)。

解决方案:从多个维度判断时效性:1. 网页的 meta 标签2. 正文中提到的时间3. URL 中的日期4. 如果都没有,标注为"时间不详"

坑3:LLM 幻觉问题

有时候 LLM 会"脑补"一些搜索结果里没有的信息。

解决方案:在 Prompt 里强调:"只能基于提供的搜索结果回答,不能添加搜索结果中没有的信息。如果信息不足,明确说明。"同时在回答中要求标注信息来源,方便用户验证。

成本控制

SerpAPI 是按调用次数收费的,每次搜索大概 $0.01。如果用户频繁搜索,成本会很高。

我们做了几个优化:

  • 缓存机制
    :相同的查询24小时内直接返回缓存结果
  • 限流
    :每个用户每天最多10次搜索
  • 批量搜索
    :把多个关键词合并成一次搜索

这样下来,平均每个用户每月的搜索成本控制在 $1 以内。

总结

MarketAgent 让 AI 有了"眼睛",可以看到外部世界的信息。它的核心价值是自动化信息收集和整合,把原本需要人工几小时完成的工作压缩到几分钟。

核心要点:1. 查询改写 是提升搜索质量的关键2. 信息整合 需要去重、评估可信度、排序3. 结构化输出 让分析结果更易读4. 成本控制 通过缓存和限流实现

下一篇文章会聊会话管理和消息持久化,也就是如何让 AI 有"记忆"。

📖 Mokiwi AI Agent 开发全记录 - 第6篇

作者:Colin Wang | 2026年4月

上一篇:数据分析 Agent下一篇:会话管理与消息持久化

💬 如果想进一步交流,欢迎加好友

【广告营销Agent实战06】市场洞察Agent连接外部世界

 
chengsenw
  • 本文由 chengsenw 发表于 2026年4月15日 00:11:06
  • 转载请务必保留本文链接:https://www.gewo168.com/49838.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: