视觉画布设计
canvas-design
基于设计原则创作静态视觉作品,用于海报与品牌图形。
ppt-maker【文档与办公】Build branded PowerPoint decks (.pptx) for pitches, internal updates, sales decks, customer QBRs, board updates, conference talks using the Pyramid Principle and SCQA framework (Barbara Minto, The Minto Pyramid Principle). Every deck starts with the answer - conclusion on slide 2, evidence after. Slide titles are conclusions, not topics. Use when the…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Builds .pptx decks using the brand template, with structured slide content and speaker notes. Applies the Pyramid Principle (Barbara Minto) - the top of the pyramid is the one answer, below it are the supporting arguments, below each argument is the evidence. State the conclusion first, then prove it.
Ideas form a pyramid. The deck title is the one overarching recommendation or answer. Below it are 3-5 supporting arguments (the sections). Below each argument is the data and evidence that proves it.
Top-down rule: state the conclusion first, then prove it. Never build to a reveal. Never make the audience wait for the answer.
Complete this before building any slide:
SITUATION: what the audience already knows and accepts as true. Sets the context. COMPLICATION: what changed, what went wrong, what tension exists. Creates the "so what?" QUESTION: the question the complication raises in the audience's mind. ANSWER: the deck answers this question. State it on slide 2 or 3 - before any evidence.
The SCQA opening creates immediate relevance. The audience understands WHY they're in this meeting before seeing the first data slide.
Deck title -> section titles -> slide titles must form a coherent argument. Test: read only the titles in order. Does the argument hold? If not, the structure is wrong.
| Type | Slide count | Structure |
|---|---|---|
| Pitch deck (investor) | 10-12 | Sequoia format: problem, solution, market, model, traction, team, ask |
| Sales deck | 8-12 | Hook, problem, agitate, solution, proof, pricing, next step |
| Board deck | 12-20 | KPIs, wins, misses, asks, plan |
| QBR (customer) | 6-10 | Recap, results, learnings, plan, asks |
| Conference talk | 15-30 | Hook, framework, evidence, application, takeaway |
| Internal update | 5-10 | Goal, progress, blockers, next steps |
templates/<brand>.pptx exists. If not, ask the user to drop one in.Load context. Read knowledge/brand/voice.md (for slide copy) and knowledge/brand/visual.md (for color, type, image style references). Read knowledge/markets/positioning.md for any positioning slides. Confirm a .pptx template exists in templates/.
Complete the SCQA pre-work. Before touching slides:
SITUATION: [what the audience already knows]
COMPLICATION: [what changed or what the tension is]
QUESTION: [what the complication makes the audience ask]
ANSWER: [the one-sentence answer the deck delivers]
The ANSWER becomes the deck title. The deck is the proof for that answer.
Pyramid check. Draft the deck structure as a pyramid:
DECK TITLE (= the Answer from SCQA)
├── Section 1: [supporting argument 1]
│ ├── Slide: [conclusion that proves argument 1]
│ └── Slide: [conclusion that proves argument 1]
├── Section 2: [supporting argument 2]
│ └── Slide: [conclusion that proves argument 2]
└── Section 3: [supporting argument 3]
└── Slide: [conclusion that proves argument 3]
Read the titles top to bottom. Does the argument hold without the body content? If not, restructure.
Outline first. Show the user the slide-by-slide outline as a numbered list, with action titles:
1. Title slide: [deck title = the SCQA Answer]
2. The answer: [SCQA Answer restated as the key recommendation - slide 2, before evidence]
3. [Section 1 header: argument 1]
4. [Slide title = conclusion of slide 4]
...
Wait for the user to confirm or edit before building the file.
Build the deck. For each slide, generate:
Use python-pptx to write the file. Pseudocode the script if you do not have execution access; otherwise run it. The script should:
templates/<brand>.pptx as the baseslide.notes_slide.notes_text_frameoutput/ppt/<DD-MM-YYYY>-<slug>.pptxIf the user does not have python-pptx installed, fall back to:
output/ppt/<DD-MM-YYYY>-<slug>.md with the full slide-by-slide contentSlide design rules:
Self-check:
knowledge/brand/voice.mdSave the .pptx and a parallel .md outline to output/ppt/.
Use python-pptx inline:
from pptx import Presentation
from pathlib import Path
template = Path("templates") / "brand.pptx"
prs = Presentation(str(template))
# Use existing layouts, do not create new ones
title_layout = prs.slide_layouts[0]
content_layout = prs.slide_layouts[1]
# ... add slides
prs.save("output/ppt/DD-MM-YYYY-deck-name.pptx")
templates/, stop and ask the user to drop one in.[NEEDS INPUT: <what>] on the slide itself, not a plausible
placeholder. A placeholder that looks like data will ship.[NEEDS INPUT]. Do not pull from old knowledge/kpis.md without confirming they are current.python-pptx fails quietly. Layout indices differ per template, branded templates often lack a
body placeholder in the layout the script picks, and overflowing text is dropped without an error.
"Deck built" is a claim about the script running, not about the deck being usable.
After writing the file, re-open it and assert:
If you cannot execute code, say so plainly and label the output "script generated, NOT verified, open it before sending". Never report a deck as built on the basis of a script you did not run.
/campaign-brief and /kpi-review produce the content and numbers a deck presents/case-study-writer for a customer-story slide with real structure/thought-leadership-writer for the narrative spine of a conference talk/copy-review to tighten slide copy before it is built