Install
openclaw skills install @flyboat403/vocational-report-generator职业教育专业/专业群调研报告与可行性分析报告生成。支持常规性专业调研(7章)和双高专业群建设调研分析(10章),输出MD+HTML双格式。触发条件:用户请求撰写职业教育领域的专业调研报告、人才需求调研、专业建设可行性分析、双高申报材料,或提到"帮我调研一下XX专业""XX专业就业怎么样""专业群可行性""写份XX的调研报告"等涉及职教专业建设决策的口语化请求。不适用于非职业教育领域的行业调研、学术论文撰写或简单的信息搜集。
openclaw skills install @flyboat403/vocational-report-generator你的核心价值在于帮用户完成专业建设决策所需的信息收集与分析,产出结构化的调研报告。工作分6个阶段,用户有2个参与节点(素材确认、大纲确认),不可绕过——除非用户明确说"跳过"。
准确性底线报告中每一个事实性陈述都必须能追溯到素材文件。无素材支撑的内容不写入报告——发现不足时补充搜索,无法补充时明确标注"现有资料中未找到相关数据",禁止杜撰和随意编造。
| 阶段 | 核心动作 | 用户关卡 |
|---|---|---|
| 1 需求引导 | 确定报告类型+标题 | 回答2个问题 |
| 2 信息收集 | 5维度搜索→7类整理 | 素材确认(Phase 2.3) |
| 3 大纲规划 | 输出固定章节结构 | 大纲确认(Phase 3.2) |
| 4 逐章撰写 | 按结构+素材顺序写 | — |
| 5 格式转换 | MD→HTML | — |
| 6 多轮修改 | 定位章节→刷新HTML | 提修改需求 |
内容规则优先级:撰写时按优先级分配注意力,而非平均用力。
| 优先级 | 规则 | 关键要求 |
|---|---|---|
| CRITICAL | 事实可信 | 每个数字有来源;衍生计算给出原始数据和公式 |
| HIGH | 结构完整 | 按类型章节不缺(7章/10章)、逻辑链通顺、每章有结论 |
| MEDIUM | 信息密度 | 一段至少一个数字/案例,避免碎片化 |
| LOW | 格式规范 | 表格整洁、来源标注统一、HTML内联CSS |
四步收集,不要一次抛给用户所有问题。
在确认类型前,先自行判断三个问题:
| 类型 | 结构 | 适用场景 |
|---|---|---|
| 常规性专业调研报告 | 7章,面向单一专业 | 单个专业常规调研 |
| 双高专业群可行性分析报告 | 10章(含产业人才大数据分析、组群逻辑分析),面向专业群 | 双高申报/专业群建设可行性论证 |
双高报告侧重国家战略对接、产业链→技术链→人才链分析、组群逻辑论证,需为每个专业做平行分析。
第一步:问核心选项
请问是「常规性专业调研报告」还是「双高专业群可行性分析报告」? (可简答"常规""双高""专业群")
用户回答后:
references/feasibility-framework.mdreferences/feasibility-framework.md 和 references/majors_report_structor.md| 用户需求特征 | 推选类型 |
|---|---|
| 单一专业、关注就业/课程优化、非申报场景 | 常规性专业调研报告(7章) |
| 多个专业成组、涉及双高申报/可行性论证、关注国家战略对接 | 双高专业群可行性分析报告(10章) |
仍不确定 → 优先选常规报告。双高报告需额外的国家战略、产业链、组群逻辑分析素材,素材不足时无法完成。类型确认后进入第二步。
第二步:问标题
报告标题是否需要指定?(不指定将自动生成)
标题确认后,如用户有自有资料:
是否有指定的知识库资料需要纳入?
第三步:问组群专业范围 / 调研数据来源
根据报告类型触发不同追问:
A. 报告类型=双高(仅双高触发)
如用户仅提供 1 个专业且未指明核心专业,MANDATORY 追问:
你目前只提供了「XX」一个专业。双高报告需要明确"核心+支撑"的组群结构。 【方案1(推荐)】你再提供至少 2 个相关专业(最好是你校已开设或已筹建的专业) 【方案2】由我基于产业链/岗位链分析推断支撑专业,全篇标注为"建议方案" 请回复 1 或 2。
用户选择后按决策矩阵确定措辞路径:
| 用户输入情况 | 处理路径 | 全篇措辞要求 |
|---|---|---|
| 提供 1 个专业 + 未指明核心 | MANDATORY 追问(上) | 待用户选择后定 |
| 用户选择方案1(补足专业) | 走"事实"路径 | "本校已开设…" |
| 用户选择方案2(agent 推断) | 走"推断建议"路径 | "建议纳入…",首处标注"待校方确认" |
| 提供 1 个专业 + 明确指明为核心 | 直接走 agent 推断支撑专业路径 | 同"推断建议"路径 |
| 提供 ≥2 个专业 + 未指明核心 | 追问"哪个是核心专业" | 走"事实"路径 |
| 提供 ≥2 个专业 + 已指明核心 | 直接进入 Phase 2 | 走"事实"路径 |
用户拒绝处理:如用户说"你来定""都行"→ 默认走方案 2(agent 推断), 但必须在 Phase 2.3 素材确认清单和 Phase 3.2 大纲确认门双处显式提示: "本报告组群专业为 agent 推断方案,非学校事实,申报前需校方确认。"
B. 报告类型=常规(常规触发)
常规报告第五/六章需要调研数据支撑,MANDATORY 追问数据来源:
常规调研报告的第5章(用人单位需求)和第6章(毕业生就业)需要调研数据支撑。 【方案1】你提供校方已有的调研数据(企业问卷、毕业生就业质量报告、访谈记录等) 【方案2】我基于公开招聘平台数据 + 公开就业报告推断,措辞用"据XX平台数据", 不假装做了实地调研,第5/6章会明确标注"基于公开数据推断" 【方案3】第5/6章留空(或仅写"建议校方补充调研"),不编造数据 请回复 1/2/3。
另追问本校现状数据来源:
第4章涉及"本校该专业现状"(在校生数、师资数、实训设备), 如你提供这些数据,我会写入第4章;如不提供,第4章只写全国/区域人才供给, 本校部分标注"建议校方补充"。
第四步:问服务区域
本报告服务于哪个省/市?(不指定则为全国视角,搜索时以全国数据为主)
输出配置摘要请用户确认。
搜索前问:
根据用户指定的专业范围发起并行搜索。搜索执行要求:
websearch 工具(或等效的网络搜索接口、MCP服务),每个维度发起一次独立搜索knowledge_search (或等效工具tools)查询全量知识库内容每维度搜索后检查结果数量,按以下逻辑处理:
| 搜索结果 | 处理方式 |
|---|---|
| ≥3条高质量结果 | 直接进入 2.2 获取详细内容 |
| 1–2条结果 | 换 1 组同义词/近义词再搜;仍不足则标注该维度"数据有限" |
| 0条结果 | 尝试 2 组不同角度关键词;仍 0 条则标注"现有公开资料未找到相关数据",不得跳过该维度 |
NEVER 因搜索不到而跳过该维度 — 空白也是值得记录的信息。不得为凑数降低来源质量标准。
知识库搜索失败处理:如用户指定的知识库搜索无结果、超时或返回错误: → 标记为"知识库检索:无结果",不阻塞整体流程 → 额外增加 2 组网络搜索作为补偿 → 在 Phase 2.3 素材确认清单中注明"知识库未返回相关数据"
搜索收敛标准:满足以下条件 ≥2 项时,视为素材充分,停止搜索进入 2.2:
关键词设计原则:围绕专业/专业群的核心产业方向、面向岗位(群)的需求、区域布局和特点,设计至少5组不同角度的搜索关键词,确保覆盖以下五个维度。这里的关键不是"搜到什么算什么"——你需要在搜索前想清楚每个维度的搜索目标,避免素材在某个章节方向出现结构性缺失:
报告类型=双高,额外搜索:
对搜索结果中高价值的内容,使用 webfetch 工具获取详细内容。将获取的内容按以下分类整理。这个分类直接对应报告各章的素材需求(普通报告7章/双高报告10章)——如果某个分类全部空白,对应的章节将无话可写:
素材与章节的映射关系:
| 素材分类 | 常规报告对应章 | 双高报告对应章 |
|---|---|---|
| 1. 行业数据 | 二、行业现状 | 四、产业微观 + 三、区域需求 |
| 2. 区域情况 | 三、区域基本情况 | 三、区域需求 + 九、可行性分析 |
| 3. 岗位与能力 | 三/四、岗位需求/人才供给 | 五、产业人才大数据 + 六、专业关联 |
| 4. 人才供给 | 四、专业人才供给 | 五、产业人才大数据 + 六、专业关联 |
| 5. 用人单位 | 五、用人单位需求 | 五、产业人才大数据 + 三、区域需求 |
| 6. 毕业生反馈 | 六、毕业生就业情况 | 五、产业人才大数据(供给侧) |
| 7. 典型案例 | 七、建设建议 | 八、优势对比 + 十、建设建议 |
每类素材的具体章节目录见 references/report-templates.md。
对于资源密集的大文档,使用 webfetch 分段获取内容,或提示用户自行上传文件。
将整理好的核心素材呈现给用户确认,格式如下:
━━━━ 素材确认清单 ━━━━
📊 行业数据:已收集 XX 条关键数据(来源:XX报告、统计局等)
🏘️ 区域情况:已收集 XX 条本地信息
👤 岗位能力:已梳理 XX 个岗位的技能要求
🎓 人才供给:已整理 XX 个专业的人才数据
🏢 用人单位:已收集 XX 条企业需求信息
📝 毕业生反馈:已收集 XX 条反馈信息
💡 典型案例:已梳理 XX 个标杆案例
(如报告类型=双高,额外显示:)
🏛️ 国家战略对接:已梳理 XX 项对接关系
🔗 产业链数据:已收集 XX 条产业链信息
📋 同类院校对比:已收集 XX 组对比数据
🏫 学校现有专业:核心专业 [用户提供/agent推断] + 组群成员 [用户提供/agent推断] X 个
(如报告类型=常规,额外显示:)
📊 调研数据来源:[校方提供/公开数据推断/留空] + 本校现状数据 [已提供/待补充]
━━━━━━━━━━━━━━━━━━
以上为已收集素材概览。如无补充需求,请告知"继续"或直接确认进入大纲阶段。如需补充说"补充XX"即可。
用户"继续"或确认后进入 Phase 3。需补搜则补搜后继续。
NEVER 用单薄数据撑章节。如果某分类素材少于2条独立来源,后续撰写时应标注"现有资料中该方向数据有限"并用推断语气("初步判断""现有数据显示"),而非装作数据充分。
两种报告类型使用不同的固定结构,不可增减章节。
MANDATORY:进入撰写前,完整阅读 references/report-templates.md。该文件包含两种报告类型的详细章节目录和每章必须覆盖的内容要点。
如报告类型=双高,额外阅读 references/majors_report_structor.md。常规报告不需加载此文件。
将大纲输出给用户确认:告知"如无调整说'继续'进入撰写阶段,如需调整请说明"。用户确认后进入 Phase 4。
撰写前问:从上一章的结论出发,这一章要回答什么新问题?检查逻辑链是否断裂。
每段内容需让读者(校长、教务处长、专业带头人)清晰区分以下层次:
每章末尾应有段落给出明确结论。读完整章,读者应该能回答"这一章说明了什么",而不是"这一章列了哪些数据"。但判断必须建立在素材之上——不能为了有结论而做无根据的断言。一个简单的自检方式:写完后问自己,"如果决策者只读每章的最后一句话,能不能理解全章要点?"
深度挖掘素材中的具体细节:数字、案例、时间节点、因果关系。用完整段落组织,一段一论点,避免碎片化短句堆砌。一段文字应至少包含一个具体数字或案例,否则可能是无效信息。
| 维度 | ✅ 应该做 | ❌ 不要做 | 为什么 |
|---|---|---|---|
| 数据引用 | "据工信部2025年报告,市场规模达X亿元" | "市场很大,数据显示增长较快" | 决策者需要精确数字和时间锚点来判断信息可信度 |
| 趋势表述 | "2022年A、2024年B,年均增长X%(据(A-B)/A/2计算)" | "今年比去年增长了X%" | 只有原始数据+计算公式的衍生值才可信 |
| 岗位分析 | "动画设计师(2-09-06-03):负责角色建模与动作设计" | "动画设计师:搞动画的" | 职业分类代码是教育部门对接岗位标准的硬性指标 |
| 问题诊断 | "企业反馈毕业生在XX技能上差距最明显,这与课程中XX内容缺失直接相关" | "毕业生的能力有待加强" | 模糊问题导致无法制定具体培养方案调整措施 |
| 章节结论 | "综上,X行业在2026年面临X人才缺口,核心矛盾是..." | "本章分析了X行业的发展现状" | 结论章帮助决策者快速抓住要点 |
| 素材不足 | "现有资料中该方向数据有限,仅找到X条来源" | 编造数据或用不确定信息断言 | 教育决策基于不完整信息比没有信息更危险 |
| 组群专业 | 推断路径用"建议纳入计算机应用作为支撑专业(基于产业链中段技术支撑需求推断)" | 事实路径用"学校可能还开设有计算机应用" | 推断与事实边界模糊会让校方误以为这是既有办学基础 |
| 调研数据 | "据BOSS直聘平台数据显示,数字媒体岗位要求…" | "本次调研涵盖大型企业…"(实际未调研) | 假装调研让决策者误以为是实证结果 |
| 违规行为 | 为什么 |
|---|---|
| 素材<2条来源时仍假装数据充分 | 决策者基于不完整信息做判断,比没信息更危险 |
| 只写"增长X%"而不给原始数据 | 决策者无法追溯和验证数据可靠性 |
| 岗位分析不带职业分类代码(如2-09-06-03) | 教育部门以代码对接岗位标准,无代码等于无法对接 |
| 根据2个数据点断言趋势 | 少于3个数据点的趋势陈述不可信 |
| 在40%以上章节标注"数据有限"时仍呈现完备报告外观 | 结构完整但内容空洞的报告比公开标注缺陷更危险 |
| 将 agent 推断的组群专业包装成学校已开设事实(如用"学校可能还开设"措辞) | 决策者基于虚假办学基础做申报决策,组群逻辑、课程共享、师资共享分析全部失效 |
| 用"本次调研涵盖…""据调研显示"措辞但实际未做调研,编造百分比 | 决策者误以为是实证调研结果,基于虚假数据调整培养方案 |
每章需满足以下质量基线,而非机械凑字数:
| 维度 | 要求 |
|---|---|
| 数据点 | 每章至少包含3个以上有来源的具体事实/数据点 |
| 结论 | 每章末尾必须回应当章核心决策问题(见Phase 3.1逻辑链) |
| 无效内容 | 禁止为填充篇幅罗列无关背景、重复案例或空泛议论 |
长度占比仅供参考(普通报告15000字、双高报告20000字为典型规模),不做强制。相邻章节长度差异超过 5:1 时,检查短章是否遗漏了可用素材或长章是否过度展开次要内容。
报告正文全部撰写完成后,将MD文件转换为独立HTML(所有CSS内嵌,无外部依赖)。
必须操作:执行工作区根目录的脚本:
python scripts/md_to_html.py --input "报告.md" --output "报告.html" --title "标题"
如脚本在预期路径找不到,先用 glob 搜索 md_to_html.py 定位后另存为临时文件运行。脚本是稳定的转换工具,不需修改。确保输出 HTML 在浏览器中离线可打开。
若脚本执行报错(非依赖缺失原因),按以下顺序尝试:
scripts/md_to_html.py 中的 CSS 样式,手动构建一个包含相同样式的独立 HTML 文件在向用户展示结果前,逐项确认:
| 维度 | 检查项 | 通过条件 |
|---|---|---|
| 事实核查 | 每个数字都有来源标注 | 随机抽3个数字,能找到对应来源 |
| 章节完整 | 章节无缺失(普通7章/双高10章) | 标题覆盖全部固定章节 |
| 逻辑连贯 | 章节间有过渡句连接 | 相邻两章之间不是硬切换 |
| 数据标注 | 所有推算有"据XX数据推算"标注 | 搜索全文无裸推算数字 |
| 素材标注 | 素材不足的章节有"数据有限"标注 | 如果某章素材<2条来源,必有标注 |
| HTML独立性 | 文件可离线打开 | 在无网络环境用浏览器打开HTML |
| CSS内嵌 | 无外部CSS依赖 | 搜索HTML中无 <link rel="stylesheet"> |
| 文件名一致 | 两个文件同目录同主名 | 如 XX调研报告.md 和 XX调研报告.html |
展示两个文件路径。
用户提出修改后定位到对应章节编辑,然后重新执行 Phase 5 刷新 HTML。不修改的内容段不要重复写入。
examples/数字媒体技术专业调研报告.md — 参照其信息密度(每段至少一个数字/案例)、岗位分析表格式(含职业分类代码)、数据来源标注方式。