@taloswork/ose-shared 0.1.11 → 0.1.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -3
- package/skills/document/SKILL.md +135 -219
- package/skills/document/art-directions/base.css +27 -2
- package/skills/document/art-directions/cinematic-depth.css +3 -1
- package/skills/document/art-directions/collage-paper.css +5 -1
- package/skills/document/art-directions/editorial-cut.css +5 -1
- package/skills/document/art-directions/geometric-pop.css +6 -0
- package/skills/document/art-directions/gradient-mesh.css +5 -1
- package/skills/document/art-directions/illustrated-doodle.css +5 -0
- package/skills/document/art-directions/luxury-ornament.css +4 -1
- package/skills/document/art-directions/maximalist-blocks.css +6 -0
- package/skills/document/art-directions/technical-grid.css +4 -0
- package/skills/document/assets/fonts/fonts.json +2 -2
- package/skills/document/assets/pdf-fonts/NotoSansSC-PDF-Bold.ttf +0 -0
- package/skills/document/assets/pdf-fonts/NotoSansSC-PDF-Regular.ttf +0 -0
- package/skills/document/assets/pdf-fonts/OFL.txt +93 -0
- package/skills/document/assets/pdf-fonts/README.md +35 -0
- package/skills/document/assets/tessdata/LICENSE-Apache-2.0.txt +202 -0
- package/skills/document/assets/tessdata/README.md +21 -0
- package/skills/document/assets/tessdata/chi_sim.traineddata.gz +0 -0
- package/skills/document/assets/tessdata/eng.traineddata.gz +0 -0
- package/skills/document/bin/deck-build.cjs +12563 -83
- package/skills/document/bin/deck-chart.cjs +771 -0
- package/skills/document/bin/deck-plan.cjs +12414 -0
- package/skills/document/bin/deck-qa.cjs +1075 -266
- package/skills/document/bin/deck-scenario.cjs +1363 -0
- package/skills/document/bin/deck-styles.cjs +1604 -0
- package/skills/document/bin/doc-convert.cjs +308 -292
- package/skills/document/bin/doc-fill.cjs +73264 -192
- package/skills/document/bin/doc-gen.cjs +2491 -312
- package/skills/document/bin/doc-run.cjs +162 -24
- package/skills/document/bin/doc-scan.cjs +13 -0
- package/skills/document/bin/doc-text.cjs +13 -0
- package/skills/document/bin/doc-validate.cjs +838 -68
- package/skills/document/bin/doc-xml.cjs +9 -5
- package/skills/document/bin/docx-annotate.cjs +95 -19
- package/skills/document/bin/docx-defaults.cjs +9907 -0
- package/skills/document/bin/fontkit.cjs +1 -0
- package/skills/document/bin/html2pptx.cjs +36622 -31394
- package/skills/document/bin/ocr-worker.cjs +1 -0
- package/skills/document/bin/ocr.cjs +131 -40
- package/skills/document/bin/pdf-form.cjs +682 -177
- package/skills/document/bin/pdf-images.cjs +13 -0
- package/skills/document/bin/pdf-ops.cjs +642 -199
- package/skills/document/bin/pdf-render.cjs +19 -3
- package/skills/document/bin/pdf-tables.cjs +13 -0
- package/skills/document/bin/pptx-clone.cjs +3 -3
- package/skills/document/bin/pptx-notes.cjs +10038 -0
- package/skills/document/bin/pptx-slide.cjs +3 -3
- package/skills/document/bin/pptx-tokenize.cjs +19 -4
- package/skills/document/bin/template-skin.cjs +10910 -0
- package/skills/document/bin/xlsx-query.cjs +192 -61
- package/skills/document/bin-reference.md +61 -33
- package/skills/document/catalog.json +33 -32
- package/skills/document/content-pipeline.md +179 -257
- package/skills/document/deck-design.md +378 -638
- package/skills/document/generated-visuals.md +99 -0
- package/skills/document/layouts/MAINTAINERS.md +33 -0
- package/skills/document/layouts/README.md +49 -36
- package/skills/document/layouts/big-stat.tpl +1 -1
- package/skills/document/layouts/capacity.json +1 -0
- package/skills/document/layouts/cards-3.tpl +1 -1
- package/skills/document/layouts/chart-full.tpl +1 -1
- package/skills/document/layouts/chart-kpi.tpl +1 -1
- package/skills/document/layouts/comparison.tpl +1 -1
- package/skills/document/layouts/data-table.tpl +1 -1
- package/skills/document/layouts/funnel.tpl +1 -1
- package/skills/document/layouts/gantt.tpl +1 -1
- package/skills/document/layouts/hub-flow.tpl +4 -0
- package/skills/document/layouts/icon-row.tpl +1 -1
- package/skills/document/layouts/image-grid.tpl +1 -1
- package/skills/document/layouts/matrix-2x2.tpl +1 -1
- package/skills/document/layouts/mock-qa.tpl +4 -0
- package/skills/document/layouts/profiles.json +2 -2
- package/skills/document/layouts/pyramid.tpl +1 -1
- package/skills/document/layouts/radar.tpl +1 -1
- package/skills/document/layouts/ring-progress.tpl +1 -1
- package/skills/document/layouts/slots.json +1 -1
- package/skills/document/layouts/steps-vertical.tpl +1 -1
- package/skills/document/layouts/steps.tpl +1 -1
- package/skills/document/layouts/three-kpi.tpl +1 -1
- package/skills/document/layouts/timeline.tpl +1 -1
- package/skills/document/layouts/toc-panel.tpl +2 -2
- package/skills/document/layouts/two-kpi.tpl +2 -2
- package/skills/document/layouts/versus.tpl +1 -1
- package/skills/document/motion/README.md +3 -2
- package/skills/document/office.md +3 -3
- package/skills/document/packs/README.md +1 -1
- package/skills/document/packs/board-brief/backdrop.html +2 -0
- package/skills/document/packs/board-brief/pack.css +2 -1
- package/skills/document/packs/mckinsey-photo/backdrop.html +2 -0
- package/skills/document/packs/mckinsey-photo/pack.css +2 -1
- package/skills/document/packs/press-room/backdrop.html +2 -0
- package/skills/document/packs/press-room/pack.css +2 -1
- package/skills/document/packs/prismatic-3d/backdrop.html +2 -0
- package/skills/document/packs/prismatic-3d/pack.css +4 -1
- package/skills/document/pdf.md +60 -43
- package/skills/document/rewrite.md +257 -309
- package/skills/document/scenarios.json +1307 -0
- package/skills/document/scenarios.schema.json +104 -0
- package/skills/document/styles/README.md +15 -25
- package/skills/document/styles/_backdrops/rimlight.html +3 -2
- package/skills/document/styles/_contract-defaults.css +31 -2
- package/skills/document/styles/_samples/_groups/biz-premium.webp +0 -0
- package/skills/document/styles/_samples/mckinsey.webp +0 -0
- package/skills/document/styles/anthropic/skin.css +6 -3
- package/skills/document/styles/apple/skin.css +4 -3
- package/skills/document/styles/bistro-warm/backdrop.html +2 -0
- package/skills/document/styles/bistro-warm/skin.css +4 -1
- package/skills/document/styles/black-gold/skin.css +6 -5
- package/skills/document/styles/bold-clash/backdrop.html +2 -0
- package/skills/document/styles/bold-clash/skin.css +2 -1
- package/skills/document/styles/branding/skin.css +4 -4
- package/skills/document/styles/campus-teal/backdrop.html +2 -0
- package/skills/document/styles/campus-teal/skin.css +2 -1
- package/skills/document/styles/cinereel/skin.css +7 -3
- package/skills/document/styles/clinic-care/backdrop.html +2 -0
- package/skills/document/styles/clinic-care/skin.css +2 -1
- package/skills/document/styles/cool/skin.css +6 -5
- package/skills/document/styles/dark-glass/backdrop.html +2 -0
- package/skills/document/styles/dark-glass/skin.css +2 -1
- package/skills/document/styles/gov-brief/backdrop.html +2 -0
- package/skills/document/styles/gov-brief/skin.css +2 -1
- package/skills/document/styles/grid-tech/backdrop.html +2 -0
- package/skills/document/styles/grid-tech/skin.css +2 -1
- package/skills/document/styles/hand-drawn/skin.css +3 -3
- package/skills/document/styles/ivory-gold/skin.css +7 -6
- package/skills/document/styles/legal-slate/backdrop.html +2 -0
- package/skills/document/styles/legal-slate/skin.css +2 -1
- package/skills/document/styles/magazine-ink/skin.css +4 -3
- package/skills/document/styles/mckinsey/backdrop.html +7 -5
- package/skills/document/styles/mckinsey/skin.css +2 -1
- package/skills/document/styles/memphis/backdrop.html +2 -0
- package/skills/document/styles/memphis/skin.css +2 -1
- package/skills/document/styles/mono/skin.css +6 -2
- package/skills/document/styles/neon-cyber/backdrop.html +2 -0
- package/skills/document/styles/neon-cyber/skin.css +2 -1
- package/skills/document/styles/olive-gold/skin.css +7 -6
- package/skills/document/styles/organic-earth/backdrop.html +2 -0
- package/skills/document/styles/organic-earth/skin.css +2 -1
- package/skills/document/styles/pastel-saas/backdrop.html +2 -0
- package/skills/document/styles/pastel-saas/skin.css +2 -1
- package/skills/document/styles/portfolio-noir/backdrop.html +2 -0
- package/skills/document/styles/portfolio-noir/skin.css +2 -1
- package/skills/document/styles/retro-press/backdrop.html +2 -0
- package/skills/document/styles/retro-press/skin.css +2 -1
- package/skills/document/styles/sport-arena/backdrop.html +2 -0
- package/skills/document/styles/sport-arena/skin.css +4 -1
- package/skills/document/styles/swiss-grid/skin.css +10 -5
- package/skills/document/styles/wedding-blush/backdrop.html +2 -0
- package/skills/document/styles/wedding-blush/skin.css +4 -1
- package/skills/document/theme-system.md +85 -77
- package/skills/document/themes/README.md +7 -5
- package/skills/document/vision.md +8 -5
- package/skills/document/xlsx.md +15 -25
- package/skills/grill-me/SKILL.md +6 -0
- package/skills/grill-me/agents/openai.yaml +5 -0
- package/skills/grilling/SKILL.md +28 -0
- package/skills/grilling/agents/openai.yaml +3 -0
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
# Content pipeline — premium deck methodology (clarify → research → structure → outline → author → QA)
|
|
2
2
|
|
|
3
|
-
Follow this for a **substantive
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
4 density). A wall of text is not "substantive" — it is lazy in the other direction.
|
|
12
|
-
Rich VISUAL + sparse TEXT. **Compose from `layouts/` structure-only layouts, not from
|
|
13
|
-
a blank slide** — authoring every slide from zero is the #1 "AI-generated" tell.
|
|
3
|
+
Follow this for a **substantive deck** (路演/汇报/评审/宣讲/pitch/keynote/launch), not a
|
|
4
|
+
quick 3-slide summary. It is the single source for HOW to source, structure and flesh
|
|
5
|
+
out deck content; deck-design.md renders it. You run these phases yourself (web search,
|
|
6
|
+
reasoning, AskUserQuestion) — there is no research script.
|
|
7
|
+
|
|
8
|
+
**Design target = a premium presentation that explains itself**: a visual + data on every
|
|
9
|
+
slide, and each point says why in one line (Phase 4). A wall of text is not "substantive";
|
|
10
|
+
neither is a board of 2-word labels.
|
|
14
11
|
|
|
15
12
|
## Execution discipline (whole pipeline)
|
|
16
13
|
|
|
@@ -23,72 +20,64 @@ a blank slide** — authoring every slide from zero is the #1 "AI-generated" tel
|
|
|
23
20
|
citation, a palette). Missing → halt and get it.
|
|
24
21
|
4. **No silent skips**: if you skip a step (e.g. Research for "organize my material"),
|
|
25
22
|
say so and why.
|
|
23
|
+
5. **Batch independent reads, searches and checks in ONE turn of parallel calls.**
|
|
24
|
+
Update the task plan only when a phase changes.
|
|
26
25
|
|
|
27
|
-
Two entry modes:
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
reorganize THEIR content into the slide structures, never invent facts.
|
|
26
|
+
Two entry modes: **open-ended** ("做一份关于 X 的 PPT") → every phase from Research;
|
|
27
|
+
**organize existing material** (user gave a doc/notes) → skip Phase 1 and in Phase 4
|
|
28
|
+
reorganize THEIR content, never invent facts.
|
|
31
29
|
|
|
32
30
|
---
|
|
33
31
|
|
|
34
32
|
## Phase 0 — Clarify & Brief (MANDATORY gate)
|
|
35
33
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
THREE questions
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
1. **Content source** — 提供材料 / 联网调研 /
|
|
45
|
-
|
|
46
|
-
`filePick: "file"` on that
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
deck → `pptx-tokenize` (reuse its layouts/master) or `pptx-theme` (its palette → our
|
|
82
|
-
layouts); from a reference image → build a `styles/<name>/skin.css`. Fallbacks: map
|
|
83
|
-
to the nearest catalog family or tweak one. A deck given here is used for its STYLE —
|
|
84
|
-
distinct from a deck given as **content**, which is text-only. Full routing in `SKILL.md`.
|
|
85
|
-
|
|
86
|
-
**Scenario matrix** (each row locks tone · density · required roles · narrative ·
|
|
87
|
-
pages). The required roles are a HARD checklist — Phase 2 must include them all:
|
|
88
|
-
|
|
89
|
-
| 场景 | 语气 | 密度 | 必备章节(required roles — all MUST appear) | 叙事(Phase 2) | 默认页数 |
|
|
34
|
+
The clarify gate and the style picker are defined once, in SKILL.md: ask only for the
|
|
35
|
+
missing values among content source, scenario and slide count, in ONE AskUserQuestion
|
|
36
|
+
call with at most
|
|
37
|
+
THREE questions; the scenario-ranked image-card style picker is a separate call after
|
|
38
|
+
the scenario is known. Run `bin/deck-styles.cjs` and pass its `options` unchanged;
|
|
39
|
+
the app expands the full-gallery option. The manual fallback is defined in SKILL.md.
|
|
40
|
+
What each answer means here:
|
|
41
|
+
|
|
42
|
+
1. **Content source** — 提供材料 / 联网调研 / 自由创作 (offline / no web tool → say so;
|
|
43
|
+
only the first and last). Provided → request the materials now; when you ask for a FILE, set
|
|
44
|
+
`filePick: "file"` on that question (a native file button; the picked path is the
|
|
45
|
+
answer). **Material given as CONTENT is for its TEXT/DATA only** — extract and
|
|
46
|
+
re-author it in the chosen style; never reuse its look. A `.pptx` handed in as
|
|
47
|
+
content → read its text (`.txt` sidecar or `bin/doc-text`); do **NOT**
|
|
48
|
+
`pptx-tokenize`/`pptx-theme` it. Reusing a deck's look happens only when the user
|
|
49
|
+
picks it as their **style** ("复用这份 PPT 的风格"), never because the content
|
|
50
|
+
arrived as a `.pptx`.
|
|
51
|
+
2. **Scenario** — AskUserQuestion caps TEXT options at 4, so offer the 3–4 rows of the
|
|
52
|
+
matrix below that best fit the topic (the user can type any other); an unlisted
|
|
53
|
+
answer maps to the nearest row. Record it as a short phrase. It locks **five** things:
|
|
54
|
+
tone · density (feeds Phase 4) · **required roles** (the default checklist for Phase 2) ·
|
|
55
|
+
narrative shape (Phase 2) · page range (the slide-count default). Then run
|
|
56
|
+
`bin/deck-scenario.cjs "<scenario>"` once: it prints that row with each section's
|
|
57
|
+
`content` — what the section must contain (elements, evidence, a recommended shape).
|
|
58
|
+
3. **Slide count** — default = the row's **默认页数**; clamp 3–30, double-check outside.
|
|
59
|
+
|
|
60
|
+
**Scenario matrix** — source of truth `scenarios.json`; the tables below are generated
|
|
61
|
+
from it. The required roles (必备章节) are the scenario's **default**: every one appears
|
|
62
|
+
unless the user's own words say otherwise.
|
|
63
|
+
|
|
64
|
+
**User wins; the matrix is only the base.** When the topic or answers conflict with the
|
|
65
|
+
row — 「别讲团队」, 「按 现状 / 挑战 / 路线图 三段讲」, a chapter order of their own — follow
|
|
66
|
+
the user:
|
|
67
|
+
- **Their structure** → chapter titles follow it. Never splice role names into a title
|
|
68
|
+
(「挑战|Solution」, 「融资需求|团队|下一步」). Fold each default role into their nearest
|
|
69
|
+
chapter and name it at the start of a point (「融资需求:…」).
|
|
70
|
+
- **Omit** a role only when the user said so, and only with their verbatim words.
|
|
71
|
+
「简短一点」 means fewer pages, not dropping Ask — merge roles instead.
|
|
72
|
+
- Record every override in `deck-brief.md` → `Overrides:`
|
|
73
|
+
`Team/团队 omitted — "别讲团队"` · `Market/市场 merged into S3`.
|
|
74
|
+
An omission without a verbatim quote is not an override, so restore that role.
|
|
75
|
+
- The format contract and no-fabrication rules are never overridable.
|
|
76
|
+
|
|
77
|
+
<!-- generated:scenario-matrix · source: scenarios.json · regenerate: node scripts/deck/gen-scenarios.mjs — do not edit by hand -->
|
|
78
|
+
| 场景 | 语气 | 密度 | 必备章节(required roles — default; user overrides win) | 叙事(Phase 2) | 默认页数 |
|
|
90
79
|
|---|---|---|---|---|---|
|
|
91
|
-
| **pitch** 融资/路演 | 自信 · 有张力 · 故事驱动 |
|
|
80
|
+
| **pitch** 融资/路演 | 自信 · 有张力 · 故事驱动 | 中 · 大数字+一句解释 | Problem/问题 · Solution/解决方案 · Market/市场 · Product/Traction/产品/进展 · Team/团队 · **Ask/融资需求** | SCQA / 问题-方案 | 10–12 |
|
|
92
81
|
| **内审** | 客观 · 直接 · 结论先行 | 略密(容明细/数据) | 结论/进展 · 关键指标 · 问题与风险 · 下一步/决策项 | 结论先行 | 6–8 |
|
|
93
82
|
| **销售** | 利益驱动 · 客户中心 · 说服 | 中 · 重价值与佐证 | 痛点 · 方案/价值主张 · 差异化 · 客户案例 · ROI/定价 · **CTA/行动号召** | 问题-方案 | 8–12 |
|
|
94
83
|
| **讲座** 学术 | 讲解 · 循序渐进 | 中 · 概念+例子 | 学习目标 · 背景/基础 · 核心概念 · 案例/推导 · 小结 | 由浅入深 | 10–15 |
|
|
@@ -106,36 +95,28 @@ pages). The required roles are a HARD checklist — Phase 2 must include them al
|
|
|
106
95
|
| **产品调研** 竞品分析 市场研究 | 客观 · 有据 · 不替结论下判断 | 中 | 市场规模 · 竞品格局 · 用户需求 · 差距与机会 · 结论建议 | 先摆事实,再给判断 | 10–15 |
|
|
107
96
|
| **会议纪要** 会后同步 | 简洁 · 可执行 · 不复述过程 | 低 | 议题 · 结论 · 待办 · 待决事项 | 结论先行 | 4–8 |
|
|
108
97
|
| **数据分析** 数据解读 指标复盘 | 结论先行 · 可追溯 | 中 | 结论 · 口径与数据源 · 维度拆解 · 归因 · 建议 | 结论先行 | 6–10 |
|
|
98
|
+
<!-- /generated:scenario-matrix -->
|
|
99
|
+
|
|
100
|
+
<!-- generated:scenario-style-bias · source: scenarios.json · regenerate: node scripts/deck/gen-scenarios.mjs — do not edit by hand -->
|
|
101
|
+
Tone also biases the catalog style ranking: 张力/情绪(pitch·发布会·大会)→ 深色酷炫(cool/apple/black-gold);务实(内审·销售)→ 白底咨询(mckinsey);清晰(讲座·培训)→ 中性/教育风.
|
|
102
|
+
<!-- /generated:scenario-style-bias -->
|
|
109
103
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
括号写法(`关键成果(STAR)`)同样不行 —— 它一个斜杠都没有,整串当一个词去找,
|
|
117
|
-
大纲里必须原样出现那七个字符才算命中。
|
|
118
|
-
|
|
119
|
-
还有两个容易漏的:**用单数**(大纲会写 `Module 1`,`Modules` 匹配不上,而 `Module`
|
|
120
|
-
两种都命中);**本来就是中文的那几段也要补英文**(`练习/示例` 漏了 `Exercise`,
|
|
121
|
-
一份英文培训大纲就在这一项上判缺)。
|
|
122
|
-
|
|
123
|
-
Tone also biases the catalog style ranking: 张力/情绪(pitch·发布会·大会)→ 深色酷炫(cool/apple/
|
|
124
|
-
black-gold);务实(内审·销售)→ 白底咨询(mckinsey);清晰(讲座·培训)→ 中性/教育风.
|
|
125
|
-
If the user's scenario isn't listed, map it to the nearest row's tone/density/narrative.
|
|
126
|
-
|
|
127
|
-
**Persist `deck-brief.md`**: Topic · Scenario · Source · Style(name + 2–3 sentence
|
|
128
|
-
palette/type/motif) · Theme file · Template style · Slide Count · (assumptions).
|
|
129
|
-
Persist it and continue. Do not ask the user to approve information they just supplied.
|
|
130
|
-
If the brief adds a material assumption that changes scope, show only that assumption
|
|
131
|
-
and pause for approval before continuing.
|
|
132
|
-
(Offline / no web tool → say so; source can only be 提供材料 or 自由创作.)
|
|
104
|
+
**Persist `deck-brief.md`**: Topic · Scenario · Source · Style (entry id + 2–3 sentences
|
|
105
|
+
on palette/type/motif) · Template style · Slide Count · Overrides (if any) · (assumptions) —
|
|
106
|
+
≤10 lines of DECISIONS. Research findings, numbers, chart data and citations do not go
|
|
107
|
+
here: they are written once, in `plan.json`. Persist it and
|
|
108
|
+
continue — do not ask the user to approve what they just supplied. If the brief adds a
|
|
109
|
+
material assumption that changes scope, show only that assumption and pause.
|
|
133
110
|
|
|
134
111
|
---
|
|
135
112
|
|
|
136
|
-
## Phase 1 — Research (open-ended only
|
|
113
|
+
## Phase 1 — Research (open-ended only)
|
|
137
114
|
|
|
138
|
-
|
|
115
|
+
Run 8–12 queries **in parallel** (many searches at once, or a sub-agent per dimension —
|
|
116
|
+
breadth beats depth-first), then organize into 概述 / 背景 / 关键信息 / 证据(案例·数据) /
|
|
117
|
+
分析 / 展望. Research with search and fetch only — **do not open the browser** for it (it
|
|
118
|
+
pops a panel in the user's app): a page that blocks fetch (403, timeout, paywall) → use
|
|
119
|
+
its search snippet or another source. Open it only when the user asks for that page.
|
|
139
120
|
|
|
140
121
|
| Layer | Query pattern |
|
|
141
122
|
|---|---|
|
|
@@ -145,16 +126,11 @@ Search 8–12 queries across layers, then organize into 6 dimensions:
|
|
|
145
126
|
| Application | `[主题] 案例/实践` |
|
|
146
127
|
| Trends | `[主题] 趋势/未来` |
|
|
147
128
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
一个主题、没有材料)。一旦 Phase 0 选定了场景,就照下表按**这份稿子真正需要的东西**
|
|
152
|
-
去查 —— 每条焦点出 1–2 条查询词,再从上面五层补 2–4 条防止十条围着一个角度。
|
|
153
|
-
用户在 Phase 0 自己交代的那句话优先级最高,先查他明说要的。
|
|
154
|
-
|
|
155
|
-
焦点直接对着上面场景矩阵的 `必备章节` —— 查回来的东西要能填进那些章节,
|
|
156
|
-
否则这一轮检索就是白花的(按次计费)。
|
|
129
|
+
**层次是兜底,场景才是方向。** 五层只是只给了主题时的默认铺法。场景选定后按下表查这份
|
|
130
|
+
稿子真正需要的东西:每条焦点 1–2 条查询,再用五层补 2–4 条防止十条围着一个角度;用户
|
|
131
|
+
自己点名要的先查。焦点对着场景的必备章节——查回来填不进去的检索就是白花钱(按次计费)。
|
|
157
132
|
|
|
133
|
+
<!-- generated:scenario-research-focus · source: scenarios.json · regenerate: node scripts/deck/gen-scenarios.mjs — do not edit by hand -->
|
|
158
134
|
| 场景 | 检索焦点 |
|
|
159
135
|
|---|---|
|
|
160
136
|
| **pitch** 融资/路演 | 市场规模与增速(TAM/SAM) · 可比公司融资与估值 · 同类产品与差异 · 目标客群痛点证据 |
|
|
@@ -175,31 +151,28 @@ Dimensions: 概述 / 背景 / 关键信息 / 证据(案例·数据) / 分析 /
|
|
|
175
151
|
| **产品调研** 竞品分析 市场研究 | 市场规模与增速 · 竞品功能与定价对比 · 用户评价与差评 · 渠道与份额数据 |
|
|
176
152
|
| **会议纪要** 会后同步 | 议题涉及的外部事实 · 相关口径与定义 · 同类决策的公开先例 |
|
|
177
153
|
| **数据分析** 数据解读 指标复盘 | 指标口径定义 · 行业基准值 · 同类归因案例与方法 |
|
|
154
|
+
<!-- /generated:scenario-research-focus -->
|
|
178
155
|
|
|
179
156
|
内部数据型的几档(内审 · 述职 · 工作汇报 · 年度总结)焦点**刻意收窄到对标与口径**:
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
figures/photos with the media-generation MCP(文生图)into local files, reference by
|
|
192
|
-
path (`<img src="./hero.png">`) — `html2pptx` auto-inlines them as data: URIs. Push
|
|
193
|
-
every detail/caveat/citation that does NOT fit the sparse slide into per-slide
|
|
194
|
-
**speaker notes** (`<div class="talos-notes" style="display:none">…</div>` → pptx
|
|
195
|
-
notesSlide; `--notes-doc` emits a standalone notes doc). Cite → notes → assets, one pass.
|
|
157
|
+
主体材料在用户手里,联网只能补"外面是什么水位"。
|
|
158
|
+
|
|
159
|
+
**Cite everything:** every data point (number / percent / year / quote) carries its
|
|
160
|
+
source in a `{claim → URL}` list; a stat without one is dropped. **Quality gate: ≥3
|
|
161
|
+
authoritative sources, ≥5 distinct domains; drop anything >5 years old or unverified.**
|
|
162
|
+
The source list goes on a "参考来源" ending slide AND into speaker notes. On the slide
|
|
163
|
+
itself: at most ONE short line, publisher + year — the slide's `source` in the plan
|
|
164
|
+
(「来源:IDC,2026」) — the data period,
|
|
165
|
+
scope caveats and URL go to notes and 参考来源, never a footnote sentence. The user's
|
|
166
|
+
own figures carry no source line. Plan generated visuals in Phase 3; generate after
|
|
167
|
+
the outline and style are confirmed (generated-visuals.md).
|
|
196
168
|
|
|
197
169
|
---
|
|
198
170
|
|
|
199
|
-
## Phase 2 — Narrative structure (
|
|
171
|
+
## Phase 2 — Narrative structure (Pyramid / SCQA / MECE)
|
|
200
172
|
|
|
201
|
-
|
|
173
|
+
Take the scenario row's narrative (by deck type below) and build chapters top-down:
|
|
202
174
|
|
|
175
|
+
<!-- generated:scenario-narratives · source: scenarios.json · regenerate: node scripts/deck/gen-scenarios.mjs — do not edit by hand -->
|
|
203
176
|
| Deck type | Structure | Chapter flow |
|
|
204
177
|
|---|---|---|
|
|
205
178
|
| 报告/总结 | 结论先行 | 结论 → 证据 → 细节 → 下一步 |
|
|
@@ -207,153 +180,102 @@ Pick the pyramid shape by deck type, build chapters top-down:
|
|
|
207
180
|
| 培训/教学 | 由浅入深 | 基础 → 核心 → 进阶 → 练习 |
|
|
208
181
|
| 融资/路演 | SCQA | 情境 → 冲突 → 问题 → 解答 |
|
|
209
182
|
| 活动/宣传 | 情绪线 | 钩子 → 共鸣 → 高潮 → 行动 |
|
|
183
|
+
<!-- /generated:scenario-narratives -->
|
|
210
184
|
|
|
211
|
-
|
|
212
|
-
and together
|
|
213
|
-
|
|
185
|
+
Page count = the confirmed slide count; 1–5 pages per chapter. **MECE**: chapters don't
|
|
186
|
+
overlap and together support the ONE core message; every required role appears, unless
|
|
187
|
+
it is merged or omitted per the brief's Overrides.
|
|
214
188
|
|
|
215
189
|
---
|
|
216
190
|
|
|
217
|
-
## Phase 3 — Outline artifact (MANDATORY gate
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
(detail)** — so the outline plans real content without pre-writing a wall of text.
|
|
224
|
-
|
|
225
|
-
```markdown
|
|
226
|
-
# Slide Outline
|
|
227
|
-
## Meta — from deck-brief.md (Topic/Scenario/Source/Style/Theme/Template style/Count)
|
|
228
|
-
## Source Materials — provided summary · {claim→URL} list · or "N/A — topic knowledge"
|
|
229
|
-
## Slide-by-Slide (one BLOCK per slide — a full content spec, not a one-liner)
|
|
230
|
-
|
|
231
|
-
### S1 — Cover
|
|
232
|
-
- Template: cool/cover
|
|
233
|
-
- Takeaway: <one line — the TITLE stated as a CONCLUSION, not the topic>
|
|
234
|
-
- Content structure: <Data/Trend · Single-impact · Argument · Cards · Comparison · Process · Framework · Case-study · Summary> — core elements: …
|
|
235
|
-
- On-slide (sparse): <only what shows ON the canvas — ≤3–5 key points / numbers, phrase-level>
|
|
236
|
-
- Data points {claim→URL}: <n1 (src) · n2 (src) · …> (drop any stat with no source)
|
|
237
|
-
- → Notes: <detail / caveat / context / citations that go to SPEAKER NOTES, never the slide>
|
|
238
|
-
- Density: Light(≤3) / Medium(4–6) / Heavy(7+) · Dark: yes/no · Chart: yes/no · Image: yes/no
|
|
239
|
-
- Narrative role: <how this page advances the ONE core message>
|
|
240
|
-
|
|
241
|
-
### S2 — Agenda
|
|
242
|
-
- Template: cool/toc
|
|
243
|
-
- … (same fields; repeat one block for ALL N slides)
|
|
244
|
-
|
|
245
|
-
## Visual Rhythm
|
|
246
|
-
- Dark-accent slides at: <e.g. 1, 7, N> (≥1–2 dark slides)
|
|
247
|
-
- Chart-bearing slides at: <e.g. 4, 6, 9>
|
|
248
|
-
- Template rotation: no template >2 slides in a row, none more than twice total unless unavoidable
|
|
191
|
+
## Phase 3 — Outline artifact (MANDATORY gate)
|
|
192
|
+
|
|
193
|
+
First see what the chosen style's layouts take — one call, before writing anything:
|
|
194
|
+
|
|
195
|
+
```
|
|
196
|
+
node <skill>/bin/deck-plan.cjs --layouts --style <style id>
|
|
249
197
|
```
|
|
250
198
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
for
|
|
256
|
-
|
|
257
|
-
|
|
199
|
+
One line per layout this style renders, with the plan fields it takes
|
|
200
|
+
(bin-reference.md). Write each slide's content to the layout you mean it for.
|
|
201
|
+
|
|
202
|
+
Write the outline ONCE, as `plan.json` — `deck-plan`'s input and the single source of
|
|
203
|
+
truth for Phase 4–5 (do not re-decide count or roles later). Per slide: `role` · `title`
|
|
204
|
+
(the takeaway, stated as a CONCLUSION) · `shape` / `intent` · what goes ON the canvas,
|
|
205
|
+
(`subtitle` · `points` · `stats` · `quote` · `table` · `chart` · `image` · `takeaway`) ·
|
|
206
|
+
`source` (one short line) · `notes` (what to say + the one caveat that matters, 2–3
|
|
207
|
+
sentences, ≲120 字 — never on the slide; cite as "见来源 1": the full citation — title,
|
|
208
|
+
date, URL — is written ONCE, in the 参考来源 slide's notes, never re-quoted per slide or
|
|
209
|
+
in the original language) · `narrative` (how it advances the ONE core message) · `file` for a bespoke slide
|
|
210
|
+
(deck-design.md). Write `plan.json` itself with the file tool and edit it in place on a
|
|
211
|
+
revision — no script that generates or patches it. Render the outline from it;
|
|
212
|
+
never write it by hand:
|
|
258
213
|
|
|
259
|
-
|
|
214
|
+
```
|
|
215
|
+
node <skill>/bin/deck-plan.cjs plan.json spec.json --outline slide-outline.md
|
|
216
|
+
```
|
|
260
217
|
|
|
261
|
-
|
|
218
|
+
One block per slide (Takeaway · Shape · On-slide · Chart · Source · Notes · Narrative
|
|
219
|
+
role) plus the layout each slide got. A slide that fits no layout says so in its block —
|
|
220
|
+
fix its content before asking. Keep ≥1–2 dark-accent and the chart pages spread through
|
|
221
|
+
the deck (visual rhythm).
|
|
262
222
|
|
|
263
|
-
|
|
264
|
-
|
|
223
|
+
A required section's block covers its `content` (deck-scenario) — the elements on the
|
|
224
|
+
slide or in the data points, the evidence with a source — unless the user's words say
|
|
225
|
+
otherwise. An element with no source → say so in Notes; never invent the number.
|
|
265
226
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
`.tpl` `<section>` into the deck HTML, replace the sample text/numbers with real cited
|
|
269
|
-
content** — leave color to the skin (never hardcode a brand hex). Render
|
|
270
|
-
`bin/html2pptx.cjs deck.html out.pptx --style <skin>`. Where the catalog doesn't fit
|
|
271
|
-
(bespoke hero covers, layered architecture, magazine) author bespoke HTML per
|
|
272
|
-
**deck-design.md** (still using the skin's semantic classes). With no browser at
|
|
273
|
-
all, say so and stop — there is no spec-deck fallback.
|
|
227
|
+
A ~9pt footer carries ≤24 characters (deck-plan rejects longer): `source` is the
|
|
228
|
+
publisher and year ("Maximize Market Research,2026"); URL and caveats go in `notes`.
|
|
274
229
|
|
|
275
|
-
|
|
230
|
+
Assess where generated visuals improve the story: typically 2–3 pages, not a quota.
|
|
231
|
+
Count them within the total; mark purpose and image/text mode in `narrative`, reserve
|
|
232
|
+
`file` paths before HTML exists, and follow generated-visuals.md.
|
|
276
233
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
| **Framework/Matrix** | 两轴 + 四象限 | `matrix-2x2` |
|
|
286
|
-
| **Case Study** | 背景/挑战/方案/前后 | `split-two-col` + `big-stat` |
|
|
287
|
-
|
|
288
|
-
Role pages: `cover` · `toc` · `section` · `ending` (and their variants in `layouts/README.md`). Anything no layout fits → a bespoke slide (deck-design.md).
|
|
289
|
-
|
|
290
|
-
### 4.2 Pick the exact template — priority order (P1 → P2 → P3)
|
|
291
|
-
|
|
292
|
-
The 4.1 table gives the template FAMILY; resolve the exact `.tpl` (and variant) in
|
|
293
|
-
this **priority order** — P1 outranks P2 outranks P3; never trade layout-fit for variety:
|
|
294
|
-
|
|
295
|
-
- **P1 — Layout match (most important): image presence + position.** No image → a
|
|
296
|
-
text-only template (`cards-3` / a text-column split). Image present → `split-two-col`
|
|
297
|
-
with the visual on the side it reads best (mirror the `.tpl` for image-left). Data →
|
|
298
|
-
`chart-kpi` (chart choice — inline SVG vs native `data-chart` — per deck-design.md "Charts"). Never force text into an image slot or an image
|
|
299
|
-
into a text slot; delete an unused image slot rather than leaving a placeholder.
|
|
300
|
-
- **P2 — Density match: point count → variant.** 1–2 points / one hero number →
|
|
301
|
-
spacious·centered (`big-stat`, hero cover); 3–4 points → balanced two-column
|
|
302
|
-
(`split-two-col` / `cards-3`); 5+ points → grid·dense (`cards-3` grid or bespoke
|
|
303
|
-
multi-column). Match the template's slot count to the outline's point count — if
|
|
304
|
-
content > slots, condense to ≤6 items; if content < slots, remove the spare slots.
|
|
305
|
-
- **P3 — Diversity (ENFORCED, hard rule).** ❌ same template twice in a row · ❌ same
|
|
306
|
-
template >2× total. Vary the variant even when the family repeats. **TOC by chapter
|
|
307
|
-
count**: 3–4 → centered/large-title · 5–6 → list/grid · 7+ → dense/two-column.
|
|
308
|
-
**Reuse ONE `section` template for ALL transition pages** (consistency), but rotate
|
|
309
|
-
content templates. If the catalog can't satisfy P1+P2 without repeating, author a
|
|
310
|
-
bespoke slide (deck-design.md) rather than force a wrong-fit template.
|
|
311
|
-
|
|
312
|
-
### 4.3 Premium density (REPLACES the old text-density floor)
|
|
313
|
-
|
|
314
|
-
- **One message per slide.** The title states the **takeaway** (conclusion), not the topic.
|
|
315
|
-
- **Short phrases > sentences. No paragraphs on the slide.** Every detail, caveat,
|
|
316
|
-
and citation goes to **speaker notes**, not the canvas.
|
|
317
|
-
- **Substance = VISUAL + DATA, not word count.** Each content slide carries real
|
|
318
|
-
substance through **≥1 chart/diagram/big-number/decorated visual + 3–5 concrete
|
|
319
|
-
data points** (numbers/%/years) — the data lives in the visual, its story in one
|
|
320
|
-
line. A bullets-only slide is a last resort for genuinely list-like content.
|
|
321
|
-
- **Never shrink the font to fit** — doesn't fit at the sizes below → split or remove.
|
|
322
|
-
|
|
323
|
-
### 4.4 Premium visual contract (adapted from WorkBuddy Rule 1/2/3)
|
|
324
|
-
|
|
325
|
-
- **Big typography** (`[size=1..7]` = 12/14/16/24/32/48/72px on the 1280×720 canvas):
|
|
326
|
-
titles `size 6–7`; section headings `size 5–6`; body `size 3–4`, never below
|
|
327
|
-
`size 3` (16px); hero KPI number huge (`big-stat`). Max 2 font families; use weight,
|
|
328
|
-
not many sizes.
|
|
329
|
-
- **Rich backgrounds** — never pure white/black; theme gradient + a decorative motif.
|
|
330
|
-
**≥1–2 dark-accent slides** across the deck (Visual Rhythm).
|
|
331
|
-
- **≥2 decorative/visual elements per content slide**; **charts > text for data**, one
|
|
332
|
-
insight per chart (SVG or native `data-chart` per deck-design.md "Charts"), highlight the key datapoint, no junk.
|
|
333
|
-
- **Emotional opening & closing** — cover and ending are STATEMENTS (feeling, not
|
|
334
|
-
facts): strong visual + few powerful words.
|
|
335
|
-
- **Visual diversity** — enforced by P3 (§4.2); a deck of one repeated layout reads as
|
|
336
|
-
machine-made.
|
|
234
|
+
Then **GATE**, in this order — never ask before the outline exists:
|
|
235
|
+
1. `plan.json` written and `slide-outline.md` rendered by the command above;
|
|
236
|
+
2. `read` `slide-outline.md` — the outline shows in the timeline;
|
|
237
|
+
3. AskUserQuestion, ONE sentence ("是否按这份 12 页大纲制作?"), `confirmation` with
|
|
238
|
+
`options: ["按此制作", "调整大纲"]` — never the outline in the question.
|
|
239
|
+
|
|
240
|
+
Advance only on approval. A revision edits `plan.json` and re-runs the same command — the outline and the
|
|
241
|
+
spec move together.
|
|
337
242
|
|
|
338
243
|
---
|
|
339
244
|
|
|
340
|
-
## Phase
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
245
|
+
## Phase 4 — Author
|
|
246
|
+
|
|
247
|
+
Announce the on-canvas language in one line (default = the user's prompt language;
|
|
248
|
+
respect an explicit "用英文/use English"). Generate the approved visuals, then author
|
|
249
|
+
their `file` slides and follow deck-design.md "Workflow" with the approved plan.
|
|
250
|
+
Layout selection rules (P1/P2/P3) live in layouts/README.md.
|
|
251
|
+
|
|
252
|
+
Content density — what each slide carries:
|
|
253
|
+
|
|
254
|
+
- **One message per slide**; the title states the takeaway.
|
|
255
|
+
- **Read deck** (default; `deck-plan` reads it off the scenario — 发布会/大会/年会 are
|
|
256
|
+
talk decks): each point = a label + ONE explanatory sentence (`body`; stats: `note`),
|
|
257
|
+
plus `subtitle` (口径 / why it matters) and `takeaway` (启示) — 120–300 字 per slide;
|
|
258
|
+
`content-thin` flags less. **Talk deck**: phrases only. Either way no paragraphs;
|
|
259
|
+
citations and long caveats go to the notes.
|
|
260
|
+
- **Substance = visual + data.** Each content slide carries ≥1 chart / diagram / big
|
|
261
|
+
number / visual plus 3–5 concrete data points, with its story in one line. A
|
|
262
|
+
bullets-only slide is the last resort for genuinely list-like content.
|
|
263
|
+
- **Cover and ending are statements** — strong visual, few powerful words. On the
|
|
264
|
+
cover the title is by far the largest text; besides it only the brand/eyebrow once
|
|
265
|
+
(brand, event or date — never a chapter name like 现状), a subtitle and at most one
|
|
266
|
+
key line. No running header or chapter nav, no stat row,
|
|
267
|
+
no source line — the key numbers open slide 2.
|
|
268
|
+
- Doesn't fit → split or cut; never shrink the type (visual rules: deck-design.md
|
|
269
|
+
"Design principles").
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## Phase 5 — Preview, build, sign off
|
|
274
|
+
|
|
275
|
+
deck-design.md "Verify before delivering" is the procedure. In short: iterate on HTML
|
|
276
|
+
previews (`html2pptx.cjs deck.html --preview-dir <dir>`, then `--preview-pages` for the
|
|
277
|
+
changed slides), build the PPTX and fix its `qa` findings, then sign off once with
|
|
278
|
+
`deck-qa deck.pptx --final` and look only at its `previews`. Never use PPTX→PDF as the
|
|
279
|
+
authoring preview. Finish only after one clean structural, mechanical and visual pass.
|
|
280
|
+
For PDF delivery, follow deck-design.md: convert the final PPTX through Office and
|
|
281
|
+
inspect that PDF, reusing final QA output only while the PPTX is unchanged.
|