视觉画布设计
canvas-design
基于设计原则创作静态视觉作品,用于海报与品牌图形。
pptx-author【文档与办公】STEP 2 of the PPTX-from-layouts pipeline. Write a slide deck in markdown using the [HINT: layout_name] system so each slide targets a real template layout, then lint it before rendering. Use when the user wants to "draft slides", "write a deck outline", "author presentation markdown", "add layout hints", or has a layout catalog from Step 1 and needs …
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Write the deck as markdown where every slide names the exact template layout it
should land on, using [HINT: layout_name]. This is the bridge between "I know
my template's layouts" (Step 1) and "render the deck" (Step 3).
STEP 1 — PROFILE STEP 2 — AUTHOR STEP 3 — RENDER
pptx-profile pptx-author pptx-from-layouts
─────────────── ─────────────── ─────────────────
your-template.pptx slides.md (+ [HINT:]) slides.md + config
│ │ │
▼ ▼ ▼
catalog.py ──catalog.md──▶ write & lint ──slides──▶ generate.py ─▶ deck.pptx
└────────────────── config.json ───────────────────▲ (validated)
You are here: Step 2. You need the layout-catalog.md from Step 1 (or use the
bundled Inner Chapter layouts). Output is a slides.md the renderer consumes.
---. Each begins with a title and (optionally) a
hint.# Slide N: Title or ## Title — the title. Make it a claim, not a
label ("Three briefs, one foundation" — not "Overview").[HINT: layout_name] — names a real layout from the Step-1 catalog. Copy
the value verbatim from the catalog's Hint column. The engine fills that
layout's actual placeholders.column-* / grid-* layouts → [Column N: Header] blocks (or **Header**
[Image: path/to.jpg].- bullets (the last resort, not the reflex).| You have… | Author with | Why |
|---|---|---|
| A profiled template + its catalog | [HINT: real-layout-name] | Precise: targets the exact layout. The "creating" path. |
| No catalog / unsure of layouts | **Visual: type** (e.g. process-4-phase) | Semantic: the engine auto-picks a layout for that intent. |
[HINT:] always wins if both are present. A hint that doesn't match the template
is ignored with a warning and falls back to auto-detection — so lint first.
python scripts/lint_hints.py slides.md --config your-template-config.json
# or, against the Step-1 markdown catalog:
python scripts/lint_hints.py slides.md --catalog your-template-layout-catalog.md
# no flag → validates against the bundled Inner Chapter template
The linter flags, per slide: P0 unknown hint (with a "did you mean…?"
suggestion — this will mis-render), P1 missing title, P2 bullets mixed
with a table. Exit code 2 means fix-and-re-run.
# Slide 1: Personas that respond like real humans
[HINT: title-cover]
### Inner Chapter
---
# Slide 2: Three outcomes the research must achieve
[HINT: column-3-centered-a]
[Column 1: Level-set the teams]
- Confirm what's known about each athlete
[Column 2: Capture room content]
- In-home video, voice clips, phone recordings
[Column 3: Deliver for leadership]
- A visceral understanding for senior stakeholders
---
# Slide 3: Why personas are the hard part
[HINT: content-image-right-a]
[Image: assets/persona-diagram.png]
- No world model — pattern-matching only
- Bias toward agreeableness — more positive than real consumers
| Marker | Result | Marker | Result | |
|---|---|---|---|---|
{bold}text{/bold} | Bold | {bullet:-} | Dash bullet | |
{italic}text{/italic} | Italic | {bullet:1} | Numbered | |
{blue}text{/blue} | Brand color | {level:N} | Indent level |
Hand slides.md (plus the template + config) to Step 3 — pptx-from-layouts:
python ../pptx-from-layouts/scripts/generate.py slides.md -o deck.pptx \
--template your-template.pptx --config your-template-config.json --validate
For turning raw notes/source docs into a hint-tagged slides.md automatically,
the pptx-outline-architect subagent does the heavy lifting.