结构化答题技巧·每日一练
适用场景
用户做"公务员结构化面试·答题技巧"系列小红书爆款图文帖子(如"应急应变别平均用力""综合分析别停在现象层"),需要:
- 出一个答题技巧(上岸过来人 + 考官视角,有观点、可操作、接地气)
- 按小红书节奏打磨(标题钩子/短句/emoji/普通 vs 高分对照/避坑提醒/话题标签)
- 自动套入固定 docx 模板(18 段,含配图 + 引流段)
- 保留模板所有版式(封面文本框、蓝色标题、引用块、尾注样式、引流段样式)
- 从题库索引选题,已完成技巧不重复推
内容骨架(每期固定 14 字段)
内容顺序(样式细节以「模板铁律」段位表为唯一契约,不在此重复):
封面钩子标题(≤20 字)-> 适用题型 -> 技巧一句话(破题)-> 思路 3 步
-> "怎么答?"-> 普通答法 vs 高分答法(同题对照)+ 各自点评
-> 避坑提醒 -> 一句话总结 -> 话题标签
-> [固定引流段:模板自带,引擎不动]
字段职责(内容层,2026-09-06 修订)
14 个字段、18 段结构、字体、配图、引流段等模板契约一律不动,只调整各字段的内容职责。面向"懂框架但答得空"的读者,每期交付一个能马上练、能迁移到其他题目的小技巧:
| 字段 | 内容职责 |
|---|---|
| tip_title | 候选句式(2026-09-08 起):内部产出痛点式/具体改法式/原栏目式(考官想听的:xxx)3 个候选,比较后只输出 1 个(候选记入 draft_meta.title_candidates);≤20 字(引擎硬上限),点出具体卡点或收益;正文必须兑现标题承诺 |
| question_type + tip_intro | 交代什么题境下会遇到这个问题,直接点出本期方法 |
| step1-3 | 把方法教清楚,每步含一个判断、动作或检查方法;步数服从原方法,不为凑三步硬造 |
| case_normal / case_high | 同题、同身份、同条件(共同题境记入 draft_meta.shared_context),聚焦一个关键改动;改进版不偷加题干事实、不靠堆字取胜(去前缀后 ≤1.5 倍,程序按 1.5 拦) |
| case_normal_note / case_high_note | 指出哪个动作、判断或表达变了、为什么有效;每条批评对应普通版一句原话:区分"没有说明X"与"说错了X",原话没承诺就不能批"随口保证";不写"考官内心"式推测、不做绝对化断言 |
| pitfalls | 写适用边界、常见误用和纠正动作,不只列禁句 |
| tip_takeaway | 一道新场景微练习(正文没出现过的场景 + 2-3 个自检要素,含一个适用判断);"自检上次的答案"类回顾式和纯反问不合格 |
| hashtags | 数量契约不变(5-8 个),只用与本期内容相关的标签 |
一期一技巧(硬规则,含试点修订 2026-09-06)
- 每期只教一个主要技巧:标题、破题、对照、练习都围绕它。原方法里的其余知识点最多一句带过作背景。
- 聚焦必须带边界声明:破题点明"这期只教X";与所教技巧同题的题骨前提(如应急的"安全永远第一步"、调研的"先摸底数")保留一句作背景,防止读者学到残缺答题骨架。
- 忠实度口径:本期所教技巧在其边界内不丢关键条件(含教师注的适用条件,如"是否处理由分管领导决定");未覆盖的要点宁可一句点名不展开,也不得教错。
- 三个段位不等于三步方法:原方法只有两点时,step1/step2 讲这两点,step3 用于应用或检查,不得凭空造第三点;原方法有四点及以上时,按原逻辑分组呈现进三步,不得删掉关键条件。
- 吸睛来自具体问题(疑问、痛点、明确收益,画面感强的比喻同样可用),不强制反转句式、数字和金句;金句不做绝对化断言("第一句话定成败"类全称判断不写);不写无依据的提分承诺。
- 模拟例子标为示范,不冒充作者经历或真实考场反馈。
触发条件
用户说"出一期答题技巧" / "技巧每日一练" / "答题思路" / "结构化答题技巧"或类似表述。
Pre-flight 检查(缺一不开工)
① 项目根核实
项目根 = <项目根> 占位符,指 Obsidian vault AI工作区 下的 01-Projects/自媒体内容库-持续项目/结构化(本机实际路径以用户环境为准,运行前替换)。
核实项目根存在模板与索引:
ls "<项目根>/desktop-attachments/3 结构化答题技巧-帖子内容编辑模板.docx" \
"<项目根>/scripts/tips_index.json" && echo "✅ 路径正确" || echo "❌ 路径错,先确认"
引擎不依赖 cwd,一律用
--project-root "<项目根>"显式传入;项目根只读数据与模板,执行引擎永远是 skill 内脚本。
② 双脚本分流
工作区里如果同时有 fill_structured_post.py(答一道 17 段)和 fill_zhankai_post.py(展开说说 48 段),那是其他独立脚本,别混用。本 skill 只用自己目录下的 fill_tips_post.py + 18 段模板。字段映射不同,强混用会炸段位。
③ Python 环境核实
python3 -c "import docx; print('docx', docx.__version__)" # 期望 1.2.0
【命令陷阱】:本机默认 python 命令不存在,一律用 python3 / pip3(含所有文档示例与手工操作)。
【包名陷阱】:pip install docx 会装同名垃圾包。必须 pip install python-docx。
文件清单
| 位置 | 文件 | 用途 |
|---|---|---|
| skill | scripts/fill_tips_post.py |
唯一执行引擎(原子替换) |
| skill | scripts/upload_to_ima.js |
IMA 上传(可选,用户明确要求才跑) |
| skill | scripts/test_fill_tips_post.py |
回归测试(改引擎/模板后必跑,冻结) |
| skill | scripts/content_rules.py |
内容自检器(进 pending 前必跑,--meta 必填;错链/标题兑现/对照条件/点评有据/步数/边界/审稿结论门禁) |
| skill | scripts/test_content_rules.py |
内容自检器自测(改检查器后必跑,33 用例含 7 类审计反例) |
| skill | scripts/test-prompts.json |
冻结测试 prompt(3 个场景) |
| skill | references/content-strategy.md |
内容策略(步骤 2/2.5 读取) |
| 项目根 | desktop-attachments/3 结构化答题技巧-帖子内容编辑模板.docx |
模板(覆盖目标) |
| 项目根 | scripts/tips_index.json |
技巧索引(38 条,选题池) |
| 项目根 | scripts/progress_tips.json |
已完成记录(选题过滤,跑完更新) |
| 项目根 | scripts/pending_tips.json |
中间文件(成功后引擎自动删除) |
| 项目根 | 模板文件/3 结构化答题技巧-帖子内容编辑模板.docx |
源模板副本(基线备份) |
| 项目根 | scripts/_snapshots_tips/ |
自动快照(最多 10 个) |
事实源约定:选题与进度一律读项目根 scripts/ 下的 tips_index.json 与 progress_tips.json;skill 内同名文件仅为出厂参考,不作为事实源。
工作流(6 步)
步骤 1:查索引选题(一次给 2-3 个候选)
从项目根 scripts/tips_index.json 的 tips 里挑未出现在 progress_tips.json done_ids 的技巧:
- 用户指定题型 -> 过滤该题型;未指定 -> 按题型轮转(综合分析->应急应变->人际关系->组织计划->自我认知->言语表达->通用)
- 一次选出 2-3 个候选,用弹窗选择题让用户挑(选项即候选 + "都不要,换一批"),不要让用户打字
- 索引外补充热点技巧时须在 JSON 里
added:true标记 - 候选必须能说清三件事:读者卡在哪里、这期教会什么、本地依据是什么(src 文件 + 方法论);说不清的不进候选
- 检查索引
_meta.dedup_notes:换标题重复讲同一技巧的条目按记录的分工出题,不重复已发布角度 - 找不到支持原文的条目(src 错链/原文已更新未同步)不进候选,先修索引
步骤 1.5:写前读源(必做,缺此不动笔)
定题后、写稿前,必须回读原文,不能仅凭索引摘要写稿(索引只用于选题定位,摘要可能滞后于原文更新):
- 方法论:读
02-Areas/公考面试结构化培训/02_答题方法与框架/各题型方法论/<题型>_方法论提炼.md(按 tips[].types[0] 映射) - 课堂讲义:读讲义
公考面试结构化备考讲义.md中该题型章节的对应小节(方法论要点 + 例题) - 题库案例:读 src 指向的题库原文全文(题干、思路大纲、答题逐字稿)
- 教师注:题库原文末尾的教师注是适用条件,保留进本期"避坑/边界",不得省略
内部记录四要素(写进草稿工作区,不进模板):原方法是什么、适用条件、关键动作、出处(文件+小节)。资料有冲突时回查具体原文裁决,不自行拼出新口诀;不修改本地教学原文。
读源与审稿记录必填(2026-09-08 起):四要素连同来源摘录(quote_excerpts)、共同题境(shared_context)、关键改动(key_change)、可照做示范(actionable_demo)、练习判据(exercise_criteria)、标题候选(title_candidates)写入 <项目根>/scripts/_draft_tips/draft_meta.json,并记录 skill_version。字段表见 references/content-strategy.md「读源与审稿记录」。缺这份记录,content_rules.py 拒绝放行(R0/R14)。
步骤 2:写技巧内容(14 个字段)
内容规范(详见 references/content-strategy.md,以 2026-09-06 修订版为准):
- 标题 ≤20 字(引擎硬上限),从痛点式/具体改法式/原栏目式 3 个候选中比较选出 1 个(候选与理由记入 draft_meta.title_candidates);正文必须兑现标题承诺
- 一期只教一个主要技巧,其余知识最多一句背景带过
- 单段 ≤4 行,行内 ≤30 字,短句 8-20 字为主
- emoji 每段 ≤2 个,限调色板
❗️ 🙅 ❌ ✅ 📌 💡 ⏰ 🗣 - 普通 vs 高分对照:同题、同身份、同条件(共同题境写入 shared_context),聚焦一个关键改动;普通版是可信的常见答法,改进版不偷加题干事实、不靠堆字取胜(去前缀后 ≤1.5 倍)
- 点评必须有据:每条批评对应普通版一句原话;区分"没有说明X"与"说错了X";点评不引入普通版没有的指控;绝对化断言("群众等的不是电"类)改机制解释
- 方法教到能照做:每期至少一个抽象要点展开为能直接问出口的具体问句,并说明答案如何影响下一步;案例中的推测标"待核实方向"
- 避坑提醒写适用边界、常见误用和纠正动作(教师注里的权限/安全提示必须吸收进来)
- 一句话总结是一道新场景微练习(正文没出现过的场景 + 2-3 个自检要素,含一个适用判断)
- 话题标签 5-8 个,固定
#公考面试 #结构化面试 #上岸,其余按题型补,只用相关标签 - 数字必须可核验或有出处,无出处的统计一律不写;"某调查/某报告"式模糊归因不写;模拟例子标"示范",不写"考官内心""听了就加分"等推测;真实不确定处保留条件词("可能""若"),推测说成确定事实才是 AI 味
步骤 2.5:去 AI 味儿(必跑)
写完初稿 -> 必跑 human-writing -> 才能进 pending_tips.json。硬步骤,不可跳过。
重点扫:公考 AI 高危词(体现/彰显/凸显/深入推进/全面落实)、三段式凑数、破折号清零、否定式排比最多 1 处、模糊归因、万能收束。
边界(冲突处理):human-writing 的"正文严禁冒号"等通用红线不适用于本 skill 的固定格式。各字段前缀("适用题型:""第一步:""普通答法:""点评:""避坑提醒:")是模板契约的一部分,human-writing 只改冒号后的正文措辞;不得动前缀、不得删改 hashtag 内容与数量、不得给标签行加标点、不得动 emoji 摆位。
优先路径:触发 human-writing skill 对 14 个字段逐个/合并重写。降级:调用失败时按 content-strategy.md「去 AI 化红线」手动改写,并在工作目录写 human-writing_fallback.txt 标注。
去 AI 味后回核原方法(必做):改写完成后对照步骤 1.5 的读源记录再过一遍——术语、条件和方法含义不能在改写中丢失或走样;纠正空泛表达,但不把正常公考用语一律当禁词误杀;关键条件缺失就补回,宁可少"顺"一点也要保方法完整。
内容自检(进 pending 前必跑,--meta 必填):
python3 <本skill目录>/scripts/content_rules.py --pending <pending路径> --meta <draft_meta路径>
退出码 0 才进独立审稿;非 0 按报错改内容。覆盖:标题兑现、对照条件一致、点评有据、偷加事实、两点/多点方法、适用边界、模糊归因、无虚构推测、总结是新场景练习、读源与审稿记录完整性。
独立审稿(程序自检之外,必做,2026-09-08 起):content_rules.py 认词语线索,不能替代语义审查。换一个不带写稿记忆的视角(或评审代理)核五项:①标题兑现 ②点评依据(批评对应普通版原话、无偷换身份/条件)③方法含义(边界内关键条件未丢、抽象要点至少一个能照做)④边界(适用/不适用/教师注齐)⑤练习可作答(新场景所需知识正文已讲清)。审稿结论写入 draft_meta 的 review_conclusion;没有"通过"不得标记内容合格,发现问题回改重审。
🔴 CHECKPOINT · STOP -> 把前后对比关键改写点(3-5 处)展示给用户,弹窗确认("够自然,继续" / "还是像AI,再调")。
步骤 3:写 pending_tips.json(恰好 14 个顶层 key)
写入 <项目根>/scripts/pending_tips.json(UTF-8 无 BOM)。schema(全部非空字符串,缺一/多一都会被引擎拒绝):
{
"tip_title": "应急应变别再平均用力,先排序再出招",
"question_type": "适用题型:应急应变题",
"tip_intro": "破题角度:考官看的是轻重缓急的排序能力,不是面面俱到。",
"step1": "第一步:先定优先级,把最紧急、最伤人的事排第一。",
"step2": "第二步:止损优先,先把事态控制住,再谈调查和追责。",
"step3": "第三步:处置加善后闭环,给结果也给交代。",
"case_normal": "普通答法:遇到这种情况,我会第一时间安抚群众情绪,请大家耐心等待,同时上报领导,争取尽快处理好。",
"case_normal_note": "点评:全程只有\"耐心等待\"和\"尽快处理\"两句空话。没有说哪些信息已确认、下一次什么时候有消息,群众只能一直等。",
"case_high": "高分答法:示范。同样的事,我会广播三句:已确认的是大厅暂停办理、抢修已在进行;原因和恢复时间尚未查明;比如 30 分钟后再通报一次进展。",
"case_high_note": "点评:改动只有一处:把话拆成已确认、未知、下一次通报节点三段。从\"等消息\"变成\"到点有消息\",信任有了抓手。",
"pitfalls_lead": "避坑提醒:",
"pitfalls": "别把\"不承诺\"做成\"不回应\",已确认信息一句不能少;安全风险没排完先排险,再谈广播;若供电部门已确认恢复时间,就直接告知,不必故意含糊。",
"tip_takeaway": "练习:换成汛期断网场景,写出你广播的第一段话,自查三样:已确认、未知、通报节点是不是各说各的、没混在一起?",
"hashtags": "#公考面试 #结构化面试 #应急应变 #答题技巧 #上岸"
}
示例已经按 v2.2.0 规则写:点评批评的是普通版原话里真实缺失的东西("没有说…",不是"说错了");高分版的"30 分钟"带"比如"示例标记;总结是新场景练习;避坑保留条件词"若"。draft_meta 里 review_conclusion 未写"通过"前,这份 JSON 不许进步骤 4。
【JSON 引号陷阱】:字符串内部只用中文双引号""或转义符 \",不要 ASCII 双引号嵌套。推荐用 Python json.dump 生成。
步骤 4:跑引擎(唯一执行入口)
python3 <本skill目录>/scripts/fill_tips_post.py --project-root "<项目根>"
退出码契约:
| 退出码 | 含义 | 处理 |
|---|---|---|
| 0 | 成功,模板已原子替换,pending 已清理 | 进步骤 5 |
| 1 | 环境错误(pending 缺失 / 模板缺失或损坏) | 修环境后重跑,模板未被动过 |
| 2 | pending JSON 无效(语法 / UTF-8 / 缺字段 / 多字段 / 标题超 20 字) | 按报错改 JSON 后重跑 |
| 3 | 写入后验证失败(结构 / 内容 / 样式指纹漂移) | 模板字节不变,按 errors 改内容后重跑 |
| 4 | 模板已替换但 pending 清理失败 | 模板已自动回滚为写入前字节,pending 保留;修 scripts 目录权限后重跑即可 |
安全保证:引擎先写临时文件、验证(结构 + 内容 + 逐段样式指纹 pPr/rPr 零漂移)通过后才原子替换模板;任何失败(含退出码 4 的清理失败,自动回滚)模板字节不变,pending 保留排查。写入前自动生成快照。
步骤 5:更新完成记录 + 渲染检查 + 报告
- 把本次技巧 id 追加进项目根
scripts/progress_tips.json的 done_ids - 渲染检查:按约 375 像素手机宽度检查无截断/重叠、对照与点评关系清楚。本机无 Word/WPS 时 textutil + 无头 Chrome 属近似渲染,只能查内容顺序与溢出,结论如实记入 draft_meta 的
render_check("近似通过"或"发布端通过");只有近似结果时,发布前在发布端复核才算闭环。过密时删重复解释,不删关键条件 - 报告:技巧标题 + 题型 / docx 路径 / 引擎验证结果(exit 0 = 段数 18 / 图 4 / 样式 / 14 字段全命中)/ 去 AI 味儿自评 / 审稿结论与渲染结论
- 发布后第 7 天:把阅读数、收藏数记入项目根
scripts/tips_metrics.json(口径:收藏率 = 收藏 ÷ 阅读,同时看阅读量;先积累同版本基线再比较,模板见该文件)
步骤 6:上传 IMA(可选,仅用户明确要求时执行)
默认不做。只有用户明确说"同步/上传 IMA"才执行:
- 构造标题
{技巧关键词}_{YYYYMMDD_HHMMSS},把步骤 3 内容格式化为 Markdown(H1 为标题) - 写临时 md 到系统临时目录,调用:
node <本skill目录>/scripts/upload_to_ima.js "<临时md路径>" "<笔记标题>" [--fresh]
- 退出码:0 = 笔记 + 知识库同步成功(含幂等复用;文件夹缺失降级库根目录仍为 0);1 = 用法/文件错;2 = 依赖缺失或笔记创建失败;3 = 笔记成功但知识库同步失败(note_id 已给出,报告中如实标注)
- 幂等保证(防重复建笔记):脚本在 md 同目录维护
.ima_upload_state.json。笔记创建成功立即落盘,此后任何失败重试都复用 note_id 续做,绝不重复创建;已完全成功的同 md 同标题重跑 = 零 API 调用直接成功(JSON 含"reused": true)。确要重建新笔记时加--fresh。失败重试无需等待,直接重跑同一条命令即可。
模板铁律(唯一结构契约)
字体铁律:模板字体已统一为通用字体,不要引入云字体或内嵌字体文件。段位/样式/脚本行为全部以此表为准:
| 段位 | 内容 | 引擎行为 |
|---|---|---|
| 段[0] | 封面文本框("结构化答题技巧:"前缀 + 大标题,2 镜像) | 替换标题,前缀 2 处同步 |
| 段[1] | "答题思路"蓝色标题(Heading 2) | 不动 |
| 段[2] | 适用题型(无项目符号) | 替换 |
| 段[3] | 技巧一句话(破题,无项目符号,首行缩进 2 字符,#85120F) | 替换 |
| 段[4-6] | 思路步骤 3 步(圆点项目符号) | 替换 |
| 段[7] | "怎么答?"蓝色标题(Heading 2,无 pageBreakBefore) | 不动 |
| 段[8] | 普通答法 | 替换 + 段首自动 🙅♂️ |
| 段[9] | 普通答法点评(Markdown 引用块 + 浅灰底 #F2F2F2) | 替换 |
| 段[10] | 高分答法 | 替换 + 段首自动 👍 |
| 段[11] | 高分答法点评(同段[9]) | 替换 |
| 段[12] | "避坑提醒:"蓝色标题 | 替换 |
| 段[13] | 避坑内容(加粗下划线) | 替换 |
| 段[14] | 一句话总结(加粗下划线) | 替换 |
| 段[15] | 话题标签(endnote text,12pt 小字) | 替换 |
| 段[16] | 引流段(endnote text + 橙色加粗居中) | 不动(保留原文) |
| 段[17] | 末尾装饰图 | 不动 |
失败处理
- 不要慌:引擎任何失败都不会写坏模板(原子替换 + 失败字节不变)
- 看退出码和
[ERROR]/[FAIL]信息定位(字段名、上限、段位都点名) - pending 在失败时保留,改完直接重跑
- 需要人工回退时:从
<项目根>/scripts/_snapshots_tips/复制最新 snapshot 覆盖回模板路径
回归测试(改引擎/模板/测试后必跑)
python3 <本skill目录>/scripts/test_fill_tips_post.py
- 测 skill 内引擎,真实项目通过
TIPS_TEST_PROJECT_ROOT环境变量注入(默认为 Pre-flight ① 的路径),全程只写临时副本,结束校验真实模板 sha256 不变 - 18 个用例:黄金路径全契约+样式指纹零漂移 / 缺字段 / 多字段 / 超长标题 / 坏 JSON / 模板损坏 / 无 pending / 模板缺失 / env 传根 / 样式损坏拦截 / pending 清理失败回滚(exit 4) / IMA 用法错误 / IMA 文件缺失 / IMA 依赖缺失 / IMA 笔记失败 / IMA KB 失败重试不重复建笔记 / IMA 成功幂等复用 / IMA --fresh 强制重建
- 沙箱纪律:所有 IMA 用例强制
IMA_API_PATH指向本地 fake stub(_fake_ima_api.cjs),绝无真实网络调用、绝不创建真实笔记;筛选 0 用例即失败退出(exit 1),不允许假绿
内容自检器另有一套独立自测(与引擎测试互补,冻结测试不受影响):
python3 <本skill目录>/scripts/test_content_rules.py
- 33 个用例:索引错链 / 来源缺失 / 标题未兑现 / 对照堆字 / 1.5× 边界 / 对照偷换条件 / 点评凭空指控(停电反例) / "没说明 vs 说错"正例 / 点评无锚点 / 偷加数字事实 / 两点方法造第三步 / 四点方法丢关键条件 / 五点方法漏教 / 遗漏适用边界 / 虚构推测与无出处统计 / 模糊归因(某调查) / 来源不符 / 总结不是练习 / 空洞反问 / 回顾式练习 / 正常公考用语与条件词不误杀 / 读源记录缺失(R0) / 审稿记录不全与审稿未通过(R14) / 标题候选句式放行
test-prompts.json已冻结(TP1 指定题型 / TP2 轮转 / TP3 失败边界),修改需开新版本
脚本行为要点(避坑)
- 不预设 run[0] 是文本 run:找"第一个纯文本 run"写入,图片 run 完全不动
- 封面改 2 处:drawing 镜像 + VML fallback 都要同步
- emoji 由引擎自动加:段[8] 🙅♂️、段[10] 👍 写在 EMOJI_PREFIX 里,别写进 JSON
- 段[3] 首行缩进 2 字符(firstLineChars=200),段[9]/[11] 浅灰底色不动 shd
- 看 docx 段数:
python3 -c "from docx import Document; print(len(Document('路径').paragraphs))" - 看文本框/图片/分页:分别搜
<w:txbxContent>/<w:drawing>/<w:pageBreakBefore> - 写 json 用 Python
json.dump,避免手写引号嵌套错 - 样式指纹零漂移:引擎写入前后逐段对比 pPr/rPr XML(含封面文本框内段落),任何字体/字号/颜色/对齐变化即验证失败(exit 3),杜绝"文本对了样式坏了"的假绿