news 2026/9/17 13:19:49

用Coze扣子搭建自动化招标信息查询与分析系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用Coze扣子搭建自动化招标信息查询与分析系统

我们这行做商务拓展和市场调研的,最烦的事情不是没商机,而是商机藏在几十个招标网站、政府采购平台、企业公告里,每天手动刷一遍,眼睛看花不说,还容易漏掉关键项目。更头疼的是,有些招标信息光是PDF附件就有几十页,光靠人力去判断“这个项目跟我们到底搭不搭”,半天时间就搭进去了。

所以当我第一次在Coze扣子上跑通“自动化招标信息查询与分析”这个工作流时,说实话有点激动。这不是简单的关键词抓取,而是把“信息采集—清洗过滤—智能匹配—价值评估—推送提醒”整条链路全部打通,我可以直接在一体化AI智能体里完成重复性工作。这篇文章就把我搭建这套系统的完整过程、踩过的坑和优化心得都写出来,你照着做,也能用Coze扣子搭一套属于自己业务线的商机雷达。

1. 内容整体设计与思路拆解

1.1 为什么要用Coze扣子做招标信息自动化

先说背景。传统做招标信息监控,无非三种路子:第一种是花钱买商业数据库,一年几万块起步,适合大企业,个体和小团队扛不住;第二种是手动刷网页,免费但费人,而且信息滞后严重,等看到的时候往往已经快截止了;第三种是写爬虫脚本,技术门槛高,更麻烦的是招标网站反爬策略三天两头变,维护成本极高。

Coze扣子解决的是“性价比”和“维护成本”这两个核心痛点。它本质上是字节跳动推出的一款AI智能体开发平台,最大的特点是“低代码甚至零代码”,把所有复杂的技术细节都封装好了。我可以不写一行爬虫代码,就能完成网页数据的自动抓取;不需要懂大模型原理,就能设计一套符合业务逻辑的AI分析流程。而且Coze扣子的工作流是可视化画布,拖拉拽就能编排节点,改起来非常直观。

更关键的是,Coze扣子天然支持大模型能力。传统爬虫只能把信息抓下来,但判断“这条招标信息适不适合我们公司”这件事,还是得靠人肉看。Coze扣子则可以直接让大模型去读招标公告的全文,自动提取资质要求、预算金额、投标截止时间、项目联系人,甚至能帮你评估竞争激烈程度。这等于给商机监控系统装了一个“AI助理”,从“被动等消息”变成了“主动筛情报”。

1.2 整体架构:一个中心、两条采集线、N个输出口

整套系统的设计思路,我总结为“一个中心、两条采集线、N个输出口”。

一个中心就是Coze扣子里的主工作流(Main Workflow),负责统筹所有逻辑。两条采集线,第一条是针对公开招标网站的定期巡检,通过定时触发器去抓取指定栏目的最新公告;第二条是针对特定渠道的定向监控,比如某个重点客户的采购页面、某个行业的垂直招标平台,一旦出现新内容立即捕获。N个输出口包括飞书群机器人推送、微信通知、Excel表格输出、Markdown周报等。

这个架构的好处是松耦合。采集线负责拿数据,中心工作流负责处理数据,输出口负责分发结果,三者之间通过变量传递,互不干扰。这样我后续想增加一个采集源,或者换一个推送渠道,都不需要动整个系统,只改对应模块就行。

处理流程上,原始数据进来后先做清洗,去掉重复信息,再进行解析,把非结构化的自然语言文本转换成结构化的字段,比如项目名称、招标编号、预算金额、截止日期。接下来是AI匹配环节,大模型会拿着我们预设的产品关键词库、业务范围、资质要求去逐条打分,凡是匹配度低于阈值的直接丢进“低相关”分类,不再打扰你。最后进入输出阶段,热门信息即时推送,一般信息定时汇总,每周还会自动生成一份商机分析报告。

1.3 为什么说“一键获取精准商机”的关键在“精准”

很多人做自动化信息监控,容易陷入一个误区,觉得“抓得越多越好”。其实对于商机挖掘来说,海量噪音意味着巨大的筛选成本。一天抓回来500条招标公告,你根本来不及看,结果就是系统变成了摆设。

“精准”才是这套系统的灵魂。我在设计时刻意做了三层漏斗过滤。

第一层是关键词硬性过滤。我们公司的业务方向是信息系统集成和运维服务,所以凡是招标标题或内容里含有“物业”“保洁”“食堂食材”“装修工程”这类明显不相关词条的信息,直接排除。

第二层是语义相关性匹配。有些招标公告标题不包含关键词,但正文里提到了“信息化系统运维”“数据迁移”“网络安全等保测评”,这时候就需要大模型来理解语义,判断是否与我们的能力匹配。

第三层是商业价值评估。这是我自己加的个性化环节,大模型会根据预算金额、项目周期、投标截止日期、采购单位的性质等因素,给每条商机打一个1到5星的推荐指数。只有达到三星以上的商机,才会触发即时推送。

所以整套系统的价值不在于“全”,而在于“准”,把有限的时间和精力花在最值得关注的商机上,这才是智能化工具应该做的事情。

2. 核心细节解析与实操要点

2.1 数据源选择:公开接口优先、静态页面兜底、PDF解析补盲区

搭建系统第一步,也是最关键的一步,就是确定数据源。我踩过不少坑,这里直接说结论,按优先级排列。

第一优先级,选择带有公开OpenAPI的政府采购平台。像很多省市级的公共资源交易中心,都提供了标准化的数据接口,返回的是干净的结构化JSON数据,既稳定又省流量。Coze扣子里的“HTTP请求”节点可以直接调用这些接口,设置好请求头、参数,就能拿到规范的数据。

第二优先级,针对没有公开接口的招标网站,用Coze扣子的“网页抓取”节点。这个节点本质上是一个内置的爬虫工具,你只需填入目标URL,再设定好抓取规则(比如CSS选择器或XPath),它就能把网页上的列表和详情内容提取出来。

第三优先级,也是很多新手容易忽略的,就是PDF附件的解析。招标公告里最核心的信息往往不在网页正文里,而是在附件,比如详细的采购需求、评分标准、合同模板。Coze扣子支持直接上传PDF文件,并在工作流中调用文档解析插件,把PDF内容转成文本后再喂给大模型。这一点相当实用,能让你的信息完整度提升一个档次。

需要特别留意的是,采用HTTP接口方式接入时,务必仔细阅读平台的开发者文档,留意调用频率限制。有不少平台的接口要求每秒最多调用一次,申请到的密钥(APIKey)权限可能也会有每日配额,一旦超限会被临时封禁IP,这会影响整个工作流的稳定性。我第一次运行批量任务的时候,就是没注意频率限制,结果跑了不到5分钟就被对方服务器拒了,整个工作流全部标记为失败。

2.2 定时触发:别小看“时间策略”这个细节

自动化系统里,“什么时候去抓数据”直接决定了信息的时效性。不同网站的更新规律不一样,比如很多政府采购网站习惯上午9点到11点集中发布信息,有的网站则是傍晚更新。如果抓取时间选错了,要么抓到的是前天旧闻,要么频繁请求空页面浪费配额。

我采用的策略是“高频巡检+错峰抓取”。Coze扣子的定时触发器支持cron表达式,可以精确到分钟。我的做法是:工作日早上8点半、10点半、下午2点半各巡检一次,保持一天三次的频率。这三次时间几乎覆盖了绝大多数网站的更新时段,能确保项目发布后最晚不超过几个小时就能进入系统。

还有一个小细节,“节假日要不要跑”。刚开始我图省事,周一至周日全开,结果发现周末和公休日基本没有新公告,白白消耗了API配额。后来我改成只选择工作日运行,并把周末的计划全部停掉,系统负载降了很多,效率反而更高。另外,我增加了一个内置的日历判断逻辑,遇到法定节假日,通过一个条件分支节点自动跳过当天任务,省心不少。

2.3 信息解析:善用“插件广场”里的现成轮子

Coze扣子的插件机制,应该是平台上最被低估的功能之一。插件广场里有大量社区贡献的现成工具,比如URL统一解析插件、正文提取插件、PDF解析插件、表格识别插件等,基本上你能想到的常见格式解析需求,都能找到对应的插件。

我强烈建议你使用插件广场里的“网页正文提取器”。很多招标网站的页面结构非常混乱,导航栏、推荐位、广告位夹杂在一起,直接抓取回来的文本脏数据很多。正文提取器能自动识别主内容区域,过滤掉页头和页脚,提取出来的就是干净的文章主体,极大减少了大模型后续分析的负担。

还有一个小技巧:为了提高后续AI分析的准确率,我会在解析节点后加一个“统一文本格式化”的子流程。这个流程做的事情很简单,把连续的空格、换行符压缩,去除乱码字符,再按照“标题、发布时间、正文、附件说明”的顺序重新拼接成一段结构化文本。这样喂给大模型的提示词时,它理解起来会轻松得多,因为信息已经排好序了。

2.4 搭建智能体Bot:对话式交互是加分项

除了自动化工作流,我还在Coze扣子上搭了一个对话式智能体Bot,用来做“人工深度查询”的入口。当工作流推送了一条商机,但我对这个项目还有疑惑时,我可以直接在Bot里追问,比如“这个项目要求的ISO27001证书,我们目前有吗?”或者“根据过去三年数据,这个采购方平均中标价大概在什么区间?”

为了实现这个功能,我在Bot里建立了一个“知识库”,用来存放公司的资质证书文档、历史中标记录、核心产品介绍等资料。Bot会先检索知识库中与之相关的内容,再结合工作流推送过来的项目结构化数据,综合回答我的问题。

这种方式的意义在于,它把“商机监控”向前延伸到了“商机评估”阶段。过去我接到一条招标信息,要自己去翻公司资料、做对比分析,现在这些活儿Bot替我完成了。而且Coze扣子的Bot支持发布到飞书、微信公众号等多个渠道,我直接就在飞书里和它对话,体验很顺滑。

3. 实操过程与核心环节实现

3.1 第一步:创建一个理想的工作区并配置环境

正式搭建之前,建议先花10分钟把Coze扣子里的项目空间整理好。个人建议是在团队空间下建立独立的项目目录,因为Coze扣子的“团队空间”支持多人和多项目协作,后续你可能会创建多个端点的Bot或工作流,分层管理会清爽很多。

接着进入资源库,提前把需要用到的素材准备好。我建议创建一个“招标数据源配置”的云文档,把目标网站、接口地址、请求参数说明、更新频率等全部记录下来,这样搭建工作流的时候,填配置节点可以直接复制粘贴,不用来回切换页面找链接。

3.2 第二步:设计主工作流并配置关键节点

新建工作流后,会看到一个可拖拽的画布,我给它起名叫“商机雷达_主流程”。整个画布从左到右依次是:定时触发器→数据抓取→文本清洗→大模型解析→条件筛选→推送通知。

这里重点说一下“大模型解析”节点。节点里需要配置使用的模型、提示词和输出格式。我选的是平台默认的旗舰版模型,但在提示词方面下了很多功夫。我的核心提示词大概是这样的(简化版):

你是一名专业的招投标分析师。请分析以下招标公告文本,提取信息并JSON格式输出:项目名称、招标编号、采购单位、预算金额、资质要求、投标截止时间、项目简介。具体要求: 1. 资质要求必须完整列出,这是匹配公司资质的关键。 2. 预算金额统一转换为万元,保留一位小数。 3. 若文本中某项信息缺失,对应字段填"""暂无"""。 4. 根据该公司业务范围(系统集成、运维服务、软件开发),对该商机与公司业务的匹配度进行打分,0-10分。 5. 判断该商机是否紧急:距离投标截止时间是否少于7天,是则为true。

插一句,Coze扣子里的输出必须是有明确结构的JSON格式,这样后续条件筛选节点才能正确读取字段值。初学者容易踩的坑是让大模型自由发挥输出一段话,结果后续节点根本没法做逻辑判断。

3.3 第三步:设置筛选规则和分支逻辑

拿到大模型解析出来的结构化字段后,接着接一个“条件分支”节点。我在这里设置了两层规则。

规则一是硬性排除:如果“资质要求”字段中包含“建筑装修装饰工程专业承包”或者关键词库中出现“物业、保洁、餐饮”等词汇,直接进入“不匹配”分支,不再往下走。规则二是分值判断:如果“匹配度打分”小于6.5分,进入“低优先级列表”,只做日报汇总,不做即时推送;大于等于6.5分的,进入“高价值商机”,触发推送。

判断逻辑是搭在代码节点里的。Coze扣子支持添加Python代码节点,方便处理一些复杂判断。比如我需要同时考虑匹配度分数、截止日期紧急度、预算金额是否超过50万这三个条件,才能决定是否触发异常紧急推送,这在纯拖拽的“条件分支”节点里做起来会有点绕,但在代码节点里几行Python就搞定了。

3.4 第四步:多渠道推送与通知内容设计

推送这块,我接入了两个主要渠道。

第一个是飞书群机器人。我在一个商务对接群里创建了一个自定义机器人,拿到Webhook地址后,填入工作流的“飞书消息通知”节点。这里要注意一个细节:不要推送大段原文,群里的人没时间看你那几百字的招标公告摘要。我的做法是让大模型提前生成一段60字以内的“商机摘要”,再配合项目名称、预算金额、截止时间这几个核心字段,以及一个“跳转原文”的链接,拼成一条简洁的消息卡片。

第二个渠道是邮件通知。Coze扣子内置了邮件发送插件,我用它来推送每日汇总报告。每天晚上6点,系统会把当天所有新发现的商机(包括低优先级和不匹配项)整理成一份Excel表格,并把前一天重点商机的跟进状态一并汇总,发给相关团队。

3.5 第五步:见证“Markdown转Word”的妙用

这里特别介绍一下我在生成报告时用到的一个冷门技能,Markdown转Word。这个技能属于典型的“用时方恨少”的工具类节点,但其实在很多办公场景里特别有用。

我们的周报流程是:系统先让大模型把一周的高价值商机整理成Markdown格式,包含汇总统计、重点商机列表、匹配度分析、建议下一步动作。然后把这段Markdown文本输入到“Markdown转Word文档”插件里,插件会直接生成一个排版整齐的Docx文件。

为什么不用Word文档插件直接生成?因为大模型生成Markdown的结构化能力最强,而Word插件直接输出非结构化的段落,往往容易把层级关系弄乱。先转成Markdown再做格式转换,相当于把排版工作交给合适的工具,结果更干净。生成的Word文档再配合Coze扣子的文件管理能力,上传、归档、分享都很顺畅,团队直接用飞书打开就能看,特别方便。

3.6 第六步:知识库连接与人工对话验证

最后一步,把整个工作流和Bot智能体连接起来。我在Bot的“人设与回复逻辑”里写清楚它的职责范围,相当于告诉它“你是一个招标情报分析助理,可以访问知识库、查询历史数据、根据工作流推送结果回答问题”。

然后我在知识库里上传了公司的营业执照、ISO认证证书、过往三个典型项目的合同信息脱敏版、公司产品线介绍文档。做完这些后,我实际测试了一下这轮流程:让Bot基于推送来的“某市政务云平台运维服务采购项目”信息,评估一下我们公司中标的概率。

Bot结合知识库的公司资质和文档,给出的结论是:资质基本满足,但历史同类项目合同额低于本次预算金额的三分之一,建议关注评分标准中关于“类似业绩”的得分权重。这个分析角度很有效,确实是我没在第一时间想到的,系统能帮我把关键分析视角补上,而不只是机械地提供未经处理的信息。

4. 常见问题与排查技巧实录

4.1 问题一:抓取的内容出现大量乱码或空文本

现象:从某个地方级招标平台抓回来的网页正文,要么是大量的HTML标签字符,要么干脆是空白。排查后发现问题出在网页编码上。部分老旧的政务网站还在用GBK编码,而Coze扣子默认按UTF-8解析,自然会出现乱码。

解决办法:在“网页抓取”节点的参数里,手动指定字符编码为“GBK”或“自动检测”。如果节点不支持设置编码,就改用HTTP请求节点直接获取页面源码,然后用代码节点的Python脚本做解码处理,再重新编码成UTF-8,喂给后续节点。

4.2 问题二:大模型解析结果的字段值不稳定

现象:同一批招标信息,第一次跑的时候“预算金额”解析成“预算金额:200万元”,第二次跑的时候又变成了“预算:2000000.0元”,格式不一致导致后续的数值比较逻辑出错。

解决办法:在提示词里做了更严格的约束,明确要求只输出纯数字,单位统一转换为“万元”,并且禁止出现其他任何说明性文字。同时,在代码节点里增加一个“兜底清洗”逻辑,用正则表达式提取出数值再统一转换。从那以后,这类问题基本就消除了。

4.3 问题三:API接口突然停止返回数据

现象:有一个省级采购平台之前一直很正常,某天开始突然返回403错误。

解决办法:先检查是不是调用频率过高触发了风控。降低频次后还是不行,进入开发者后台发现对方的API版本升级了,老的接口路径被废弃,需要改用新版接口地址。这是很多同类平台常见的调整方式。所以我养成了一个习惯:给每一个数据源都配置双通道,除了公开接口之外,再把该网站的网页搜索地址作为备用抓取源,万一接口停用了,网页通道能无缝接管,保证系统不至于彻底瘫痪。

4.4 问题四:文件上传之后无法被插件识别

现象:上传了一个扫描版的招标附件PDF,但文档解析插件返回的文本是空的。原因很快查明,这份PDF其实是图片扫描件,本身没有文本层,也就是常见的“扫描版PDF”。

解决办法:给工作流增加一个“OCR文字识别”插件。Coze扣子插件广场里有人工智能类的OCR工具,可以直接把图片型PDF转成可检索文本。这里有一个省钱的小建议,OCR会消耗较多的资源额度,建议只在主工作流识别失败时,才通过错误处理分支去触发OCR的“补救流程”,不要对每一个附件都执行,这样能大幅节约资源用量。

4.5 问题五:早上推送的消息没人看,商机被忽略

现象:系统上线第一周,飞书群里每天推送5到6条“高价值商机”,但业务同事反馈说他们早上忙于处理邮件,根本来不及看群消息,导致一些重要商机没有及时跟进。

解决办法:推送时间策略做了调整。我不再是抓到信息后立刻推送,而是把推送时间设置为上午10点、下午3点两个固定时间点,避开大家刚上班最忙碌的时段。同时,针对“距离投标截止时间不足3天”的紧急商机,增加“紧急催办”逻辑,在飞书群里的卡片标题前缀“【紧急·今日截止】”字样,并单独发给指定的业务负责人,确保重要信息不被淹。

5. 优化进阶:从“能用”到“好用”的几个升级

5.1 从“定时抓取”升级为“关键词预警关注”

第一版的工作流只按照“所有新信息”来抓取,效率已经比人工高出很多,但不够聪明。后来我新增了“关键词预警”功能模块,在配置中心维护一组高价值关键词,比如“信创”、“国产化替代”、“智慧园区”、“数据要素”等。一旦新抓取的招标公告正文中命中这些关键词,系统自动把相关文本的推送权重抬高一级,并且额外触发一次深度分析,大模型会专门针对该关键词的关联度输出专项分析报告。

举个例子,当出现“信创”关键词时,系统会额外告知:“该项目要求投标人具备国产化操作系统适配经验,需注意核心产品是否在适配目录中。”这个提醒相当实在,能极大减少后期投标环节的误判。

5.2 从“单次分析”升级为“持续追踪与复盘”

另一项重要升级是增加了“商机追踪”数据表。每一个推送过的商机,系统都会记录推送时间、状态(待跟进/已跟进/中标/失标)。每隔两周,我会更新一次状态,让大模型基于历史数据做一个复盘分析。

这个复盘分析相当有价值。它会统计某类采购单位在什么月份密集发布项目,中标价格与预算金额的平均折扣率,以及竞争对手在不同区域的战绩。这些数据对接下来制定投标策略是很好的参考依据。这套系统于是从“获取商机”的工具,进一步演变成了“经营分析”的工具,后者的价值远远大于前者。

5.3 从“单一机器人”升级为“多智能体协作”

到了后期,我还尝试了Coze扣子的多智能体模式。一个智能体负责“信息雷达”,专注于抓取和解析;一个智能体负责“投标顾问”,专注于匹配度和策略建议;还有一个智能体负责“报告撰写”,每周自动汇总所有数据生成周报。三个智能体之间通过工作流进行联动。

这样拆分的价值在于职责单一化,每个智能体的Prompt容易调优,输出也更稳定。而且某一个智能体升级优化时,不影响其他智能体的正常运行。由于Coze扣子对智能体的数量没有很高限制,这让我后续的扩展非常从容。

6. 常见问题速查表

故障现象可能原因解决方法
抓取内容乱码网页编码非UTF-8在节点参数中指定编码,或用Python代码解码
大模型字段格式不一提示词约束不明确限定JSON输出格式,并增加正则兜底清洗
API返回403触发频率限制或接口变动降低调用频率,检查官方文档,配置备用渠道
PDF解析不出文本扫描件缺少文本层增加人工智能OCR插件,在失败分支内兜底触发
推送无人关注时间点不合适错峰推送,紧急信息单独提醒
重复信息多次入库网页列表与详情页重复抓取用“招标编号”字段建立去重逻辑,在代码节点中使用集合判断

7. 写在最后的一些经验和心得

整套系统从构思到稳定运行,前后用了大概三周。我觉得最值得肯定的不是技术多高深,而是把Coze扣子这个平台的能力用出了“组合拳”的效果。定时触发器负责“提醒”,网页抓取插件负责“伸出手”,大模型负责“思考”,飞书机器人负责“张嘴说话”,知识库和文档插件负责“记忆和整理”。平台把这些基础能力都准备好了,而你的核心工作就是编排它们,至于编排的思路,恰恰是源自对业务流程本身的深刻理解。

如果你正准备搭建类似的系统,我的建议是不要一上来就追求大而全。先从“一个网站、一个关键词、一种推送方式”跑通最小闭环,再逐步增加数据源和智能逻辑。一口吃不成胖子,自动化系统也是一样。

就我个人来说,这套商机雷达上线之后,不仅让我省下了大量刷网页的时间,更重要的是改变了我获取信息的方式。以前是被动等待,看到了算运气,没看到就错过;现在变得有条理,所有商机信息按照价值进行了筛选,评估过的才呈现到面前,心里很踏实。有时候技术带来的不一定是“更快”,而是一种确定性,而确定性本身就蕴含着价值。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/17 13:19:28

Vivado DFX实现FPGA部分动态重配实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/17 13:17:26

Git SSH密钥配置、ed25519与多账号排查指南

周六下午,同事在群里甩过来一句"git push 一直报 Permission denied (publickey)",配了张终端截图。我扫了一眼就知道,又是 SSH 密钥没配明白。这类问题从我第一次自己搭 Git 仓库到现在,前前后后大概处理过几百次,踩过的坑能写满一整页笔记。git 中的 SSH 密钥的配置…

作者头像 李华
网站建设 2026/9/17 13:16:54

RoboMaster硬件基础讲义:从电源管理到CAN总线的完整入门指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/17 13:15:49

CELCT 2026:清洁能源与低碳技术国际会议投稿指南

1. 会议背景与核心价值第三届清洁能源与低碳技术国际学术会议(CELCT 2026)将于2026年5月1-3日在日本东京举行。作为清洁能源与低碳技术领域的重要学术交流平台,该会议已成功举办两届,吸引了全球范围内该领域顶尖学者、科研人员和产…

作者头像 李华
网站建设 2026/9/17 13:15:10

SiC MOSFET双脉冲测试核心测量参数与精度控制全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华