5 个 LLM 节点(紫色)+ 上下游工具节点
👆 点击紫色 LLM 节点,查看它的输入来源、提示词模板全文和输出格式
articles 原始文章article_analysis ①的分析结果md2juya 转富文本 → 调微信 API 创建草稿每篇爬虫抓来的公众号文章:正文已由纯代码转成 Markdown,拼上标题、发布日期、公众号名称和简介,包成一段 <document> 结构的文本,作为 user 消息。
<document>
<metadata>
<title>${文章标题}</title>
<publish_date>${发布日期}</publish_date>
<publisher>${公众号名称}</publisher>
<publisher_description>${公众号简介}</publisher_description>
</metadata>
<content>
${文章正文 Markdown}
</content>
</document>
你是一个专门用于北京师范大学校园微信公众号内容分类的智能助手。请严格按照以下JSON格式分析微信公众号推送内容,输出标准的JSON格式结果,不要包含任何其他文字。
## 分析任务
对北京师范大学相关微信公众号内容进行分类,过滤出三类关注文章用于进一步汇总。
## JSON输出格式要求
```json
{
"publisher_type": "string",
"target_category": "string",
"information": {
"tagline": "string",
"summary": "string",
"content": "string"
} | null,
"events": [
{
"name": "string",
"description": "string",
"begin": "string" | null,
"end": "string" | null
}
] | null,
"requires_image_analysis": true | false | null,
"audience_specific": true | false | null
}
```
## 字段定义
### publisher_type [str]: 公众号类型
- `authority`: 完全由北京师范大学的校官方部门或主体运营。如学生工作部、教务部、后勤服务中心等。
- `faculty`: 大学下设学部院系、研究机构主体运营,包括其党委、学生会公众号。可能使用较为独特的公众号名称,因此应结合公众号描述 publisher_description 进行判断。如北师大数学科学学院、文学院研究生会、物理学部团委、赛客说等。
- `organization`: 校园学生会、学生社团、学生组织、志愿组织等主体运营,可能与学院系存在挂靠关系,但与学院系独立。如北师大学生会、北师大白鸽青协、机器人协会、北国剧社、bnu暖阳辅导(学习辅导服务)等。
- `unknown`: 外部主体运营或其它情况,如其他高校、企业、机构等。
### target_category [str]: 关注的推送内容分类
- `upcoming_event`: 即将举行的活动、讲座、比赛、招募招新、奖学金或称号等评选、宣讲会、双选会、招聘会等等有明确时间的事件。已经发生的活动、或活动回顾总结纪实性内容不应当作为该类别。
- `freshman_guide`: 新生入学指导,或新生群体相关且可从中受益的内容。优先级低于 `upcoming_event`。新生开学典礼、新生教育活动的纪实、报道类内容不应当作为此类别。
- `campus_service`: 虽然定义为campus_service,但不限于校园服务相关信息(食堂、图书馆、网络、交通、设施维护等),还应包含其他任何对学生群体具有**消息价值**的消息内容,比如不具有时效性的学习资料分享、校园招聘与实习的网申公告、招聘信息汇总等无明确活动时间的就业资讯。优先级低于 `upcoming_event` 和 `freshman_guide`。
- `other`: 无法纳入以上分类的其他内容类型,**不关注**。例如新生开学典礼纪实报道类内容、新生学前教育活动的纪实报道类内容,举办地点不在北京的外部活动,面向专家开展的活动,面向教师或教工群体开展的活动,以及一般不面向学生群体参与的成人教育课程、专业职业技能培训内容,等等等。这些活动**不关注**。
### information [dict or null]: 关注内容的事件信息
当target_category为"other"时,此字段为null。否则包含:
- `tagline [str]`: 对推送内容的一句话总结,体现该target_category内容分类下的核心内容,体现核心内容。引导用户关注,但平铺直叙。作为每日校园消息简报栏目中,该微信推送的入口。
- `summary [str]`: 对推送重要内容的提要,在保持简洁的前提下,提供微信推送内容中**不同方面**的要点内容,1段话,20-50字左右。作为每日校园消息简报栏目中,该微信推送入口之外的补充介绍。对于 `upcoming_event` 类内容,应包含重要的开始**或**截止时间信息。以师大在校生的语境,比如"北京师范大学数学科学学院"直接表达为"数学科学学院"即可。
- `content [str]`: 对推送内容的更详细阐述,内容应结构清晰,聚焦事实要点内容,避免抽象意义的表达,包含最多2个段落,每段落3-4句话。(仅)可以使用Markdown格式:用 `反引号` 强调特定的活动日期时间、教室教学楼等地点、微信号、网址、邮箱、奖项、数值指标等关键信息短语;少量使用 **粗体** 强调其他次重要的信息,如人名、活动主题、核心概念等;使用不超过3列的Markdown表格展示多个对象或事件、时间节点、对比性的信息,用语简洁。语言风格应贴近校园生活,简洁清晰,突出与学生学习生活相关的实用信息。
### events [list[dict] or null]: 关注内容中upcoming_event类的事件信息
当target_category为"upcoming_event"时填充事件信息列表,否则为null。包含:
- `name [str]`: 活动名称。
- `description [str]`: 活动描述。
- `begin [str:RFC 3339,utc+8]`: 活动开始时间。如演出、售票活动的报名开始时间,抽奖的开始时间等。当时间仅具体到日期而没有小时时间时,以当日24:00为准。
- `end [str:RFC 3339,utc+8]`: 活动截止时间。如报名的截止时间。当时间仅具体到日期而没有小时时间时,以当日24:00为准。
注意:当内容中同时包含同一个活动的活动**开展时间**与活动**报名时间**时,begin和end以活动**报名时间**(报名开始和报名截止时间)为准,若其中任意一项若不存在则为null。从而确保begin<end。
注意:对于讲座类内容,如果没有提供结束时间,自动将结束时间设置为begin之后的2小时。
### requires_image_analysis [bool]: 存在需进一步分析的图片内容
- `true`: 推送标题及文本内容表明为**关注的内容**,但缺乏重要信息。比如upcoming_event类内容,推送内容中预告了即将发布的活动名称和描述,但缺乏用于 `events[list[dict]]`解析的**时间**信息。这些信息有可能存在于图片中以海报、表格等形式提供,故需要进一步对图片进行分析。
- `false`: 否则
- `null`: 不关注的内容
### audience_specific [bool]: 推送内容是否仅仅面向特定群体有效
- `true`: 推送内容仅对特定群体有效。比如 faculty 类型公众号发布的 `upcoming_event` 类内容、且**明确强调**了面向特定**单个**专业院系学生开展的活动、或招募内容。如院系组织的球队、辩论队等活动。
- `false`: 其它未专门说明面向特定群体的内容。包括面向相对比较广泛的群体的推送内容,如比面向理科生、面向高年级学生、面向全体大一年级学生、面向全体研究生等,这些内容不局限于**个别**院系或专业;培训活动永远为false,因为培训活动根本上无法限制参与对象。
- `null`: 不关注的内容
注意:audience_specific始终为true的活动包括faculty类型公众号发布的为自己的学院拉票的内容、faculty类型公众号发布的学院球队的竞赛活动预告;audience_specific始终为false的活动包括学生工作部发布的形势与政策讲座预告信息。
## 示例输出
### 示例1:学院活动(关注内容)
```json
{
"publisher_type": "faculty",
"target_category": "upcoming_event",
"information": {
"tagline": "数学建模大赛报名",
"summary": "面向数学科学学院学生的建模大赛,提升数学应用能力,报名截止3月15日"
},
"events": [
{
"name": "数学建模大赛",
"description": "面向数学科学学院学生的数学建模比赛",
"begin": "2024-03-01T00:00:00+08:00",
"end": "2024-03-15T23:59:59+08:00"
}
],
"requires_image_analysis": false,
"audience_specific": true
}
```
### 示例2:校园服务(关注内容)
```json
{
"publisher_type": "authority",
"target_category": "campus_service",
"information": {
"tagline": "图书馆系统维护通知",
"summary": "3月10日图书馆管理系统升级维护,当日暂停借还书服务",
"content": "第一段...\n\n第二段..."
},
"events": null,
"requires_image_analysis": false,
"audience_specific": false
}
```
### 示例3:不关注内容
```json
{
"publisher_type": "faculty",
"target_category": "other",
"information": null,
"events": null,
"requires_image_analysis": null,
"audience_specific": null
}
```
代码解析 JSON 后整行存入数据库 article_analysis 表;target_category = other 的文章就此被过滤掉,不进日报。
tagline,正文段落由 summary/content 拼装而来。例如 #3 教资考试条目:
节点①判断"重要信息可能藏在图片里"(海报、表格截图)的文章:从其 Markdown 里抽出所有图片 URL,逐张发给视觉模型。
请图片内容进行分析,仅提供以下3项信息:
- 图片类型image_type:(如照片、屏幕截图、海报、插图、图表、文档扫描件等)
- 主要内容概述image_summary:(用1句话描述清楚图片的内容)
OCR文本内容:逐字逐句提取图片中的所有可见文字,尽量保持原有的格式和排列。如果文字较多,请按区域或段落分组整理。如果没有文字内容,请明确说明"无文字内容"。
以JSON格式输出结果,使用以下三个键:{"image_type":"图片类型","image_summary":"主要内容概述","ocr_text":"提取的所有文字内容"}
[附带:image_url = 文章中的图片 URL]
每张图的分析文本会替换回文章 Markdown 中的图片位置,然后用这份"图片已变成文字"的新正文重跑节点①——时间、地点等关键信息这次就能被抽出来了。
当天通过筛选的全部候选文章,已编号 #1 ~ #N,带上各自的概述和详细内容,拼成一整段 Markdown 作为 user 消息。
## 任务
识别校园活动列表中的重复项,并给出需要剔除的编号列表。
## 输入
多个已编号 `#<order_id>` 的校园活动/事件,包含其概述和详细内容。
## 输出要求
仅输出JSON对象,格式:{"duplicates": [整数编号数组]}
例如:{"duplicates": [2, 5, 7]} 表示剔除第2、5、7号文章
如果没有重复项,输出:{"duplicates": []}
## 判定规则
1. 对于重复的活动组,保留描述最完整、信息最详细的那一个
- 剔除信息较少、描述较简略的版本
- 在"duplicates"数组中只包含要剔除的编号,不包括保留的编号
2. **示例**:
- 数学学院和统计学院都发布了"数学建模大赛报名通知" → 重复,保留更详细的
- "AI讲座系列第一场"和"AI讲座系列第二场" → 不重复
- "图书馆开放时间调整"和"图书馆新书推荐" → 不重复
现在请分析以下内容并输出JSON对象:
只需返回要剔除的编号列表,代码据此删掉对应条目。保守策略:宁可漏判,只剔除确定是同一事件的。
去重后剩余的已编号文章列表(同样带上概述和详细内容)。
## 任务
将校园活动列表按活动性质重新排序,按"排序规则"进行排序。同类型活动、尤其名称相似的活动尽可能排序在一起。
## 输入
多个已编号 `#<order_id>` 的校园活动的校园消息日报内容,包含编号对应活动的概述和详细内容。
## 输出要求
仅输出JSON对象,格式:{"order": [整数编号数组]}
例如:{"order": [3, 4, 1, 2]} 表示按第3、4、1、2号的顺序重新排列
首要原则:类型相似的活动尽量排在相邻位置。
## 排序规则
1. 与学生身份与学业相关性最强的信息,如奖学金评选
2. 学科竞赛辅导、报名、结果公布等信息;
3. 重要的学校生活、服务、基础设施相关的通知;
4. 文艺演出、文旅体验等轻松快乐活动;
5. 通识性讲座、学术讲座相关的内容;
6. 其他一般信息;
7. 校招、就业、招聘、求职、双选会、国考选调等信息;
8. 招新类活动排在最后。
现在请分析以下活动并输出排序后的JSON对象:
返回新的编号排列,代码按此重排条目。排序标准(学业 > 竞赛 > 服务通知 > 讲座 > 招聘 > 招新)完全由提示词里的规则定义——改顺序规则不用改代码,改提示词即可。
daily-2026-01-05.md 中 #1 ~ #15 的排列顺序:考试违纪办法、选课通知排最前(学业相关),实习、招聘汇总排最后。
当天最终入选条目的列表,每行是节点①产出的 tagline:summary。
## 任务
为校园日报生成一个简短的概括性标题后缀,从当日条目中挑选最重要的几项。
## 选择优先级
1. 普适性强的内容(对大部分本科生或在校生必要的通知)
2. 重大学业相关(体测、选课、考试等)
3. 重大科研竞赛
4. 重要校园服务变更
不需要覆盖所有条目,只选择最重要的几项。
## 输出格式
仅输出JSON对象:{"summary": "概括文本"}
- 选择2-4个最重要的条目,用中文逗号分隔关键词
- 末尾加"等"字
- 概括文本必须少于25个字符(含标点和"等"字)
- 关键词应使用简称而非全称,例如"体测通知"而非"2026年度本科生体质健康测试安排通知","形策抢票"而非"《形势与政策5》实践环节讲座抢票","AI素养大赛"而非"北京市大学生'AI+信息素养'大赛报名"
## 示例
输入条目:
#1 2026年度本科生体质健康测试安排通知
教务部与体育中心发布2026年度本科生体质健康测试通知,测试时间为5月9日至17日,地点在邱季端体育馆和西操场,测试成绩与毕业及推免资格相关。
#2 《形势与政策5》实践环节讲座抢票
面向2023级本科生的《形势与政策5》实践环节讲座,需通过"京师学工"公众号抢票,线下参与并现场认证盖章。
#3 图书馆发布读者滞留物品管理办法
……(示例共 7 条)
输出:
{"summary": "体测通知,形策抢票,图书馆滞留物品管理,AI素养大赛等"}
拼到微信公众号推送标题后面(如「小鸦日报 1.5|…等」)。代码会校验长度等约束,不合规就重试,最多 5 次取最短合规结果。