opc-onepager-converter
将学生学术作品(docx报告 + pptx演示文稿)智能转化为 OPC 2026 全球超级个体商业挑战赛的标准 OnePager 参赛提交文件(1页 PDF)。
When to use
- 用户提供学生作品的 zip 包(含 docx/pptx),需要转成 OPC 大赛 OnePager 模板
- 用户提到"OPC"、"OnePager"、"参赛模板"、"大赛提交"、"商业挑战赛"等关键词
- 用户需要将学术项目材料整理成 OPC 标准格式
- 用户有学生作品需要按 OPC 规范整理提交
OPC OnePager 模板结构
OPC 2026 OnePager(版本B Bounty赛道)包含以下字段:
头部信息:
- 项目名称
- 项目形态:创想家(Product)/ 智造家(Solution)
- 参赛者/团队名称
- 选择的Bounty赛题
- 联系方式(手机/邮箱)
- 成员人数
- 是否涉及具身智能/硬件
- 提交日期
8个核心模块:
| 编号 | 模块名称 | 是否Bounty专属 | 说明 |
|---|---|---|---|
| ① | 一句话介绍 | 否 | 用一句话说清解题方案 |
| ② | 对命题需求的理解 | 是 | 写出对命题方真实业务痛点的判断,不复述原文 |
| ③ | 目标使用对象/落地场景 | 否 | 方案服务的对象及具体落地场景 |
| ④ | AI应用逻辑 | 否 | AI/Agent/自动化工作流的具体作用,大赛核心考核维度 |
| ⑤ | 解决方案与当前形态 | 否 | 方案是什么,目前做到哪一步 |
| ⑥ | 解决路径与预期价值 | 是 | 实施路径、预期ROI与落地方式 |
| ⑦ | 团队与分工 | 否 | 成员背景及各自工作模块 |
| ⑧ | 当前阶段与下一步计划 | 否 | 项目现处阶段及下一步关键事项 |
命名规范: OPC2026_项目编号_项目名称_OnePager_提交日期
格式要求: 全文控制在1页PDF以内
Steps
Step 1: 接收并解析学生作品
- 用户提供学生作品的 zip 包路径
- 解压 zip 到临时目录(排除 __MACOSX 和 .DS_Store)
- 识别文件类型:
-.docx→ 学术报告/论文
-.pptx→ 演示文稿
- 按子目录分组(每个子目录代表一个项目/团队)
解析命令(使用 Node.js + mammoth + officeparser):
# 解压
mkdir -p /tmp/opc_work && unzip -o "<zip_path>" -d /tmp/opc_work/
# 查找有效文件
find /tmp/opc_work -type f \( -name "*.docx" -o -name "*.pptx" \) ! -path "*/__MACOSX/*" ! -name ".DS_Store"
Step 2: 提取文本内容
使用 Node.js 脚本提取 docx 和 pptx 的文本内容:
NODE_PATH=/Users/wangjilin/.workbuddy/binaries/node/workspace/node_modules /Users/wangjilin/.workbuddy/binaries/node/versions/22.12.0/bin/node @scripts/extract_content.js <input_dir> <output_json>
脚本会输出 JSON 格式的结构化内容,按项目分组。
如果 scripts/extract_content.js 不可用,则内联执行:
const mammoth = require("/Users/wangjilin/.workbuddy/binaries/node/workspace/node_modules/mammoth");
const { parseOffice } = require("/Users/wangjilin/.workbuddy/binaries/node/workspace/node_modules/officeparser");
Step 3: 智能映射到 OPC 模板
根据提取的学生材料,AI 需要智能地将内容映射到 OPC 模板的 8 个模块:
| 学生材料来源 | 可映射到 OPC 模块 |
|---|---|
| 报告标题/摘要 | ①一句话介绍 |
| 研究背景/问题陈述 | ②对命题需求的理解 |
| 研究对象/应用场景 | ③目标使用对象/落地场景 |
| 方法论/技术方案 | ④AI应用逻辑、⑤解决方案 |
| 研究发现/结论 | ⑤解决方案与当前形态 |
| 未来工作/改进建议 | ⑥解决路径与预期价值、⑧当前阶段 |
| PPT中的成员信息 | ⑦团队与分工 |
| 项目进展描述 | ⑧当前阶段与下一步计划 |
关键原则:
- ②和⑥是 Bounty 专属模块,需特别关注"命题方痛点"和"预期ROI"
- ④AI应用逻辑是大赛核心考核维度,需重点写实
- 学术作品中的研究方法可转化为AI/自动化工作流的描述
- 需将学术语言转化为商业语言("研究发现"→"方案价值","方法论"→"AI应用逻辑")
Step 4: 交互确认映射结果
向用户展示映射结果,并让用户补充以下无法从学生材料中直接提取的信息:
- 项目形态(创想家/智造家)
- 选择的Bounty赛题
- 联系方式
- 是否涉及具身智能/硬件
- 项目编号
使用 AskUserQuestion 工具询问用户。
Step 5: 生成 OnePager PDF
使用 reportlab 或 HTML-to-PDF 方式生成标准 1 页 PDF:
方案A:使用 HTML 模板 + 浏览器打印(推荐)
1. 读取 @templates/onepager_template.html 模板
2. 填入映射后的内容
3. 保存为 HTML 文件
4. 提示用户使用浏览器打开并打印为 PDF
方案B:使用 reportlab 直接生成 PDF
/Users/wangjilin/.workbuddy/binaries/python/envs/default/bin/python3 @scripts/generate_pdf.py <mapping_json> <output_pdf>
Step 6: 文件命名与输出
按大赛规范命名输出文件:
OPC2026_<项目编号>_<项目名称>_OnePager_<提交日期>.pdf
输出到用户指定目录或当前工作目录。
Pitfalls
- 编码问题:zip 解压后中文目录名可能乱码,用
find按.docx/.pptx扩展名定位文件,而非依赖目录名 - PDF 1页限制:内容必须精简,每个模块控制在3-5行以内,总共不超过800字
- 学术→商业转化:学生材料是学术风格,OPC要求商业语言。必须做风格转化,不能直接搬运
- Bounty专属模块:②和⑥只在Bounty赛道模板中出现,需根据用户确认的赛道类型决定是否填写
- AI应用逻辑不够突出:学术作品通常没有明确的"AI应用"描述,需要将研究方法/技术方案重新包装为AI应用逻辑
- 成员信息缺失:有些学生材料不含团队成员信息,需要用户手动补充
- lxml/charset-normalizer 兼容性:Python 的 python-docx 库依赖 lxml,在 macOS 沙箱环境可能出现代码签名问题。优先使用 Node.js 的 mammoth + officeparser 解析文件
- pptx 备注:PPT 的演讲者备注(Notes)通常包含更详细的叙述,优先提取作为内容来源
Verification
- 检查生成的 PDF 是否控制在 1 页以内
- 检查 8 个核心模块是否都已填写
- 检查头部信息是否完整(项目名称、团队名称、联系方式等)
- 检查文件命名是否符合规范:
OPC2026_项目编号_项目名称_OnePager_日期 - 检查 Bounty 专属模块(②⑥)内容是否体现了"命题方痛点"和"预期ROI"
- 检查 AI 应用逻辑(④)是否足够详细写实——这是大赛核心考核维度