bnudaily 公众号提供的 MCP 服务器
一个为校园公众号编辑工作设计的 MCP 服务器,通过语义检索往期推送和 LDA 主题分类,辅助撰写微信推送内容。
本项目提供三个 MCP 工具供你的 AI 对话助手调用:
通过语义匹配搜索校园公众号的往期推送。适用场景:
- 撰写推送时,检索相关主题的往期文章作为写作参考
- 策划大学校园活动时,查找类似活动的案例
搜索结果会通过 LDA 模型返回文章的主题分类(默认开启),包括 6 个预定义主题:
| 主题 | 典型内容 |
|---|---|
| 招生招聘与行政事务 | 通知公告、招生信息 |
| 竞赛与体育活动 | 比赛、运动会、竞赛 |
| 学生工作与心理健康 | 班级建设、心理辅导 |
| 思政教育与历史学习 | 党团活动、红色教育 |
| 校园文化与艺术生活 | 文艺演出、社团活动 |
| 学术研究与专业发展 | 讲座、论坛、科研 |
根据文章 ID 批量获取完整正文(最多 10 篇)。search_articles 默认只返回主题分类元数据,需要调用此工具获取可供参考的原文内容。
模糊搜索公众号名称和简介。当需要在特定公众号范围内搜索文章时,AI 助手可以先用此工具找到公众号,再将名称传给 search_articles 的 account_names 参数。
例1:班级活动纪实
用户: 帮我写个推送记录班级参观国博活动
AI助手:
1. 主动询问用户补充细节:活动时间、参与人数、参观了哪些展厅、有什么印象深刻的展品等
2. 获得足够信息后,分主题多次调用 search_articles:
- "大学班级集体活动"
- "国博参观活动"
- "参观活动的活动纪实"
3. 向用户呈现检索结果摘要(公众号、标题、内容概述)
4. 调用 get_article_contents 获取筛选后的文章正文
5. 参考往期文章的风格和表达撰写新内容
例2:公益活动宣传(限定公众号范围)
用户: 写一篇献血活动预告的推送
AI助手:
1. 主动询问活动细节:时间地点、献血流程、注意事项等
2. 调用 search_accounts 搜索"公益"或"志愿",找到相关公众号
3. 向用户呈现公众号列表,确认搜索范围
4. 调用 search_articles 并指定 account_names 参数,限定在公益类公众号范围内搜索:
- "献血活动"
- "志愿服务"
5. 调用 get_article_contents 获取文章正文
6. 参考往期献血推送的风格撰写内容
本项目基于 Cloudflare Workers,依赖以下服务:
- D1 数据库:存储公众号和文章元数据
- R2 存储桶:存储清理后的推送文章 Markdown 内容
- AI Search:提供语义搜索能力
- LDA API:通过 Modal.com 部署的主题推断服务,源代码在
/lda目录下
# 本地开发
npm run dev
# 部署
npm run deployWorker 会自动将 bnudaily 公众号服务后台抓取的推送文章同步到 R2 存储桶:
- 定时同步:每天 17:55 UTC 自动同步最近 24 小时的新文章
- 手动同步:
POST /sync?start_id=1&end_id=100同步指定范围(强制覆盖)
文章内容处理:HTML → Markdown,删除图片和表格,保留文本格式。