ai-tutor
無料AI 初学者导师。抓取 AI 大厂最新博客(Anthropic/OpenAI/Cursor),提炼成结构化深度精读笔记,直接存入 CherryStudio 笔记目录。笔记包含术语百科、核心原理解析(含关键图表)、学习重点、知识关联和行业简报。调用方式:/ai-tutor(默认 Anthropic),/ai-tutor openai,/ai-tutor cursor。
日本語の概要は準備中です。原文の説明を表示しています。
投标书模板填充引擎。当用户明确要求「填模板」「写标书」「出标书」「生成投标文件」「标书填充」「套模板」「做标书」,或提供了脱敏 DOCX 模板需要填充时使用。扫描模板中的占位符和虚拟文本,提取招标信息、收集投标人数据、构建替换映射、执行填充,输出可直接提交的成品标书。
覆盖商务标+技术标+报价书全部章节。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
将脱敏 DOCX 模板填充为可提交的投标文件。覆盖设备采购类投标的商务标 + 技术标 + 报价书全部章节。
技能现在支持直接读取公司信息 DOCX 和招标 PDF/DOCX,自动提取并映射到模板:
公司信息.docx ──→ scripts/extract_company.py ──→ company.json(自动映射脱敏Key) 招标文件.pdf ──→ scripts/extract_bid.py ──→ 招标方结构化数据 ↓ scripts/bid_pipeline.py ──→ 合并+填充 ──→ 成品标书.docx
一键命令:
# 从公司DOCX + 招标PDF 直接生成标书
python scripts/bid_pipeline.py 招标文件.pdf --company-docx 公司信息.docx --templates-dir ./模板/
**输出文件夹:**生成的标书文件默认保存在招标文件同目录下的 成品标书/ 子文件夹中,文件命名格式:标书类型_项目名.docx。可通过 --output-dir 自定义。
分步使用:
# 步骤A:提取公司信息
python scripts/extract_company.py 公司信息.docx -o company.json
# 步骤B:提取招标信息
python scripts/extract_bid.py 招标文件.pdf --print
# 步骤C:管道生成
python scripts/bid_pipeline.py 招标文件.md --company-json company.json
首次使用:编辑
desensitize_map.json,将template_desensitize_map中的虚拟文本改为你模板中实际出现的脱敏名。也可通过--map指定自定义映射文件:python scripts/extract_company.py 公司信息.docx --map my_map.json
python-docx:pip install python-docxpython-docx,模板需按约定命名步骤1: 读取招标文件 → 提取招标方信息
步骤2: 扫描脱敏模板 → 发现占位符与脱敏文本
步骤3: 收集投标人信息 → 向用户询问必要数据
步骤4: 构建替换数据 → 映射数据到占位符
步骤5: 执行填充 → 调用 scripts/fill_py.py 或 scripts/fill_template.js
步骤6: 验证输出 → 检查遗漏占位符
读取招标文件(PDF 或 Markdown/Word),提取并保存为结构化数据:
| 提取项 | 常见模板占位符 | 用途 |
|---|---|---|
| 项目名称 | [项目名称]、_[项目名称]_ | 保证金表、页眉 |
| 招标编号 | _[招标编号]_、[招标编号] | 投标函、授权书、保证金表 |
| 招标方名称 | _[招标方名称]_、[招标方名称] | 投标函抬头 |
| 招标代理名称 | _[招标代理名称]_、[招标代理名称] | 投标函抬头、保证金表抬头 |
| 投标有效期天数 | 【 30 】 | 投标函第4款 |
| 投标保证金金额 | 脱敏金额文本 | 保证金表 |
| 付款方式/质保期/交货期 | — | 差异表 |
| 是否接受联合体/分包 | — | 投标函 |
| 需何种认证 | _[认证承诺]_ | 投标函第12款 |
| 标段名称 | (标段1名称) | 报价总表 |
如招标文件为 PDF,使用可用的 PDF 读取工具提取文本。如已有解析好的 Markdown,可直接用
scripts/bid_pipeline.py自动提取。
脱敏模板中需要替换的内容分三类:
模板中可能同时存在以下格式的占位符,全部需要替换:
| 格式 | 示例 |
|---|---|
_[xxx]_ 双下划线 | _[招标方名称]_、_[招标编号]_ |
[xxx] 纯方括号 | [招标方名称]、[项目名称] |
(xxx) 中文全角括号 | (标段1名称) |
操作:解包模板扫描所有占位符:
# PowerShell 解包并扫描
Add-Type -AssemblyName System.IO.Compression.FileSystem
$tmp = "$env:TEMP\scan_tmpl"
[System.IO.Compression.ZipFile]::ExtractToDirectory("模板.docx", $tmp)
Get-ChildItem -Recurse $tmp -Filter *.xml | ForEach-Object {
$txt = Get-Content $_.FullName -Raw
[regex]::Matches($txt, `'_[^_]+_`') | % { $_.Value }
[regex]::Matches($txt, `'\[[^\]]+\]`') | % { $_.Value }
[regex]::Matches($txt, `'([^)]+)`') | % { $_.Value }
} | Sort-Object -Unique
脱敏模板中的敏感信息已被替换为虚拟文本。常见模式:
XX重工股份有限公司XX重工金红萍沈小芳[公司地址]、江苏省 苏州市[开户银行名称]、[银行账号][电话已脱敏]、[手机已脱敏] 等【 随机金额万美元 ... 】操作:阅读 word/document.xml 和 word/header*.xml,找出上述模式的文本。
日期由引擎自动处理,不需要在 JSON 中配置。
处理顺序:阶段1先替换日期 → 阶段2再替换占位符。日期优先处理避免占位符值干扰日期匹配。
引擎通过三套正则覆盖所有日期变体,自动替换为当天实时日期:
| 正则 | 覆盖格式 | 示例 |
|---|---|---|
| 完整日期(含下划线/空格分隔) | 2014年7月29日、__2014__年__7__月__29__日 | |
| 有年份无月日数字 | 2014年 月 日、__2014__年_____月_____日 | |
| 无年份的月日占位 | 年 月 日 |
日期始终替换为当天(YYYY年MM月DD日),当日日期自动跳过。如招标文件有特定截止日期要求,在 pipeline 解析时会保留。
⚠️ 不要在 JSON 中添加日期碎片键(如
"2014"、"7月"、"29日"等),这会导致与正则替换冲突产生乱码。
汇总为表格,标注每项的数据来源:
| 原文(模板中) | 类型 | 需填入 | 来源 |
|---|---|---|---|
_[招标方名称]_ | 占位符 | 招标方全称 | 步骤1 |
[招标编号] | 占位符 | 招标编号 | 步骤1 |
XX重工股份有限公司 | 脱敏文本 | 投标人全称 | 步骤3 |
金红萍 | 脱敏文本 | 法人姓名 | 步骤3 |
【 30 】 | 脱敏文本 | 投标有效期 | 步骤1 |
【 随机金额... 】 | 脱敏文本 | 实际报价金额 | 步骤3 |
日期 2014年7月29日 | 自动替换 | 今天日期 | 引擎 |
向用户逐项询问。严禁编造:
1. 投标人全称(营业执照名称):
2. 投标人简称:
3. 统一社会信用代码:
4. 法定代表人姓名:
5. 授权代表姓名:
6. 注册地址、邮编:
7. 开户银行全称、账号:
8. 联系人姓名、电话、手机、传真:
9. 报价总价(大写+小写):
10. 近3年类似项目业绩:
11. 持有资质证书清单:
12. 设备主要技术参数:
报价金额必须由用户确认,绝不自行决定。
将步骤1-3 的数据映射为 JSON。
将下方保存为 basic.json,替换【】内容为实际数据:
{
"_[招标方名称]_": "【招标方全称】",
"[招标方名称]": "【招标方全称】",
"_[招标编号]_": "【招标编号】",
"[招标编号]": "【招标编号】",
"_[招标代理名称]_": "【招标代理全称】",
"[招标代理名称]": "【招标代理全称】",
"[项目名称]": "【项目全称】",
"(标段1名称)": "【标段1名称】",
"(标段2名称)": "【标段2名称】",
"(标段3名称)": "【标段3名称】",
"【 30 】": "【 90 】",
"XX重工股份有限公司": "【你的公司全称】",
"XX重工": "【你的公司简称】",
"金红萍": "【法定代表人】",
"沈小芳": "【授权代表】",
"[公司地址]": "【注册地址】",
"[开户银行名称]": "【开户银行全称】",
"[银行账号]": "【银行账号】",
"[电话已脱敏]": "【电话】",
"[手机已脱敏]": "【手机】",
"[传真已脱敏]": "【传真】",
"[邮编已脱敏]": "【邮编】",
"江苏省 苏州市": "【省份 城市】",
"174774": "【报价总价数字】",
"184968": "【报价总价数字】",
"壹拾叁万元整": "【报价总价大写】",
"元玖拾玖万贰仟伍佰叁拾陆元整": "【报价总价大写】",
"¥ 元": "¥ 【金额】 元",
"¥ 元": "¥ 【金额】 元",
"大写 ": "大写 【大写金额】"
}
> **金额空白占位符**:模板中金额可能显示为仅有空格无数字(如 `¥ 元`),需在 JSON 中精确匹配替换。扫描模板中所有 `¥` 或 `大写` 附近文本,确保 JSON 覆盖所有空白金额模式。
> **页眉页脚**:引擎会自动修补 python-docx 可能遗漏的非默认页眉类型(header1/2/3.xml 等),确保页眉中的占位符也被替换。
日期不需要配置,引擎自动将所有旧日期替换为当天实时日期。
{
"_[招标方名称]_": "华能国际电力股份有限公司",
"[招标方名称]": "华能国际电力股份有限公司",
"_[招标编号]_": "HNZB2026-00123",
"[招标编号]": "HNZB2026-00123",
"_[招标代理名称]_": "华能招标有限公司",
"[招标代理名称]": "华能招标有限公司",
"[项目名称]": "华能XX电厂锅炉设备采购",
"XX重工股份有限公司": "大连华锐重工集团股份有限公司",
"XX重工": "大连重工",
"金红萍": "张三",
"沈小芳": "李四",
"[公司地址]": "辽宁省大连市西岗区八一路169号",
"[开户银行名称]": "中国工商银行大连分行",
"[银行账号]": "3400200123456789012",
"[电话已脱敏]": "0411-86881234",
"[手机已脱敏]": "13901011234",
"[传真已脱敏]": "0411-86881235",
"[邮编已脱敏]": "116001",
"【 30 】": "【 90 】",
"【 】": "【 人民币捌仟伍佰陆拾万元整 ¥85,600,000.00 】",
"【 随机金额万美元 美元玖拾玖万贰仟伍佰叁拾陆元整 】": "【 人民币捌仟伍佰陆拾万元整 ¥85,600,000.00 】",
"江苏省 苏州市": "辽宁省 大连市",
"(标段1名称)": "锅炉本体",
"(标段2名称)": "辅机设备"
}
| 类型 | 规则 | 示例 |
|---|---|---|
| 大写金额 | 用户提供,不自行转换 | "捌佰伍拾陆万元整" |
| 认证承诺 | 根据招标文件要求撰写 | "我单位承诺在收到中标通知书后6个月内..." |
| 公司名称 | 全称+简称都要配 | 页眉可能只有简称 |
| 随机金额 | 整串文本匹配替换 | 不是占位符,是脱敏示例文本 |
| 日期 | 不要在JSON中配置,引擎自动处理 | — |
方式 A:Python(推荐)
python scripts/fill_py.py <模板.docx> <输出.docx> <替换数据.json>
两阶段引擎:先占位符替换,再整日期替换。自动报告遗漏占位符。
⚠️ 格式注意:当占位符跨多个 Word run 时,引擎会按比例将替换文本分配回各 run,保留原有加粗/斜体等格式属性。若替换文本长度与原占位符差异较大,可能导致文字在不同格式 run 间重新分配,但不会丢失格式定义。
页眉页脚处理:
python-docx只能访问默认页眉。引擎保存后会额外解包 DOCX,直接修补header*.xml和footer*.xml中遗漏的占位符和日期。
node scripts/fill_template.js <模板.docx> <输出.docx> <替换数据.json>
同两阶段策略,额外自动检查遗漏占位符。依赖 PowerShell 进行 ZIP 操作,不支持 macOS/Linux。
python scripts/bid_pipeline.py 招标文件.md [--company-json 公司数据.json] [--templates 模板1.docx 模板2.docx ...]
自动完成步骤1→4→5,从招标文件 Markdown 到成品标书。
成品文件默认输出到招标文件同目录下的 成品标书/ 子文件夹。文件命名格式: 标书类型_项目名称.docx。
*脱敏*.docx 文件--templates 显式指定模板列表--company-json 指定公司脱敏数据(格式同步骤4中的公司部分)填充完成后自动运行 scripts/verify_bid.py 进行二次核对:
# 自动(pipeline 内置)
python scripts/bid_pipeline.py 招标文件.pdf --company-docx 公司信息.docx
# → 填充完成后自动审核每个输出文件
# 手动
python scripts/verify_bid.py 成品标书.docx --company-docx 公司信息.docx
# 跳过审核
python scripts/bid_pipeline.py 招标文件.md --company-json company.json --no-verify
检查等级:
| 等级 | 检查项 | 示例 |
|---|---|---|
| P0 致命 | 遗漏占位符、日期未更新、公司名不一致 | [招标编号] 未替换 |
| P1 严重 | 关键字段为空、疑似乱码、金额不一致 | 投标报价字段空白 |
| P2 提示 | 空白方括号、签名区提醒、异常标点 | 【 】 未填充 |
手动补充检查:
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 占位符未被替换 | JSON 中的 key 与模板中的文本不完全一致 | 检查空格、全角/半角字符 |
| 日期没有被替换 | 日期格式不匹配正则 | 确保日期为"YYYY年MM月DD日"格式 |
scripts/fill_py.py 报 ModuleNotFoundError | 未安装 python-docx | pip install python-docx |
scripts/fill_template.js 报错 | 非 Windows 系统 | 改用 Python 方式 |
| 输出文件格式错乱 | 模板中的复杂格式 | 参见步骤5的格式警告 |
| 保证金表格金额为空 | 模板金额为空白占位符(¥ 元) | 在 JSON 中精确匹配该空白模式 |
| 页眉未更新 | 模板使用了非默认页眉类型 | 引擎已自动处理,无需手动干预 |
| 模板未找到 | 命名不符合约定 | 使用 --templates 显式指定 |
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
AI 初学者导师。抓取 AI 大厂最新博客(Anthropic/OpenAI/Cursor),提炼成结构化深度精读笔记,直接存入 CherryStudio 笔记目录。笔记包含术语百科、核心原理解析(含关键图表)、学习重点、知识关联和行业简报。调用方式:/ai-tutor(默认 Anthropic),/ai-tutor openai,/ai-tutor cursor。
日本語の概要は準備中です。原文の説明を表示しています。
标书文档分析与评估。当用户上传招标文件(.pdf/.docx/.doc/.xlsx)或明确要求「分析标书」「评估投标」「检查合规性」「标书评分」「废标风险」「技术方案评估」时使用。支持解析、评分计算、合规检查、废标风险识别,自动生成 Markdown 报告。版本 3.0
日本語の概要は準備中です。原文の説明を表示しています。
This skill should be used when the user asks to "优化简历", "resume optimization", "简历诊断", "tailor resume to JD", "改简历", "resume review", "简历优化助手", or when the user mentions "校招", "社招", "ATS", "JD匹配", "Word批注", shares a .docx resume path alongside a job description, or wants to match their resume to a specific job posting. Also triggers on "resume expert", "HR feedback", "interview prep with resume".
日本語の概要は準備中です。原文の説明を表示しています。
Full lifecycle expense reimbursement: single invoice intake and staging, batch aggregation to generate reimbursement drafts, approval workflow, ledger and dashboard. Trigger when user mentions reimbursement, expenses, invoices, travel reimbursement, approval workflow, or needs to organize / verify / approve expense records. Also applies when user needs to enter invoices, view reimbursement dashboards, ledgers, or compliance checks.
日本語の概要は準備中です。原文の説明を表示しています。
面试复盘 skill(求职者视角)。把一次已结束的面试,从「文字记录」沉淀成结构化复盘:逐题诊断 + 5 维评分 + 更优回答范本 + 下一场准备清单,最终产出一份飞书复盘文档。当用户说"面试复盘"、"复盘一下面试"、"刚面完 XX 帮我盘下"、"这场面试哪答崩了"、"面试问答记录帮我分析"时触发。区别于 resume-optimizer / cv-expert(面试前优化简历),本 skill 处理「面完之后」。
日本語の概要は準備中です。原文の説明を表示しています。
Discuss a community-edition product requirement with the user, draft a bilingual (Chinese + English) PRD for review, then — after explicit user approval — create the English-only issue on GitHub (<OWNER/REPO>). Use whenever the user wants to turn a requirement (from a Feishu doc, a meeting note, a customer ask, or a rough idea) into a GitHub issue. Triggers on phrases like "create requirement doc", "create a requirement", "put this requirement on GitHub", "create new feature issue", "draft an issue for...", or anytime the user describes a product feature/improvement they want tracked. The format is opinionated (Background / Goal / Spec / Verification / Related, NO implementation details, draft shown bilingually for human review, issue itself written in English only).
日本語の概要は準備中です。原文の説明を表示しています。