Skip to content

🍠 小红书选题 Agent:我怎么用 Agent 帮自己选出下一篇爆款

封面

📌 这篇适合谁

  • 在小红书/公众号做内容但选题全靠"感觉"的创作者
  • 想做一个真实有用的 Agent 项目练手的开发者
  • 学完 ReAct + Tool Use 想找一个落地场景的 Lv2 毕业生
  • 对"AI 辅助内容创作"感兴趣但不知道从哪切入的人

这是案例库的第一篇。不是概念介绍——是我自己真实在用的工具。

我是🍋AI小柠檬,小红书 AI 教育博主。这个 Agent 是我给自己做的——每周用它生成选题池,从里面挑 2-3 个写。上线后我的选题命中率(发出去互动量 > 平均值)从 30% 提升到 65%。


写在前面:为什么选题是内容创作最值得自动化的环节 🎯

选题前后对比

⚠️ 我踩过的坑

2025 年我刚开始做小红书时,选题完全靠"我觉得这个话题有人看"。结果:

  • 花 3 小时写的深度技术文,点赞 12
  • 随手发的一条吐槽"LangChain 文档太烂了",点赞 800+

不是内容质量不行,是选题方向错了。 用户不搜你写的关键词,你写得再好也没人看到。

后来我开始手动分析爆款:打开小红书搜"AI Agent",翻前 50 条笔记,记录标题模式、互动数据、发布时间。每次花 2 小时。

2 小时 × 每周 1 次 × 一年 = 100+ 小时花在"翻别人的笔记"上。

这就是典型的"重复、有规律、不需要创造力"的任务——Agent 的完美猎物。


1️⃣ 这个 Agent 做什么、不做什么 📦

💡 核心定位

只做选题分析,不做内容生成。 Agent 告诉你"写什么话题、用什么角度、标题怎么起",但不帮你写正文。

✅ Agent 做的事

步骤具体动作输出
1. 热点抓取搜索目标领域近 7 天的高互动笔记原始数据列表
2. 模式分析提取标题结构、关键词、封面类型爆款模式报告
3. 差异化选题基于模式 + 你的定位生成选题建议10 个选题(含标题、角度、预期数据)
4. 排序打分按"热度 × 差异化 × 你能写"三维打分优先级排序

❌ Agent 不做的事

  • 不生成正文(正文是创作者的核心价值)
  • 不自动发布(发布需要人工审核封面和排版)
  • 不保证爆款(提高概率,不保证结果)

2️⃣ 技术架构:ReAct + 三个工具 🏗

架构图

💡 一句话理解

一个 ReAct Agent + 三个工具(搜索、分析、生成)。不需要 Multi-Agent,不需要 LangGraph——单 Agent + Function Calling 就够。

架构图

用户输入: "AI Agent 教育" 领域

┌─────────────────────────────────┐
│         ReAct Agent             │
│  (System Prompt: 选题分析师)     │
│                                 │
│  Tool 1: search_trending()      │ ← 搜索近 7 天高互动笔记
│  Tool 2: analyze_patterns()     │ ← 提取爆款模式
│  Tool 3: generate_topics()      │ ← 生成差异化选题
└─────────────────────────────────┘

输出: 10 个选题建议(标题 + 角度 + 评分)

为什么不用 Multi-Agent

这个任务是线性流程:搜索 → 分析 → 生成。没有分支、没有并行、没有需要讨论的决策点。用 Multi-Agent 是过度设计。

判断标准:如果任务可以用"先做 A,再做 B,最后做 C"描述清楚,单 Agent 就够。Multi-Agent 是给"需要不同角色讨论/并行处理/互相校验"的场景准备的。


3️⃣ 核心代码:完整可跑版本 💻

爆款标题模式分析

Step 1:定义工具

python
import json
import httpx
from datetime import datetime, timedelta
from langchain_core.tools import tool

@tool
def search_trending(keyword: str, days: int = 7) -> str:
    """搜索小红书近 N 天指定关键词的高互动笔记。
    返回标题、点赞数、收藏数、评论数、发布时间。"""

    # 方案 A:用第三方数据平台 API(新红数据/千瓜数据)
    # 方案 B:用 SerpAPI 的小红书搜索(海外可用)
    # 方案 C:自建爬虫(不推荐,反爬严格)

    # 这里用 SerpAPI 示例(需要 API Key)
    params = {
        "engine": "xiaohongshu",
        "q": keyword,
        "api_key": "YOUR_SERPAPI_KEY",
        "sort": "likes",  # 按点赞排序
        "time_range": f"{days}d",
    }

    # 实际项目中替换为真实 API 调用
    # response = httpx.get("https://serpapi.com/search", params=params)

    # 模拟返回数据(开发阶段用)
    mock_results = [
        {"title": "AI Agent 入门:3 天搞懂 ReAct 原理", "likes": 2341, "collects": 892, "comments": 156, "date": "2026-05-08"},
        {"title": "别再只会调 API 了!手写一个 Agent 只要 50 行", "likes": 1876, "collects": 723, "comments": 98, "date": "2026-05-07"},
        {"title": "面试官问我 Agent 和 ChatBot 的区别,我愣住了", "likes": 3102, "collects": 1205, "comments": 234, "date": "2026-05-06"},
        {"title": "LangGraph vs AutoGen vs CrewAI 选哪个?一张图说清楚", "likes": 1543, "collects": 678, "comments": 87, "date": "2026-05-09"},
        {"title": "我用 Agent 自动写周报,老板以为我加班了", "likes": 4521, "collects": 1893, "comments": 312, "date": "2026-05-05"},
    ]

    return json.dumps(mock_results, ensure_ascii=False)


@tool
def analyze_patterns(notes_json: str) -> str:
    """分析一批笔记的爆款模式。
    输入:笔记列表 JSON。输出:标题模式、关键词、互动规律。"""

    notes = json.loads(notes_json)

    # 标题模式分析
    patterns = {
        "数字开头": 0,
        "疑问句": 0,
        "对比式": 0,
        "故事式": 0,
        "否定式": 0,
    }

    keywords = {}
    total_engagement = []

    for note in notes:
        title = note["title"]
        engagement = note["likes"] + note["collects"] + note["comments"]
        total_engagement.append(engagement)

        # 简单模式匹配(生产环境用 LLM 做更精准的分类)
        if any(c.isdigit() for c in title[:3]):
            patterns["数字开头"] += 1
        if "?" in title or "吗" in title:
            patterns["疑问句"] += 1
        if "vs" in title.lower() or "还是" in title:
            patterns["对比式"] += 1
        if "我" in title:
            patterns["故事式"] += 1
        if "别" in title or "不要" in title or "不" in title[:5]:
            patterns["否定式"] += 1

        # 关键词提取(简化版)
        for word in ["Agent", "AI", "LangChain", "面试", "入门", "实战"]:
            if word.lower() in title.lower():
                keywords[word] = keywords.get(word, 0) + 1

    avg_engagement = sum(total_engagement) / len(total_engagement) if total_engagement else 0

    analysis = {
        "sample_size": len(notes),
        "avg_engagement": round(avg_engagement),
        "title_patterns": patterns,
        "hot_keywords": dict(sorted(keywords.items(), key=lambda x: -x[1])[:5]),
        "insight": "故事式(第一人称经历)和否定式(打破认知)标题互动最高",
    }

    return json.dumps(analysis, ensure_ascii=False)


@tool
def generate_topics(
    analysis_json: str,
    my_positioning: str = "AI Agent 教育博主,复旦+大厂背景,教小白学 Agent"
) -> str:
    """基于爆款分析结果 + 博主定位,生成 10 个差异化选题建议。
    每个选题包含:标题、角度、预期互动、难度。"""

    analysis = json.loads(analysis_json)

    # 实际项目中这一步交给 LLM 做(更灵活)
    # 这里展示结构化输出的格式
    topics = [
        {
            "title": "我面试了 20 个'会 LangChain'的人,只有 3 个真懂 Agent",
            "angle": "面试官视角 + 故事式 + 打破认知",
            "why": "结合故事式和否定式两种高互动模式",
            "difficulty": "中(需要真实面试经历素材)",
            "expected_engagement": "2000-4000",
        },
        {
            "title": "Agent 开发 3 个月,我走过的 5 个弯路(附正确路线)",
            "angle": "个人经历复盘 + 数字开头 + 实用价值",
            "why": "故事式 + 数字开头双重模式叠加",
            "difficulty": "低(整理自己的学习经历)",
            "expected_engagement": "1500-3000",
        },
        {
            "title": "别学 LangChain 了,2026 年 Agent 框架只推荐这一个",
            "angle": "否定式 + 推荐 + 时效性",
            "why": "否定式标题 + 明确推荐 = 高争议高互动",
            "difficulty": "高(需要框架深度对比的底气)",
            "expected_engagement": "3000-5000",
        },
    ]

    return json.dumps(topics[:10], ensure_ascii=False, indent=2)

Step 2:组装 Agent

python
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent

# 工具列表
tools = [search_trending, analyze_patterns, generate_topics]

# System Prompt —— 这是 Agent 的"人格"
SYSTEM_PROMPT = """你是一个小红书选题分析师。你的任务是帮助博主找到高互动潜力的选题。

工作流程:
1. 先用 search_trending 搜索目标领域的近期爆款
2. 用 analyze_patterns 分析爆款的标题模式和关键词
3. 用 generate_topics 基于分析结果生成差异化选题

注意事项:
- 选题必须有差异化角度,不是简单复制爆款标题
- 考虑博主的定位和能力范围
- 每个选题要说明"为什么这个角度能火"
- 优先推荐"博主有真实经历可写"的选题
"""

# 创建 Agent
llm = ChatOpenAI(model="gpt-4o", temperature=0.3)
agent = create_react_agent(llm, tools, prompt=SYSTEM_PROMPT)

# 运行
result = agent.invoke({
    "messages": [("user", "帮我分析'AI Agent'领域的选题,我的定位是 AI 教育博主")]
})

print(result["messages"][-1].content)

Step 3:输出示例

📊 选题分析报告

【数据基础】近 7 天 "AI Agent" 领域 Top 50 笔记分析
- 平均互动量:2,677(点赞+收藏+评论)
- 高互动标题模式:故事式 40%、否定式 25%、数字开头 20%

【推荐选题 Top 3】

1️⃣ "我面试了 20 个'会 LangChain'的人,只有 3 个真懂 Agent"
   角度:面试官视角揭秘
   预期互动:2000-4000
   ⭐ 推荐理由:你有真实面试经历,故事式+否定式双模式

2️⃣ "Agent 开发 3 个月,我走过的 5 个弯路"
   角度:个人复盘+避坑指南
   预期互动:1500-3000
   ⭐ 推荐理由:低难度高产出,整理已有经历即可

3️⃣ "别学 LangChain 了,2026 年只推荐这一个框架"
   角度:争议性推荐
   预期互动:3000-5000
   ⭐ 推荐理由:否定式标题天然高争议,但需要你有框架对比的底气

...(共 10 个选题)

4️⃣ 数据源选型:小红书数据从哪来 📡

⚠️ 这是整个项目最难的一步

小红书反爬非常严格。直接爬会被封号、封 IP。不要自己写爬虫。

📊 四种数据获取方案

方案成本数据质量合规性推荐度
新红数据 API¥299/月起⭐⭐⭐⭐⭐✅ 合规⭐⭐⭐⭐⭐
千瓜数据 API¥199/月起⭐⭐⭐⭐✅ 合规⭐⭐⭐⭐
SerpAPI$50/月⭐⭐⭐✅ 合规⭐⭐⭐
自建爬虫免费⭐⭐❌ 违规风险

我的选择:新红数据。贵但稳定,数据维度全(标题、正文、标签、互动数据、粉丝画像),有官方 API 文档。

预算有限的替代方案:手动导出。每周花 15 分钟在小红书搜索页手动记录 Top 20 笔记的标题和互动数据到 Excel,然后让 Agent 分析 Excel。不优雅但免费。


5️⃣ 生产化:从 Demo 到每周真实使用 🔧

我的实际使用流程

每周日晚 → 运行 Agent → 生成 10 个选题 → 人工挑 3 个 → 周一到周三各写一篇

生产化需要加的东西

补丁为什么需要实现方式
历史去重不要推荐你已经写过的话题维护一个"已写选题"列表,Agent 生成时排除
时效性过滤3 天前的热点可能已经过时search_trending 只取 3 天内数据
个人数据反馈你发过的笔记哪些火了,反哺选题模型每周把自己笔记的互动数据喂给 Agent
定时运行不用每次手动触发cron job 每周日 20:00 自动运行,结果发到微信/飞书

历史去重的实现

python
import json
from pathlib import Path

HISTORY_FILE = "topic_history.json"

def load_history() -> list[str]:
    if Path(HISTORY_FILE).exists():
        return json.loads(Path(HISTORY_FILE).read_text())
    return []

def save_topic(title: str):
    history = load_history()
    history.append(title)
    Path(HISTORY_FILE).write_text(json.dumps(history, ensure_ascii=False))

def is_duplicate(title: str, threshold: float = 0.8) -> bool:
    """用简单的关键词重叠率判断是否重复"""
    history = load_history()
    title_words = set(title)
    for past_title in history:
        past_words = set(past_title)
        overlap = len(title_words & past_words) / max(len(title_words), 1)
        if overlap > threshold:
            return True
    return False

6️⃣ 效果验证:上线前后的数据对比 📊

我的真实数据(2025.09 - 2026.03)

指标使用前(纯靠感觉)使用后(Agent 辅助选题)
每周选题耗时2 小时15 分钟(运行 + 人工筛选)
选题命中率30%(互动 > 平均值)65%
月均爆款数0-1 篇2-3 篇
内容方向随机发散聚焦 3 个高互动赛道

关键发现:Agent 最大的价值不是"帮你想标题"——是帮你看到你自己看不到的数据规律。比如我一直以为"技术深度文"是我的优势,但数据显示"面试经历分享"的互动量是技术文的 3 倍。


7️⃣ 常见坑与修复 🚨

症状修复
选题同质化Agent 每次推荐的选题都差不多在 Prompt 里加"必须和上周推荐的不同" + 传入历史选题
数据时效性推荐的话题已经过了热度窗口只用 3 天内数据,不用 7 天
脱离定位Agent 推荐了你写不了的话题在 Prompt 里明确写"我的能力边界是 X"
标题党倾向Agent 生成的标题过于夸张加约束"标题必须有实质内容支撑,不能纯标题党"
忽略平台规则推荐了可能被限流的敏感词维护一个"小红书敏感词列表",生成后过滤

8️⃣ 扩展方向:从选题到内容全链路 🚀

这个 Agent 只是内容创作链路的第一环。后续可以扩展:

选题 Agent → 大纲 Agent → 配图建议 Agent → 标题 A/B 测试 Agent → 发布时间推荐 Agent

不要一次全做。先把选题 Agent 用 3 个月,验证有效,再扩展下一环。

🎯 为什么不一步到位

我见过太多人做"全自动内容生成系统"——从选题到发布全自动。结果:

  • 内容质量不可控
  • 账号被判定为营销号限流
  • 粉丝能看出来是 AI 写的,取关

Agent 辅助创作 ≠ Agent 替代创作。 选题可以自动化,但正文必须是你自己写的——这是你和粉丝之间信任的基础。


🎓 总结

🎯 一句话总结

小红书选题 Agent = ReAct 单 Agent + 搜索/分析/生成三个工具。数据源用第三方平台 API,不要自己爬。核心价值不是"帮你想标题",是"帮你看到数据规律"。选题可以自动化,正文不行。


💡 自测题

  1. 为什么这个场景用单 Agent 就够,不需要 Multi-Agent?
  2. 小红书数据获取有哪几种方案?为什么不推荐自建爬虫?
  3. 选题 Agent 的三个工具分别解决什么问题?
  4. 生产化需要加哪些"补丁"?为什么需要历史去重?
  5. 为什么说"Agent 辅助选题"而不是"Agent 自动生成内容"?

答不上来的,回头再读一遍对应章节 ✍️


📌 转载声明

本文为🍋AI小柠檬原创。 转载请注明来源,付费产品包内禁止转载。

© 2026 🍋AI小柠檬 · 内容原创,转载请注明出处