
Humanize Ppt
- 428 installs
- 851 repo stars
- Updated July 31, 2026
- learnprompt/humanize-ppt
Helps with ai & agent building tasks.
About
humanize-ppt is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.
- humanize-ppt
- AI & Agent Building
- AI-coding skill
Humanize Ppt by the numbers
- 428 all-time installs (skills.sh)
- +43 installs in the week ending Aug 2, 2026 (Skillselion tracking)
- Ranked #1,919 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/learnprompt/humanize-ppt --skill humanize-pptAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 428 |
|---|---|
| repo stars | ★ 851 |
| Last updated | July 31, 2026 |
| Repository | learnprompt/humanize-ppt ↗ |
What it does
Helps with ai & agent building tasks.
Files
Humanize PPT
Use this skill when a user wants to turn raw material, notes, voice transcripts, documents, links, or old PPTs into a presentation-ready outline and per-page media decisions before delegating rendering to a downstream skill.
Positioning
Humanize PPT is a presentation system, born for the talk: an Outline Director (AST audience-state-transfer — every page turn moves the audience forward), a Per-Page Visual-Enhancement Director (real image / SVG diagram / Remotion video), a Production Brief Orchestrator, a Presentation Checkup Runner (演讲体检; formerly the QA loop, CLI flag still --qa-from), and a Presenter-Mode hand-off. The motivation: HTML-PPT template skills are great at concept display but blow a simple idea into a dozen pretty pages, while a real 90-minute talk is ~30 — the pretty shell outruns the content density. Humanize closes that gap: it keeps the beauty (rendered natively by the downstream template skill) and makes it presentable — a line you can stand up and deliver. Downstream template skills own "renders beautifully"; Humanize owns "it's a talk, and someone checked it."
The presentation checkup in one sentence: it does not grade beauty, it grades the outline. It compares every rendered page against its outline page, pulls out the pages that can only be looked at but not spoken from, and keeps going until every page is one the speaker can stand up and present. A failed page, in plain words: a page that holds only a few words and never finishes its point, or a page that fails the audience state transfer it promised (the listener walks out of that page in the same state they walked in). Such a page should not exist; the checkup pulls it out and generates fix instructions.
Humanize is broadly compatible with any downstream skill that can output an HTML PPT: the brief is plain markdown + JSON, anything can read it. The verified, stable recommendations are: Chinese → guizang-ppt-skill; English → frontend-slides / beautiful-html-templates. Other downstreams are hot-pluggable; support levels live in registry/renderer_registry.json and are updated only on real results.
It runs before downstream PPT / HTML slide skills and around the post-render presentation checkup. It owns the AST contract, the per-page media decision (does this page need a photo, a system diagram, a 10-second process clip, nothing?), the production brief that the next agent consumes, and the checkup pass on the rendered HTML. It does not own the rendered HTML itself.
There are two human review gates before rendering, both Humanize-owned zero-dependency working drafts (never decks): the outline preview (--preview-outline / scripts/preview_outline_html.py, the audience state-transfer map) and, since v0.9, the style gallery (--style-gallery). The style gallery is the cover-style gate: before the outline, Humanize emits ≥4 cover candidates for the renderer, writes one cover-only render command per candidate for the downstream skill to render, and stitches style_gallery.html to pick from. Humanize emits only the spec and the commands; the covers are rendered downstream. Picking a cover yields a re-injection command that carries the chosen style into the normal flow. See references/style-gallery-spec.md.
V0.6.4 is the single entrypoint for this loop. The user calls Humanize PPT once for the brief, hands the brief to a downstream skill for native rendering, then calls Humanize PPT again with --qa-from <rendered.html> to run the 3-iteration presentation checkup. Each iteration writes qa_report.md (findings), fix_prompt.md (downstream-skill-actionable corrections), and qa_iteration.json (round state). After 3 rounds with remaining findings, status flips to needs-human.
Humanize PPT never copies a downstream skill's template, never injects custom sections into it, and never post-processes the rendered HTML. When the downstream skill updates, Humanize PPT needs zero changes. This is the contract — see references/guizang-production-brief-orchestrator.md for the full brief specification.
For public positioning, describe Humanize PPT as a brief orchestrator that pairs with native downstream renderers. Do not frame it as a renderer itself, and do not present it as a "router" that picks the best visual style for the user — that decision lives in the brief, the downstream skill's own templates, and the human's review. When a user only wants a pretty template page, that is a rendering-skill job, not a Humanize job: state the choice, not a prohibition.
AST theory
AST means Audience-State-Transfer.
- Audience: who is listening, what they know, what they resist, and why they would keep listening.
- State: the audience state before and after the deck, plus the core tension that blocks the transition.
- Transfer: the slide-by-slide path that moves the audience from initial state to desired state.
Core sentence:
PPT is not an information container. PPT is an audience state-transfer artifact.
Required output contract
For every Humanize PPT run, produce:
1. deck_brief.md — audience, goal, tension, success criteria. 2. ast_outline.md — AST map and narrative arc. 3. slide_plan.json — slide-by-slide plan, with per-page media: {image, diagram, video} decision and layout_hint. 4. speaker_intent.md — what the speaker should do on each slide. Downstream skills consume this as the source for their native speaker notes and presenter shell. 5. asset_manifest.md — Humanize's per-page material decisions: which page needs which kind of asset (image / diagram / video) and for what purpose. 6. video_slots.json — optional Remotion / HyperFrames / native video insertion plan. 7. style_brief.md — visual principle for downstream production. 8. renderer_registry.json — renderer capability snapshot for this run. 9. router_plan.json — selected primary renderer and staged route plan. 10. commands/*.md — bounded instructions for each downstream specialist agent. 11. run_manifest.json — final file inventory, route status, and QA status. 12. <renderer>-production-prompt.md — the production brief that the next agent consumes. v0.6.4 emits guizang-production-prompt.md, frontend-slides-production-prompt.md, or beautiful-html-templates-production-prompt.md depending on language and route. This file references the downstream skill's own SKILL.md and is the only thing the next agent needs to read. 13. outputs/qa/qa_report.md — first-pass QA gate (brief mode) or per-iteration QA findings (QA mode).
QA mode (post-render) additionally produces per iteration:
14. outputs/qa/fix_prompt.md — downstream-skill-actionable fix instructions. 15. outputs/qa/qa_iteration.json — round number, status (iterate / pass / needs-human), unresolved findings, history.
Style-gallery mode (--style-gallery, pre-outline gate) instead produces and stops:
16. style_gallery.html — zero-dependency picker stitching ≥4 candidate covers. 17. style_gallery_plan.json — per-candidate id, cli, command_file, cover paths, re-injection command. 18. commands/style-gallery/<id>.md — one cover-only render command per candidate (downstream renders only S01 → outputs/style-gallery/<id>/cover.{html,png}).
Recommended OPC workflow (v0.6.4)
O — Outline + Per-Page Media Direction
Humanize PPT: raw material → AST outline + per-page media decision
(deck_brief.md, ast_outline.md, slide_plan.json, speaker_intent.md,
asset_manifest.md, video_slots.json, style_brief.md)
P — Native Renderer Invocation (100% downstream)
zh → guizang-ppt-skill (Style A or B, native; recommended)
en → frontend-slides / beautiful-html-templates (native; recommended)
other HTML-PPT skills → hot-pluggable, same brief contract
Humanize emits the production prompt and stops. The downstream
skill renders the deck. Humanize does NOT copy templates, does
NOT inject SLIDES_HERE / [必填] replacements, does NOT add
postMessage bridges to the rendered HTML.
Q — Presentation Checkup (演讲体检) on the rendered HTML
Humanize --qa-from <rendered.html> reads the output of P,
compares pages against the outline, scans for failure modes
(references/qa-failure-modes.md), writes qa_report.md and
fix_prompt.md, tracks iteration in qa_iteration.json.
Cap: 3 rounds. After cap with remaining findings, status
flips to needs-human.
C — Complete / Control
Downstream skill native speaker notes + presenter shell + deploy
(Humanize does not own these in v0.6.4 — the brief tells the
next agent to produce them in the downstream skill's own format)Rules
v0.6.4 invariants (these are the hard rules; if you break any, you're off the v0.6.4 boundary)
1. Humanize is brief-only. It writes <renderer>-production-prompt.md and stops. It does not open, copy, or post-process the downstream skill's template. When the downstream skill updates its template, animation markers, or validator, Humanize needs zero changes. 2. Downstream renderers are 100% native. The next agent follows the downstream skill's own SKILL.md. The brief tells the next agent which skill to load, which Style (A/B) to use, which layouts to pick from, and which QA gates must pass — but it does not carry template internals. 3. The presentation checkup caps at 3 iterations. Round 4 with remaining fail findings is needs-human. The loop does not spin forever; it hands the decision back to a human. 4. Speaker notes and presenter shell — Humanize produces a baseline `presenter-shell.html`; downstream owns the full stage. Humanize owns the semantic source (speaker_intent.md) and now also writes outputs/presenter/presenter-shell.html directly from slide_plan.json + speaker_intent.md (usable standalone, even before the downstream deck exists). The downstream skill produces the native speaker notes and fuller presenter console. Humanize does not inject postMessage bridges or ?slide= URL parameters into the rendered HTML. 5. The brief is the only thing the next agent reads. It is a complete contract: deck metadata, per-page media decisions, style files, hard rules, known-good checkpoint, and per-style QA gates. The next agent does not need to re-derive intent from raw source material.
Working rules
6. Do not let slide renderers consume raw material directly when Humanize PPT can first produce the AST contract. 7. Keep the downstream skill as the owner of the full stage view; Humanize's presenter-shell.html is a functional baseline, not a replacement for native consoles. 8. Absorb AI-writing cleanup principles from humanizer tools, but do not reduce Humanize PPT to text polishing. 9. Prefer a small verified workflow over a broad unverified promise. 10. For public Skill releases, create/push the repo, install from GitHub locally, run one safe full sample, verify the brief + presentation checkup on the verified known-good checkpoint (examples/03-codex-guizang-native-ink-classic/), and only then polish README details. 11. For Agent Teams development, emit router_plan.json, run_manifest.json, bounded commands/*.md, and the per-renderer production prompt before wiring real downstream Skills. 12. For WorkBuddy/CodeBuddy team upload packages, do not package demo or rendered HTML outputs as the team zip. The upload zip must mirror a team-plugin structure like trading-team: root-level .codebuddy-plugin/plugin.json, agents/, skills/, rules/, and setting.json (plus optional avatars/, .workbuddy-plugin/, README.md, settings.json). The rules/ directory should include a scenario rule file such as rules/<plugin-name>_rules.md with frontmatter (description, alwaysApply, enabled, updatedAt, provider) and a <system_reminder> block describing available agents, skills, SOP, and usage requirements. Verify with unzip -l that the root is not index.html/assets/screenshots/source and is not folder-wrapped unless the target uploader explicitly requires a wrapper directory. 13. Do not treat HyperFrames/Remotion videos as a single embedded player that replaces PPT content. For Humanize PPT deliverables, video tools are material producers: transitions, explainer clips, before/after comparisons, talking-material inserts, social previews, and fallback stills that fill specific slide needs. The media.video decision per page (see slide_plan.json schema) tells the downstream skill which pages want a Remotion clip, for what purpose, and at what duration.
Renderer-specific guidance (kept for history; the boundary itself is the invariants above)
14. For Chinese PPT production, the recommended stable path is Humanize PPT → guizang-ppt-skill native → Humanize --qa-from → downstream presenter/deploy. Guizang's own material QA and Swiss validator run inside the downstream skill. The presentation checkup in Humanize is a second-pair-of-eyes pass, not a replacement. 15. For English PPT production, the recommended path is Humanize PPT → frontend-slides or beautiful-html-templates (native) → Humanize --qa-from → downstream deploy. The downstream skill owns its own template selection, preview gallery, and selected-template full deck. Humanize does not imitate them. v1.0 support levels (see registry/renderer_registry.json): both beautiful-html-templates and frontend-slides are now full — brief exit works, full presentation checkup ran on real decks, and 5 renderer-specific failure-mode rules added (horizontal overflow, low contrast, hyphenation noise, font contract, image alt). Screenshot review is still part of the checkup methodology for cases the static scan can't reach. 16. The verified Style A checkpoint at examples/03-codex-guizang-native-ink-classic/ is a read-only visual reference. If the presentation checkup ever fails against it (test_known_good_style_a_passes_all_style_a_gates), the fixture or the live Guizang skill has drifted — do not weaken the checkup to make the test pass. The same applies to the English checked-up deck at docs/showcase/hermes-agent-mastery/en/ppt/ (test_english_showcase_deck_passes_presentation_checkup).
Operational references
references/guizang-production-brief-orchestrator.md— v0.6.4 canonical brief specification. The human + agent-facing contract for what<renderer>-production-prompt.mdmust contain and what it must not contain.SPEC.md— engine technical specification: boundary, CLI surface (mode-check order), data flow, output contract, the v0.9 style gallery, the presentation checkup, the per-page media model, and the renderer registry. The authoritative "what the engine does and guarantees" reference.references/qa-failure-modes.md(+ English mirrorreferences/qa-failure-modes.en.md) — failure mode catalog for the presentation checkup (演讲体检): a renderer-agnostic failure-class layer plus guizang-specific modes, each with what the audience would see. Human-readable; the code-side source of truth isFAILURE_MODESinscripts/humanize_ppt_v2.py. Includes the WebGL-hero static-screenshot capture trap as a "static scan can't catch yet" class.references/style-gallery-spec.md— v0.9 spec for the--style-gallerycover-style gate: candidates, cover-only commands, the zero-dependency picker, re-injection, and the WebGL screenshot warning.scripts/preview_outline_html.py— outline preview: renders the audience state-transfer map (one zero-dependency single-file HTML; per-slide enter-state → intent → leave-state rows plus a state-arc summary) fromslide_plan.json. Real sample:examples/04-preview-outline-ai-tool-update/.scripts/record_demo_gif.py— records the style gallery + outline preview (the two zero-dependency working drafts) into one demo GIF (requires playwright + ffmpeg). The gallery covers are downstream-rendered;--covers-diroverlays real covers before recording.docs/versions/v0.9.0-style-gallery.md— v0.9 release notes: the cover-style gallery gate, the WebGL static-screenshot failure class, the English failure-mode mirror, SPEC.md, and the README/GIF-slot work.docs/versions/v0.8.0-presentation-checkup.md— v0.8.0 release notes: why the QA loop was renamed to presentation checkup, the hot-pluggable route framing, the plain-language usage rewrite, and the verified English checkup run.docs/versions/v0.7.0-render-qa-inspector.md— v0.7.0 release notes: why the positioning moved to render-QA inspector, English-path support levels, and the outline preview artifact.references/agent-teams-public-preview.md— Agent Teams architecture, specialist-agent command protocol, public preview release loop, and README split convention. (Historical; v0.6.4 collapses the Agent Teams model into a brief + QA loop.)references/humanize-ppt-public-writing.md— Public-facing positioning and article/script patterns: Humanize PPT as brief orchestrator, not a fixed 4-Skill bundle.references/workbuddy-team-packaging-and-video-materials.md— WorkBuddy/CodeBuddy team upload zip structure, validation script, scenario rules shape, and the Remotion/HyperFrames-as-material-producers pitfall.references/guizang-material-qa.md— Guizang downstream workflow, material production rules, Swiss visual QA checklist, and failure patterns learned from a full Humanize PPT → guizang deck pass. Caveat: these rules apply to the rendered HTML, not to the Humanize brief.references/guizang-presenter-deploy.md— Default Chinese PPT production path: guizang stable deck, material QA, presenter shell, and static deploy checks. Caveat: these rules apply to the rendered HTML, not to the Humanize brief.references/beautiful-preview-first-adapter.md— Durable adapter pattern for connectingbeautiful-html-templates: version boundary, template selection, real title-slide previews, manifests, QA, and pitfalls. (Historical; v0.6.4 hands template selection to the downstream skill.)references/selected-template-full-deck-adapter.md— Durable adapter pattern for V0.4 selected-template full deck generation: required artifacts, routing, QA, and TDD coverage. (Historical.)references/presenter-export-adapter.md— Durable adapter pattern for adding V0.5-style presenter shell and export package after a final deck exists. (Historical; v0.6.4 hands presenter/export to the downstream skill.)docs/versions/v0.6.4-guizang-production-brief-orchestrator.md— v0.6.4 release notes: what changed, lessons, boundaries, known-good checkpoint, QA loop cap.docs/versions/v0.2-router-edition.mdthroughv0.6.3-english-style-gallery.md— historical version notes, kept for context.docs/versions/v0.4-selected-template-full-deck.md— V0.4 Selected Template Full Deck notes:--selected-template, selected deck output, manifests, QA, and current boundaries.docs/versions/v0.5-presenter-export-adapter.md— V0.5 Presenter / Export Adapter notes:--presenter-adapter,--export-adapter, output artifacts, and boundaries.docs/versions/v0.6.1-guizang-material-qa.md— V0.6.1 Guizang material QA notes: downstream artifact recording, Remotion-as-material, SVG-safe Chinese diagrams, and visual review rules.docs/versions/v0.6.2-guizang-presenter-deploy.md— V0.6.2 Guizang presenter deploy notes: Chinese default path,postMessagepresenter shell, and public static showcase.docs/versions/v0.6.3-english-style-gallery.md— V0.6.3 English style gallery notes: theme-first gate, five visible style candidates, and selected-style continuation.docs/smoke-test.md— No-dependency smoke check for validating the stable entrypoint on machines without pytest.docs/plans/2026-05-25-release-readiness-checklist.md— V0.6 release-readiness checklist and release-note draft.
Local demo
The recommended stable entrypoint is scripts/humanize_ppt.py. Versioned scripts remain available for compatibility.
Brief mode (v0.6.4 default — writes a Guizang production brief, no HTML):
python3 scripts/humanize_ppt.py \
--source examples/01-ai-tool-update/source.md \
--out .humanize-ppt-runs/ai-tool-update-v0.6.4 \
--title "AI 工具更新,不只是功能清单" \
--renderer guizang \
--guizang-style AThe next agent reads guizang-production-prompt.md and renders natively via guizang-ppt-skill. Once the deck is rendered, run the presentation checkup:
python3 scripts/humanize_ppt.py \
--qa-from .humanize-ppt-runs/ai-tool-update-v0.6.4/rendered/index.html \
--out .humanize-ppt-runs/ai-tool-update-v0.6.4 \
--renderer guizang \
--guizang-style A \
--max-qa-iterations 3English paths use the same shape with --renderer beautiful-html-templates or --renderer frontend-slides, which write beautiful-html-templates-production-prompt.md or frontend-slides-production-prompt.md respectively. (v0.9: both beautiful-html-templates and frontend-slides are support_level: brief+qa-verified — beautiful after the 2026-06-13 real-deck checkup, frontend-slides after a real-deck checkup on 2026-06-17. The v0.9 style-gallery gate itself changed no support level — those move only on real rendered output.)
Outline preview (audience state-transfer map from an existing slide_plan.json, zero-dependency single-file HTML):
python3 scripts/preview_outline_html.py \
--slide-plan .humanize-ppt-runs/ai-tool-update-v0.6.4/slide_plan.json \
--out .humanize-ppt-runs/ai-tool-update-v0.6.4/preview-outline.html \
--title "AI 工具更新,不只是功能清单"The legacy V0.2-compatible entrypoint remains available for compatibility with earlier agents:
python3 scripts/humanize_ppt_v2.py \
--source examples/01-ai-tool-update/source.md \
--out .humanize-ppt-runs/ai-tool-update-v0.2 \
--title "AI 工具更新,不只是功能清单" \
--renderer autoLegacy V0.1 demo remains available:
python3 scripts/humanize_ppt_v1.py \
--source examples/01-ai-tool-update/source.md \
--out .humanize-ppt-runs/ai-tool-update \
--title "AI 工具更新,不只是功能清单"{
"name": "humanize-ppt",
"owner": { "name": "LearnPrompt", "url": "https://github.com/LearnPrompt" },
"metadata": { "description": "Marketplace hosting the Humanize PPT brief-orchestrator plugin." },
"plugins": [
{
"name": "humanize-ppt",
"description": "面向 Agent 的 PPT 渲染质检员:把资料编排成 AST 大纲+逐页素材决定的简报,交给下游 PPT Skill(中文推荐 guizang-ppt-skill,英文推荐 frontend-slides/beautiful-html-templates,广义兼容任何能产出 HTML PPT 的 skill)100%原生渲染。v0.9 出大纲前先过风格画廊:出 ≥4 个封面候选让下游各渲一张供人挑风格(Humanize 只出 spec/command 不自渲)。渲染完做演讲体检:逐页核对渲染结果和大纲页的差异,把只能看不能讲的页揪出来,写 fix prompt,3 轮封顶。Humanize 自己不渲染。PPT is an audience-state changer, not an information container.",
"version": "0.9.0",
"author": { "name": "LearnPrompt", "url": "https://github.com/LearnPrompt" },
"source": "./",
"category": "productivity",
"homepage": "https://github.com/LearnPrompt/humanize-ppt"
}
]
}
.DS_Store
.humanize-ppt-runs/
.hermes/
__pycache__/
Guizang Bridge Notes
V0.1 treats guizang as the Chinese stable rendering path. Do not import Zara templates into guizang; preserve guizang stability.
Presenter Adapter
V0.1 uses a shell-style presenter adapter.
It does not rewrite the rendered deck. It wraps it.
final/
deck/index.html
presenter/index.html
presenter/notes.jsonMinimum features:
- current slide preview
- next slide preview
- speaker notes
- timer
- keyboard navigation
- no visual mutation of the audience deck
Future bridge targets:
- generic hash navigation
- guizang-style deck bridge
- Zara deck-stage bridge
Zara Bridge Notes
V0.1 treats Zara as style exploration and HTML production path. Templates are not directly imported into guizang; they are separate rendering directions.
Asset Manifest
| asset_id | type | purpose | status |
|---|
AST Outline Schema
audience:
profile:
known_context:
blind_spots:
resistance:
state:
initial_state:
desired_state:
core_tension:
transfer_path:
- role:
purpose:
slide_ids:Deck Brief
Deck Goal
Audience
Initial State
Desired State
Core Tension
Success Criteria
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Humanize PPT Router Plan",
"type": "object",
"required": ["version", "generated_at", "title", "source", "primary_renderer", "routes"],
"properties": {
"version": {"type": "string"},
"generated_at": {"type": "string"},
"title": {"type": "string"},
"source": {"type": "string"},
"primary_renderer": {"type": "string"},
"routes": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "stage", "purpose", "reason", "command_file", "status"],
"properties": {
"id": {"type": "string"},
"stage": {"type": "string", "enum": ["outline", "produce", "complete", "control"]},
"purpose": {"type": "string"},
"reason": {"type": "string"},
"command_file": {"type": "string"},
"status": {"type": "string"},
"display_name": {"type": "string"},
"skill_name": {"type": "string"},
"expected_inputs": {"type": "array", "items": {"type": "string"}},
"expected_outputs": {"type": "array", "items": {"type": "string"}},
"actual_output": {"type": "string"}
}
}
}
}
}
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Humanize PPT Run Manifest",
"type": "object",
"required": ["version", "generated_at", "title", "source", "primary_renderer", "routes", "qa_status", "files"],
"properties": {
"version": {"type": "string"},
"generated_at": {"type": "string"},
"title": {"type": "string"},
"source": {"type": "string"},
"primary_renderer": {"type": "string"},
"routes": {"type": "array"},
"qa_status": {"type": "string", "enum": ["pass", "needs-fix"]},
"files": {"type": "array", "items": {"type": "string"}}
}
}
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Humanize PPT Slide Plan",
"description": "v0.6.4: each slide carries Humanize's per-page media decision (image/diagram/video) and a layout hint. Downstream skills consume this and produce their own native HTML.",
"type": "array",
"items": {
"type": "object",
"required": [
"slide_id",
"role",
"title",
"message",
"speaker_intent",
"media",
"layout_hint"
],
"properties": {
"slide_id": {
"type": "string",
"pattern": "^S[0-9]{2}$"
},
"role": {
"type": "string",
"enum": ["hook", "context", "tension", "method", "proof", "takeaway"]
},
"title": {
"type": "string"
},
"message": {
"type": "string"
},
"visible_content": {
"type": "array",
"items": {
"type": "string"
}
},
"speaker_intent": {
"type": "string"
},
"media": {
"type": "object",
"description": "v0.6.7: per-page media decision with machine-actionable fields. Humanize decides what materials the page needs AND where they should land. The downstream media subagent reads asset_path + prompt_hint and produces the file. Without asset_path, the media slot is a label, not a task (v0.6.5 gap).",
"required": ["image", "diagram", "video"],
"properties": {
"image": {
"type": "object",
"properties": {
"needed": {"type": "boolean"},
"kind": {
"type": "string",
"enum": ["gpt-photo", "svg-html", "screenshot", "none"]
},
"purpose": {"type": "string"},
"slot": {"type": "string"},
"asset_path": {
"type": ["string", "null"],
"description": "v0.6.7: where the downstream media subagent should write the file, e.g. 'assets/s01-hero-gpt-photo.png'. null means 'no asset needed'."
},
"prompt_hint": {
"type": "string",
"description": "v0.6.7: human-readable prompt for the image model. e.g. 'AI Agent 概念入门 封面图,10 分钟课程'."
},
"aspect_ratio": {
"type": "string",
"enum": ["16:9", "21:9", "4:3", "1:1", "9:16"]
},
"max_size_kb": {"type": "number"}
}
},
"diagram": {
"type": "object",
"properties": {
"needed": {"type": "boolean"},
"kind": {
"type": "string",
"enum": ["svg-html", "html-table", "none"]
},
"purpose": {"type": "string"},
"slot": {"type": "string"},
"asset_path": {
"type": ["string", "null"],
"description": "v0.6.7: where the SVG/HTML file should land. e.g. 'assets/s05-context-diagram.svg'."
},
"prompt_hint": {
"type": "string",
"description": "v0.6.7: what the diagram should depict, in plain language. The downstream subagent renders it as inline SVG or HTML."
}
}
},
"video": {
"type": "object",
"properties": {
"needed": {"type": "boolean"},
"kind": {
"type": "string",
"enum": ["remotion-clip", "hyperframes", "none"]
},
"purpose": {"type": "string"},
"slot": {"type": "string"},
"duration_s": {"type": "number"},
"asset_path": {
"type": ["string", "null"],
"description": "v0.6.7: where the rendered video file should land. e.g. 'assets/s04-method-remotion.mp4'."
},
"prompt_hint": {
"type": "string",
"description": "v0.6.7: what the video should depict / what motion should it have."
}
}
}
}
},
"layout_hint": {
"type": ["string", "null"],
"description": "A registered layout ID (e.g. 'S07-process-21x9') or template slug suggestion. Downstream skills must pick from their own registered set, not from this hint."
},
"recommended_renderer": {
"type": "string"
}
}
}
}
Speaker Intent
Slide 1
- Intent:
- Say:
- Do not say:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Humanize PPT Video Slots",
"type": "array",
"items": {
"type": "object",
"properties": {
"video_id": {
"type": "string"
},
"slide_id": {
"type": "string"
},
"purpose": {
"type": "string"
},
"duration_seconds": {
"type": "number"
},
"aspect_ratio": {
"type": "string"
},
"fallback_static": {
"type": "string"
}
}
}
}Humanize PPT Agent Teams
结论
Humanize PPT 的下一阶段不是把更多 PPT 工具塞进一个 Skill,而是做成一个 Agent Teams Orchestrator。
Humanize PPT Agent 是主 Agent。它加载 humanize-ppt Skill,负责 AST 大纲、任务拆解、路由决策、产物验收和交付编排。下游每个专门 Agent 加载一个明确的 Skill,只负责自己的那一段工作。
Humanize PPT Agent / Main Orchestrator
→ Guizang Agent / 中文稳定
→ Zara Agent / 风格探索 + HTML 生成 + 上线
→ HyperFrames Agent / 视频片段
→ Presenter Agent / 演讲模式
→ QA Agent / 内容、视觉、路径、交付检查这能解释清楚:Humanize PPT 不是 PPT 模板合集,而是控制 Agent Team 干活的主控层。
---
1. 主 Agent:Humanize PPT Agent
加载 Skill
humanize-ppt职责
Humanize PPT Agent 不直接承担所有生成任务。它负责:
1. 读取原始资料; 2. 按 AST 理论生成观众状态转移路径; 3. 输出标准生产契约; 4. 判断应该调用哪些 Skill Agent; 5. 给每个子 Agent 下发明确命令; 6. 汇总产物; 7. 做最终 QA; 8. 决定是否进入演讲模式、上线或导出。
输入
source.md / doc / pdf / transcript / old slides输出
workdir/
deck_brief.md
ast_outline.md
slide_plan.json
speaker_intent.md
asset_manifest.md
video_slots.json
router_plan.json
run_manifest.json---
2. 子 Agent 分工
2.1 Guizang Agent:中文稳定
加载 Skill
guizang-ppt-skill适合任务
- 中文内容稳定成稿;
- 中文标题和排版优先;
- 不需要太多视觉方向探索;
- 需要快速得到可讲的 HTML PPT。
接收输入
slide_plan.json
speaker_intent.md
asset_manifest.md输出
outputs/guizang/
index.html
assets/
render_report.md---
2.2 Zara Agent:风格探索 + HTML 生成 + 上线
加载 Skill
frontend-slides
# 或同作者 Zara templates 相关能力适合任务
- 多视觉方向预览;
- 模板探索;
- 更强传播感;
- 需要上线或导出完整 HTML。
接收输入
slide_plan.json
style_brief.md
asset_manifest.md输出
outputs/zara/
directions/
direction-a/index.html
direction-b/index.html
direction-c/index.html
selected/index.html
deploy_url.txt
render_report.md---
2.3 HyperFrames Agent:视频片段
加载 Skill
hyperframes / video generation workflow适合任务
- 页面中需要动态解释;
- 中间插入视频;
- 需要把某个流程做成短动效;
- 需要为 PPT 准备 video slots。
接收输入
video_slots.json
asset_manifest.md
style_brief.md输出
outputs/hyperframes/
videos/
poster_frames/
video_report.md---
2.4 Presenter Agent:演讲模式
加载 Skill
html-ppt-skill
# 或 presenter-adapter runtime适合任务
- PPT 已经定稿;
- 需要当前页/下一页;
- 需要 speaker notes;
- 需要计时器和演讲控制;
- 需要 audience view / speaker view 分离。
关键原则
演讲模式不是一种 PPT 风格,而是 PPT 定稿后的增强层。
接收输入
selected_deck/index.html
speaker_intent.md
slide_plan.json输出
outputs/presenter/
index.html
notes.json
presenter_report.md---
2.5 QA Agent:质检与交付
加载 Skill
humanize-ppt
# 可叠加 requesting-code-review / visual QA / deployment checks职责
- 检查 AST 是否被保留;
- 检查页面是否塞入模型推理噪音;
- 检查中文标题是否自然;
- 检查文字是否溢出;
- 检查视频路径、图片路径;
- 检查 presenter 是否能打开;
- 检查 deploy URL 是否 200。
输出
outputs/qa/
qa_report.md
fix_list.md
final_manifest.json---
3. Router Plan
主 Agent 生成 router_plan.json,决定每个子 Agent 是否运行。
示例:
{
"source": "examples/02-hermes-install-guide/source.md",
"goal": "做成适合讲解 Hermes 安装逻辑的 PPT",
"routes": [
{
"agent": "guizang-agent",
"skill": "guizang-ppt-skill",
"purpose": "生成中文稳定版"
},
{
"agent": "zara-agent",
"skill": "frontend-slides",
"purpose": "生成三个风格探索方向并准备上线"
},
{
"agent": "presenter-agent",
"skill": "html-ppt-skill",
"purpose": "在最终选定的 deck 外层增加演讲者模式"
},
{
"agent": "qa-agent",
"skill": "humanize-ppt",
"purpose": "验收内容、人感、路径、演讲模式和上线 URL"
}
]
}---
4. 命令式协作协议
每个子 Agent 都应被主 Agent 用明确命令调用,不能自由发挥。
命令格式
You are [Agent Name].
Load skill: [Skill Name].
Input directory: [workdir]
Read:
- deck_brief.md
- ast_outline.md
- slide_plan.json
- speaker_intent.md
- asset_manifest.md
Task:
[exact task]
Write outputs to:
[exact output directory]
Do not:
- rewrite the AST goal
- consume raw source unless explicitly allowed
- change another agent's outputs
- invent missing assets without marking them
Return:
- output paths
- decisions made
- known issues
- verification result---
5. V0.2 开发目标
V0.2 的目标不是一次性自动化所有外部 Skill,而是先做出可验证的 Agent Teams 骨架。
V0.2 Scope
1. 增加 router_plan.json; 2. 增加 run_manifest.json; 3. 增加 commands/ 目录,保存给每个子 Agent 的命令; 4. 增加 outputs/ 目录规范; 5. 在本地 Demo Runner 中模拟 Agent Team 全流程; 6. 先接通一个真实子 Agent 路径,优先 guizang 或 Zara; 7. Presenter Adapter 继续作为后处理层; 8. QA Agent 必须输出验收报告。
非目标
- 不在 V0.2 里强行实现所有 Skill 的真实调用;
- 不把所有模板互转;
- 不让子 Agent 直接读原始资料;
- 不把演讲模式和上线绑定在一起。
---
6. 一句话产品表达
Humanize PPT Agent 是 PPT Agent Team 的主控大脑:先用 AST 把资料变成人感大纲,再指挥 guizang、Zara、HyperFrames、Presenter 等专门 Agent 分工完成页面、视频、演讲模式和上线交付。
AST Theory
AST = Audience-State-Transfer.
PPT is not an information container. PPT is an audience state-transfer artifact.
Humanize PPT exists because AI-generated decks often fail before visual rendering starts: raw material is passed directly into a slide generator, so the model's reasoning noise, explanatory habits, summary voice, and overstuffed structure leak into the final slides.
A — Audience
Ask first:
- Who is listening?
- What do they already know?
- What do they not realize yet?
- What do they resist?
- Why would they keep listening?
- What judgment or action should they make after the deck?
S — State
A deck should change an audience state.
initial_state: "Before seeing the deck"
desired_state: "After seeing the deck"
core_tension: "The main cognitive resistance"
state_shift: "The transition the deck must create"T — Transfer
Transfer is not a table of contents. It is the audience's psychological path.
transfer_path:
- role: hook
purpose: grab attention
- role: conflict
purpose: break the old frame
- role: method
purpose: explain the new frame
- role: proof
purpose: build trust with evidence / demo
- role: takeaway
purpose: leave a portable judgmentExperience sources
AST abstracts lessons from several operating styles:
- Karpathy-style structure: explicit assumptions, small viable structures, and verifiable implementation paths.
- Jobs-style presentation: first-screen clarity, ruthless hierarchy, taste, and subtraction.
- Musk-style propagation: tension, screenshot value, memetic hooks, and public discussion energy.
- Garry Tan / YC Office Hours: real user need, narrow wedge, falsifiable assumptions, and product value.
- Humanizer / humanizer-zh: remove AI writing traces, filler phrases, fake significance, and mechanical rhythm.
- Carl's PPT testing practice: AI PPTs often look finished but fail because they do not know what the presenter is trying to make the audience feel, understand, and do.
Acceptance test
A Humanize PPT outline is valid only if it answers:
1. Who is the audience? 2. What is the initial state? 3. What is the desired state? 4. What is the core tension? 5. How does each slide move the state forward? 6. Which renderer / adapter should complete the job?
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="robots" content="noindex,nofollow">
<title>Humanize PPT Demo Roadmap</title>
<style>
body {
margin: 0;
min-height: 100vh;
display: grid;
place-items: center;
background: #f7f3eb;
color: #181512;
font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Noto Sans SC", sans-serif;
line-height: 1.7;
}
main {
width: min(760px, calc(100vw - 40px));
padding: 48px 0;
}
.eyebrow {
margin: 0 0 14px;
color: #7f2a1d;
font-size: 12px;
font-weight: 700;
letter-spacing: .18em;
text-transform: uppercase;
}
h1 {
margin: 0;
font-size: clamp(36px, 7vw, 72px);
line-height: 1;
letter-spacing: 0;
}
p {
margin: 22px 0;
color: #6b6258;
font-size: 18px;
}
ul {
margin: 0 0 28px;
padding-left: 20px;
color: #6b6258;
}
a {
color: #7f2a1d;
font-weight: 700;
}
</style>
</head>
<body>
<main>
<p class="eyebrow">Humanize PPT · Roadmap</p>
<h1>Demo 暂不开放</h1>
<p>风格探索、演讲者模式和其他生成模式还没有完成稳定调试,公开入口先隐藏。</p>
<ul>
<li>先保留已调好的 Skill 分享 PPT 展示页。</li>
<li>完成输出链路校验后再恢复多模式在线 Demo。</li>
<li>补齐讲稿、翻页控制和展示页质量检查。</li>
</ul>
<p><a href="https://learnprompt.github.io/humanize-ppt/">返回 Humanize PPT 首页</a></p>
</main>
</body>
</html>
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="robots" content="noindex,nofollow">
<title>Humanize PPT Demo Roadmap</title>
<style>
body {
margin: 0;
min-height: 100vh;
display: grid;
place-items: center;
background: #f7f3eb;
color: #181512;
font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Noto Sans SC", sans-serif;
line-height: 1.7;
}
main {
width: min(760px, calc(100vw - 40px));
padding: 48px 0;
}
.eyebrow {
margin: 0 0 14px;
color: #7f2a1d;
font-size: 12px;
font-weight: 700;
letter-spacing: .18em;
text-transform: uppercase;
}
h1 {
margin: 0;
font-size: clamp(36px, 7vw, 72px);
line-height: 1;
letter-spacing: 0;
}
p {
margin: 22px 0;
color: #6b6258;
font-size: 18px;
}
ul {
margin: 0 0 28px;
padding-left: 20px;
color: #6b6258;
}
a {
color: #7f2a1d;
font-weight: 700;
}
</style>
</head>
<body>
<main>
<p class="eyebrow">Humanize PPT · Roadmap</p>
<h1>Demo 暂不开放</h1>
<p>风格探索、演讲者模式和其他生成模式还没有完成稳定调试,公开入口先隐藏。</p>
<ul>
<li>先保留已调好的 Skill 分享 PPT 展示页。</li>
<li>完成输出链路校验后再恢复多模式在线 Demo。</li>
<li>补齐讲稿、翻页控制和展示页质量检查。</li>
</ul>
<p><a href="https://learnprompt.github.io/humanize-ppt/">返回 Humanize PPT 首页</a></p>
</main>
</body>
</html>
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="robots" content="noindex,nofollow">
<title>Humanize PPT Demo Roadmap</title>
<style>
body {
margin: 0;
min-height: 100vh;
display: grid;
place-items: center;
background: #f7f3eb;
color: #181512;
font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Noto Sans SC", sans-serif;
line-height: 1.7;
}
main {
width: min(760px, calc(100vw - 40px));
padding: 48px 0;
}
.eyebrow {
margin: 0 0 14px;
color: #7f2a1d;
font-size: 12px;
font-weight: 700;
letter-spacing: .18em;
text-transform: uppercase;
}
h1 {
margin: 0;
font-size: clamp(36px, 7vw, 72px);
line-height: 1;
letter-spacing: 0;
}
p {
margin: 22px 0;
color: #6b6258;
font-size: 18px;
}
ul {
margin: 0 0 28px;
padding-left: 20px;
color: #6b6258;
}
a {
color: #7f2a1d;
font-weight: 700;
}
</style>
</head>
<body>
<main>
<p class="eyebrow">Humanize PPT · Roadmap</p>
<h1>Demo 暂不开放</h1>
<p>风格探索、演讲者模式和其他生成模式还没有完成稳定调试,公开入口先隐藏。</p>
<ul>
<li>先保留已调好的 Skill 分享 PPT 展示页。</li>
<li>完成输出链路校验后再恢复多模式在线 Demo。</li>
<li>补齐讲稿、翻页控制和展示页质量检查。</li>
</ul>
<p><a href="https://learnprompt.github.io/humanize-ppt/">返回 Humanize PPT 首页</a></p>
</main>
</body>
</html>
[
{
"slide_id": "S01",
"title": "把 Hermes 装成一个真正能干活的 Agent",
"note": "抓住注意力:观众已经对功能清单疲劳。",
"say": "AI 工具每天都在更新,但真正的问题不是功能有没有。"
},
{
"slide_id": "S02",
"title": "如果直接把资料塞进 PPT,模型噪音会进入页面",
"note": "制造张力:漂亮页面不等于可讲结构。",
"say": "如果直接把资料塞进 PPT,模型噪音会进入页面。"
},
{
"slide_id": "S03",
"title": "Humanize PPT 先用 AST 把资料变成观众路径",
"note": "解释方法:Audience、State、Transfer。",
"say": "Humanize PPT 先用 AST 把资料变成观众路径。"
},
{
"slide_id": "S04",
"title": "同一份资料可以走中文稳定、风格探索、演讲增强、上线交付",
"note": "给出证据:工作流不是模板拼盘。",
"say": "同一份资料可以走中文稳定、风格探索、演讲增强、上线交付。"
},
{
"slide_id": "S05",
"title": "先定内容,再定风格;先出 PPT,再加演讲",
"note": "收束成可带走原则。",
"say": "先定内容,再定风格;先出 PPT,再加演讲。"
}
]<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="robots" content="noindex,nofollow">
<title>Humanize PPT Demo Roadmap</title>
<style>
body {
margin: 0;
min-height: 100vh;
display: grid;
place-items: center;
background: #f7f3eb;
color: #181512;
font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Noto Sans SC", sans-serif;
line-height: 1.7;
}
main {
width: min(760px, calc(100vw - 40px));
padding: 48px 0;
}
.eyebrow {
margin: 0 0 14px;
color: #7f2a1d;
font-size: 12px;
font-weight: 700;
letter-spacing: .18em;
text-transform: uppercase;
}
h1 {
margin: 0;
font-size: clamp(36px, 7vw, 72px);
line-height: 1;
letter-spacing: 0;
}
p {
margin: 22px 0;
color: #6b6258;
font-size: 18px;
}
ul {
margin: 0 0 28px;
padding-left: 20px;
color: #6b6258;
}
a {
color: #7f2a1d;
font-weight: 700;
}
</style>
</head>
<body>
<main>
<p class="eyebrow">Humanize PPT · Roadmap</p>
<h1>Demo 暂不开放</h1>
<p>风格探索、演讲者模式和其他生成模式还没有完成稳定调试,公开入口先隐藏。</p>
<ul>
<li>先保留已调好的 Skill 分享 PPT 展示页。</li>
<li>完成输出链路校验后再恢复多模式在线 Demo。</li>
<li>补齐讲稿、翻页控制和展示页质量检查。</li>
</ul>
<p><a href="https://learnprompt.github.io/humanize-ppt/">返回 Humanize PPT 首页</a></p>
</main>
</body>
</html>
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="robots" content="noindex,nofollow">
<title>Humanize PPT Demo Roadmap</title>
<style>
body {
margin: 0;
min-height: 100vh;
display: grid;
place-items: center;
background: #f7f3eb;
color: #181512;
font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Noto Sans SC", sans-serif;
line-height: 1.7;
}
main {
width: min(760px, calc(100vw - 40px));
padding: 48px 0;
}
.eyebrow {
margin: 0 0 14px;
color: #7f2a1d;
font-size: 12px;
font-weight: 700;
letter-spacing: .18em;
text-transform: uppercase;
}
h1 {
margin: 0;
font-size: clamp(36px, 7vw, 72px);
line-height: 1;
letter-spacing: 0;
}
p {
margin: 22px 0;
color: #6b6258;
font-size: 18px;
}
ul {
margin: 0 0 28px;
padding-left: 20px;
color: #6b6258;
}
a {
color: #7f2a1d;
font-weight: 700;
}
</style>
</head>
<body>
<main>
<p class="eyebrow">Humanize PPT · Roadmap</p>
<h1>Demo 暂不开放</h1>
<p>风格探索、演讲者模式和其他生成模式还没有完成稳定调试,公开入口先隐藏。</p>
<ul>
<li>先保留已调好的 Skill 分享 PPT 展示页。</li>
<li>完成输出链路校验后再恢复多模式在线 Demo。</li>
<li>补齐讲稿、翻页控制和展示页质量检查。</li>
</ul>
<p><a href="https://learnprompt.github.io/humanize-ppt/">返回 Humanize PPT 首页</a></p>
</main>
</body>
</html>
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="robots" content="noindex,nofollow">
<title>Humanize PPT Demo Roadmap</title>
<style>
body {
margin: 0;
min-height: 100vh;
display: grid;
place-items: center;
background: #f7f3eb;
color: #181512;
font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Noto Sans SC", sans-serif;
line-height: 1.7;
}
main {
width: min(760px, calc(100vw - 40px));
padding: 48px 0;
}
.eyebrow {
margin: 0 0 14px;
color: #7f2a1d;
font-size: 12px;
font-weight: 700;
letter-spacing: .18em;
text-transform: uppercase;
}
h1 {
margin: 0;
font-size: clamp(36px, 7vw, 72px);
line-height: 1;
letter-spacing: 0;
}
p {
margin: 22px 0;
color: #6b6258;
font-size: 18px;
}
ul {
margin: 0 0 28px;
padding-left: 20px;
color: #6b6258;
}
a {
color: #7f2a1d;
font-weight: 700;
}
</style>
</head>
<body>
<main>
<p class="eyebrow">Humanize PPT · Roadmap</p>
<h1>Demo 暂不开放</h1>
<p>风格探索、演讲者模式和其他生成模式还没有完成稳定调试,公开入口先隐藏。</p>
<ul>
<li>先保留已调好的 Skill 分享 PPT 展示页。</li>
<li>完成输出链路校验后再恢复多模式在线 Demo。</li>
<li>补齐讲稿、翻页控制和展示页质量检查。</li>
</ul>
<p><a href="https://learnprompt.github.io/humanize-ppt/">返回 Humanize PPT 首页</a></p>
</main>
</body>
</html>
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="robots" content="noindex,nofollow">
<title>Humanize PPT Demo Roadmap</title>
<style>
body {
margin: 0;
min-height: 100vh;
display: grid;
place-items: center;
background: #f7f3eb;
color: #181512;
font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Noto Sans SC", sans-serif;
line-height: 1.7;
}
main {
width: min(760px, calc(100vw - 40px));
padding: 48px 0;
}
.eyebrow {
margin: 0 0 14px;
color: #7f2a1d;
font-size: 12px;
font-weight: 700;
letter-spacing: .18em;
text-transform: uppercase;
}
h1 {
margin: 0;
font-size: clamp(36px, 7vw, 72px);
line-height: 1;
letter-spacing: 0;
}
p {
margin: 22px 0;
color: #6b6258;
font-size: 18px;
}
ul {
margin: 0 0 28px;
padding-left: 20px;
color: #6b6258;
}
a {
color: #7f2a1d;
font-weight: 700;
}
</style>
</head>
<body>
<main>
<p class="eyebrow">Humanize PPT · Roadmap</p>
<h1>Demo 暂不开放</h1>
<p>风格探索、演讲者模式和其他生成模式还没有完成稳定调试,公开入口先隐藏。</p>
<ul>
<li>先保留已调好的 Skill 分享 PPT 展示页。</li>
<li>完成输出链路校验后再恢复多模式在线 Demo。</li>
<li>补齐讲稿、翻页控制和展示页质量检查。</li>
</ul>
<p><a href="https://learnprompt.github.io/humanize-ppt/">返回 Humanize PPT 首页</a></p>
</main>
</body>
</html>
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="robots" content="noindex,nofollow">
<title>Humanize PPT Demo Roadmap</title>
<style>
body {
margin: 0;
min-height: 100vh;
display: grid;
place-items: center;
background: #f7f3eb;
color: #181512;
font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Noto Sans SC", sans-serif;
line-height: 1.7;
}
main {
width: min(760px, calc(100vw - 40px));
padding: 48px 0;
}
.eyebrow {
margin: 0 0 14px;
color: #7f2a1d;
font-size: 12px;
font-weight: 700;
letter-spacing: .18em;
text-transform: uppercase;
}
h1 {
margin: 0;
font-size: clamp(36px, 7vw, 72px);
line-height: 1;
letter-spacing: 0;
}
p {
margin: 22px 0;
color: #6b6258;
font-size: 18px;
}
ul {
margin: 0 0 28px;
padding-left: 20px;
color: #6b6258;
}
a {
color: #7f2a1d;
font-weight: 700;
}
</style>
</head>
<body>
<main>
<p class="eyebrow">Humanize PPT · Roadmap</p>
<h1>Demo 暂不开放</h1>
<p>风格探索、演讲者模式和其他生成模式还没有完成稳定调试,公开入口先隐藏。</p>
<ul>
<li>先保留已调好的 Skill 分享 PPT 展示页。</li>
<li>完成输出链路校验后再恢复多模式在线 Demo。</li>
<li>补齐讲稿、翻页控制和展示页质量检查。</li>
</ul>
<p><a href="https://learnprompt.github.io/humanize-ppt/">返回 Humanize PPT 首页</a></p>
</main>
</body>
</html>
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="robots" content="noindex,nofollow">
<title>Humanize PPT Demo Roadmap</title>
<style>
body {
margin: 0;
min-height: 100vh;
display: grid;
place-items: center;
background: #f7f3eb;
color: #181512;
font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Noto Sans SC", sans-serif;
line-height: 1.7;
}
main {
width: min(760px, calc(100vw - 40px));
padding: 48px 0;
}
.eyebrow {
margin: 0 0 14px;
color: #7f2a1d;
font-size: 12px;
font-weight: 700;
letter-spacing: .18em;
text-transform: uppercase;
}
h1 {
margin: 0;
font-size: clamp(36px, 7vw, 72px);
line-height: 1;
letter-spacing: 0;
}
p {
margin: 22px 0;
color: #6b6258;
font-size: 18px;
}
ul {
margin: 0 0 28px;
padding-left: 20px;
color: #6b6258;
}
a {
color: #7f2a1d;
font-weight: 700;
}
</style>
</head>
<body>
<main>
<p class="eyebrow">Humanize PPT · Roadmap</p>
<h1>Demo 暂不开放</h1>
<p>风格探索、演讲者模式和其他生成模式还没有完成稳定调试,公开入口先隐藏。</p>
<ul>
<li>先保留已调好的 Skill 分享 PPT 展示页。</li>
<li>完成输出链路校验后再恢复多模式在线 Demo。</li>
<li>补齐讲稿、翻页控制和展示页质量检查。</li>
</ul>
<p><a href="https://learnprompt.github.io/humanize-ppt/">返回 Humanize PPT 首页</a></p>
</main>
</body>
</html>
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="robots" content="noindex,nofollow">
<title>Humanize PPT Demo Roadmap</title>
<style>
body {
margin: 0;
min-height: 100vh;
display: grid;
place-items: center;
background: #f7f3eb;
color: #181512;
font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Noto Sans SC", sans-serif;
line-height: 1.7;
}
main {
width: min(760px, calc(100vw - 40px));
padding: 48px 0;
}
.eyebrow {
margin: 0 0 14px;
color: #7f2a1d;
font-size: 12px;
font-weight: 700;
letter-spacing: .18em;
text-transform: uppercase;
}
h1 {
margin: 0;
font-size: clamp(36px, 7vw, 72px);
line-height: 1;
letter-spacing: 0;
}
p {
margin: 22px 0;
color: #6b6258;
font-size: 18px;
}
ul {
margin: 0 0 28px;
padding-left: 20px;
color: #6b6258;
}
a {
color: #7f2a1d;
font-weight: 700;
}
</style>
</head>
<body>
<main>
<p class="eyebrow">Humanize PPT · Roadmap</p>
<h1>Demo 暂不开放</h1>
<p>风格探索、演讲者模式和其他生成模式还没有完成稳定调试,公开入口先隐藏。</p>
<ul>
<li>先保留已调好的 Skill 分享 PPT 展示页。</li>
<li>完成输出链路校验后再恢复多模式在线 Demo。</li>
<li>补齐讲稿、翻页控制和展示页质量检查。</li>
</ul>
<p><a href="https://learnprompt.github.io/humanize-ppt/">返回 Humanize PPT 首页</a></p>
</main>
</body>
</html>
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="robots" content="noindex,nofollow">
<title>Humanize PPT Demo Roadmap</title>
<style>
body {
margin: 0;
min-height: 100vh;
display: grid;
place-items: center;
background: #f7f3eb;
color: #181512;
font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Noto Sans SC", sans-serif;
line-height: 1.7;
}
main {
width: min(760px, calc(100vw - 40px));
padding: 48px 0;
}
.eyebrow {
margin: 0 0 14px;
color: #7f2a1d;
font-size: 12px;
font-weight: 700;
letter-spacing: .18em;
text-transform: uppercase;
}
h1 {
margin: 0;
font-size: clamp(36px, 7vw, 72px);
line-height: 1;
letter-spacing: 0;
}
p {
margin: 22px 0;
color: #6b6258;
font-size: 18px;
}
ul {
margin: 0 0 28px;
padding-left: 20px;
color: #6b6258;
}
a {
color: #7f2a1d;
font-weight: 700;
}
</style>
</head>
<body>
<main>
<p class="eyebrow">Humanize PPT · Roadmap</p>
<h1>Demo 暂不开放</h1>
<p>风格探索、演讲者模式和其他生成模式还没有完成稳定调试,公开入口先隐藏。</p>
<ul>
<li>先保留已调好的 Skill 分享 PPT 展示页。</li>
<li>完成输出链路校验后再恢复多模式在线 Demo。</li>
<li>补齐讲稿、翻页控制和展示页质量检查。</li>
</ul>
<p><a href="https://learnprompt.github.io/humanize-ppt/">返回 Humanize PPT 首页</a></p>
</main>
</body>
</html>
[
{
"slide_id": "S01",
"title": "AI 工具更新,不只是功能清单",
"note": "抓住注意力:观众已经对功能清单疲劳。",
"say": "AI 工具每天都在更新,但真正的问题不是功能有没有。"
},
{
"slide_id": "S02",
"title": "如果直接把资料塞进 PPT,模型噪音会进入页面",
"note": "制造张力:漂亮页面不等于可讲结构。",
"say": "如果直接把资料塞进 PPT,模型噪音会进入页面。"
},
{
"slide_id": "S03",
"title": "Humanize PPT 先用 AST 把资料变成观众路径",
"note": "解释方法:Audience、State、Transfer。",
"say": "Humanize PPT 先用 AST 把资料变成观众路径。"
},
{
"slide_id": "S04",
"title": "同一份资料可以走中文稳定、风格探索、演讲增强、上线交付",
"note": "给出证据:工作流不是模板拼盘。",
"say": "同一份资料可以走中文稳定、风格探索、演讲增强、上线交付。"
},
{
"slide_id": "S05",
"title": "先定内容,再定风格;先出 PPT,再加演讲",
"note": "收束成可带走原则。",
"say": "先定内容,再定风格;先出 PPT,再加演讲。"
}
]<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="robots" content="noindex,nofollow">
<title>Humanize PPT Demo Roadmap</title>
<style>
body {
margin: 0;
min-height: 100vh;
display: grid;
place-items: center;
background: #f7f3eb;
color: #181512;
font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Noto Sans SC", sans-serif;
line-height: 1.7;
}
main {
width: min(760px, calc(100vw - 40px));
padding: 48px 0;
}
.eyebrow {
margin: 0 0 14px;
color: #7f2a1d;
font-size: 12px;
font-weight: 700;
letter-spacing: .18em;
text-transform: uppercase;
}
h1 {
margin: 0;
font-size: clamp(36px, 7vw, 72px);
line-height: 1;
letter-spacing: 0;
}
p {
margin: 22px 0;
color: #6b6258;
font-size: 18px;
}
ul {
margin: 0 0 28px;
padding-left: 20px;
color: #6b6258;
}
a {
color: #7f2a1d;
font-weight: 700;
}
</style>
</head>
<body>
<main>
<p class="eyebrow">Humanize PPT · Roadmap</p>
<h1>Demo 暂不开放</h1>
<p>风格探索、演讲者模式和其他生成模式还没有完成稳定调试,公开入口先隐藏。</p>
<ul>
<li>先保留已调好的 Skill 分享 PPT 展示页。</li>
<li>完成输出链路校验后再恢复多模式在线 Demo。</li>
<li>补齐讲稿、翻页控制和展示页质量检查。</li>
</ul>
<p><a href="https://learnprompt.github.io/humanize-ppt/">返回 Humanize PPT 首页</a></p>
</main>
</body>
</html>
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="robots" content="noindex,nofollow">
<title>Humanize PPT Demo Roadmap</title>
<style>
body {
margin: 0;
min-height: 100vh;
display: grid;
place-items: center;
background: #f7f3eb;
color: #181512;
font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Noto Sans SC", sans-serif;
line-height: 1.7;
}
main {
width: min(760px, calc(100vw - 40px));
padding: 48px 0;
}
.eyebrow {
margin: 0 0 14px;
color: #7f2a1d;
font-size: 12px;
font-weight: 700;
letter-spacing: .18em;
text-transform: uppercase;
}
h1 {
margin: 0;
font-size: clamp(36px, 7vw, 72px);
line-height: 1;
letter-spacing: 0;
}
p {
margin: 22px 0;
color: #6b6258;
font-size: 18px;
}
ul {
margin: 0 0 28px;
padding-left: 20px;
color: #6b6258;
}
a {
color: #7f2a1d;
font-weight: 700;
}
</style>
</head>
<body>
<main>
<p class="eyebrow">Humanize PPT · Roadmap</p>
<h1>Demo 暂不开放</h1>
<p>风格探索、演讲者模式和其他生成模式还没有完成稳定调试,公开入口先隐藏。</p>
<ul>
<li>先保留已调好的 Skill 分享 PPT 展示页。</li>
<li>完成输出链路校验后再恢复多模式在线 Demo。</li>
<li>补齐讲稿、翻页控制和展示页质量检查。</li>
</ul>
<p><a href="https://learnprompt.github.io/humanize-ppt/">返回 Humanize PPT 首页</a></p>
</main>
</body>
</html>
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="robots" content="noindex,nofollow">
<title>Humanize PPT Demo Roadmap</title>
<style>
body {
margin: 0;
min-height: 100vh;
display: grid;
place-items: center;
background: #f7f3eb;
color: #181512;
font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Noto Sans SC", sans-serif;
line-height: 1.7;
}
main {
width: min(760px, calc(100vw - 40px));
padding: 48px 0;
}
.eyebrow {
margin: 0 0 14px;
color: #7f2a1d;
font-size: 12px;
font-weight: 700;
letter-spacing: .18em;
text-transform: uppercase;
}
h1 {
margin: 0;
font-size: clamp(36px, 7vw, 72px);
line-height: 1;
letter-spacing: 0;
}
p {
margin: 22px 0;
color: #6b6258;
font-size: 18px;
}
ul {
margin: 0 0 28px;
padding-left: 20px;
color: #6b6258;
}
a {
color: #7f2a1d;
font-weight: 700;
}
</style>
</head>
<body>
<main>
<p class="eyebrow">Humanize PPT · Roadmap</p>
<h1>Demo 暂不开放</h1>
<p>风格探索、演讲者模式和其他生成模式还没有完成稳定调试,公开入口先隐藏。</p>
<ul>
<li>先保留已调好的 Skill 分享 PPT 展示页。</li>
<li>完成输出链路校验后再恢复多模式在线 Demo。</li>
<li>补齐讲稿、翻页控制和展示页质量检查。</li>
</ul>
<p><a href="https://learnprompt.github.io/humanize-ppt/">返回 Humanize PPT 首页</a></p>
</main>
</body>
</html>
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="robots" content="noindex,nofollow">
<title>Humanize PPT Demo Roadmap</title>
<style>
body {
margin: 0;
min-height: 100vh;
display: grid;
place-items: center;
background: #f7f3eb;
color: #181512;
font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Noto Sans SC", sans-serif;
line-height: 1.7;
}
main {
width: min(760px, calc(100vw - 40px));
padding: 48px 0;
}
.eyebrow {
margin: 0 0 14px;
color: #7f2a1d;
font-size: 12px;
font-weight: 700;
letter-spacing: .18em;
text-transform: uppercase;
}
h1 {
margin: 0;
font-size: clamp(36px, 7vw, 72px);
line-height: 1;
letter-spacing: 0;
}
p {
margin: 22px 0;
color: #6b6258;
font-size: 18px;
}
ul {
margin: 0 0 28px;
padding-left: 20px;
color: #6b6258;
}
a {
color: #7f2a1d;
font-weight: 700;
}
</style>
</head>
<body>
<main>
<p class="eyebrow">Humanize PPT · Roadmap</p>
<h1>Demo 暂不开放</h1>
<p>风格探索、演讲者模式和其他生成模式还没有完成稳定调试,公开入口先隐藏。</p>
<ul>
<li>先保留已调好的 Skill 分享 PPT 展示页。</li>
<li>完成输出链路校验后再恢复多模式在线 Demo。</li>
<li>补齐讲稿、翻页控制和展示页质量检查。</li>
</ul>
<p><a href="https://learnprompt.github.io/humanize-ppt/">返回 Humanize PPT 首页</a></p>
</main>
</body>
</html>
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Humanize PPT</title>
<link rel="icon" href="data:,">
<style>
:root {
--ink: #181512;
--paper: #f7f3eb;
--muted: #6b6258;
--line: #ded5c8;
--accent: #7f2a1d;
--card: #fffaf2;
}
* { box-sizing: border-box; }
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Noto Sans SC", sans-serif;
color: var(--ink);
background: var(--paper);
line-height: 1.7;
}
main {
width: min(1080px, calc(100vw - 40px));
margin: 0 auto;
padding: 64px 0 56px;
}
header {
display: grid;
grid-template-columns: 1.15fr .85fr;
gap: 48px;
align-items: end;
min-height: 48vh;
border-bottom: 1px solid var(--line);
padding-bottom: 44px;
}
.eyebrow {
margin: 0 0 18px;
color: var(--accent);
font-size: 12px;
font-weight: 700;
letter-spacing: .18em;
text-transform: uppercase;
}
h1 {
margin: 0;
font-size: clamp(48px, 9vw, 112px);
line-height: .95;
letter-spacing: 0;
font-weight: 800;
}
.lead {
margin: 24px 0 0;
color: var(--muted);
font-size: clamp(18px, 2vw, 24px);
}
.panel {
background: var(--card);
border: 1px solid var(--line);
border-radius: 8px;
padding: 24px;
}
.panel h2 {
margin: 0 0 10px;
font-size: 22px;
line-height: 1.25;
}
.panel p {
margin: 0 0 18px;
color: var(--muted);
font-size: 15px;
}
.button {
display: inline-flex;
align-items: center;
min-height: 44px;
padding: 0 18px;
border-radius: 6px;
background: var(--ink);
color: var(--paper);
text-decoration: none;
font-weight: 700;
}
.button.secondary {
margin-left: 10px;
background: transparent;
color: var(--accent);
border: 1px solid var(--line);
}
section {
display: grid;
grid-template-columns: .7fr 1.3fr;
gap: 48px;
padding: 42px 0;
border-bottom: 1px solid var(--line);
}
section h2 {
margin: 0;
font-size: 28px;
line-height: 1.2;
}
ul {
margin: 0;
padding-left: 20px;
color: var(--muted);
}
li + li { margin-top: 10px; }
a { color: var(--accent); }
footer {
padding-top: 28px;
color: var(--muted);
font-size: 14px;
}
@media (max-width: 780px) {
main { width: min(100vw - 28px, 1080px); padding-top: 36px; }
header, section { grid-template-columns: 1fr; gap: 28px; }
header { min-height: auto; }
.button.secondary { margin: 12px 0 0; }
}
</style>
</head>
<body>
<main>
<header>
<div>
<p class="eyebrow">Humanize PPT · Preview</p>
<h1>把 AI 从聊天框带进真实工作流</h1>
<p class="lead">Humanize PPT 是基于 AST 理论的 PPT 大纲导演 Skill。演讲体检对的不是美观,是大纲:逐页核对渲染结果和大纲页的差异,把「只能看、不能讲」的页揪出来,直到每一页都拿得出口去讲。当前公开页展示 Skill 分享 PPT,以及中文 guizang-ppt-skill 和英文 beautiful-html-templates / frontend-slides 的稳定样例。</p>
</div>
<div class="panel">
<h2>Hermes Agent Mastery</h2>
<p>中文和英文各有一条已上线的 PPT 路线:大纲、成稿、演讲模式和静态部署。</p>
<a class="button" href="showcase/hermes-agent-mastery/presenter/">中文演讲模式</a>
<a class="button secondary" href="showcase/hermes-agent-mastery/en/presenter/">English presenter</a>
<a class="button secondary" href="showcase/hermes-agent-mastery/en/ppt/">English PPT</a>
<a class="button secondary" href="showcase/skill-share/">Skill 分享 PPT</a>
<!-- codex-guizang-black-white 样例效果未达标,入口暂撤(2026-06-13 人工验收),目录保留待回炉 -->
</div>
</header>
<section id="roadmap">
<h2>Roadmap</h2>
<ul>
<li>Humanize PPT 先把资料变成 AST 大纲,再交给下游 PPT Skill。</li>
<li>中文 PPT 默认走 guizang-ppt-skill 稳定成稿,再进入素材 QA 修复/调优、演讲模式和静态部署。</li>
<li>英文 PPT 默认走 beautiful-html-templates / frontend-slides,先看多风格候选,再进入完整 deck 和演讲模式。</li>
<li>视频或动态素材可以作为页面材料进入流程;使用前先确认 Remotion 相关能力可用。</li>
</ul>
</section>
<footer>
<a href="https://github.com/LearnPrompt/humanize-ppt">GitHub: LearnPrompt/humanize-ppt</a>
</footer>
</main>
</body>
</html>
Humanize PPT
Public preview docs. The current public preview shows the tuned Skill sharing deck plus the stable Chinese and English Hermes Agent Mastery routes.
- Showcase:
showcase/skill-share/ - Codex Guizang black-white showcase:
showcase/codex-guizang-black-white/ - Hermes Agent Mastery presenter:
showcase/hermes-agent-mastery/presenter/ - Hermes Agent Mastery PPT:
showcase/hermes-agent-mastery/ppt/ - Hermes Agent Mastery English presenter:
showcase/hermes-agent-mastery/en/presenter/ - Hermes Agent Mastery English PPT:
showcase/hermes-agent-mastery/en/ppt/ - Routes: Chinese uses
guizang-ppt-skill; English usesbeautiful-html-templates / frontend-slides.
OPC Workflow
O — Outline Director
Humanize PPT consumes raw material and outputs the AST production contract:
deck_brief.mdast_outline.mdslide_plan.jsonspeaker_intent.mdasset_manifest.mdvideo_slots.json
P — Presentation Production
V0.3 routes to one primary renderer and optional post-processing adapters. The beautiful-html-templates route now renders real preview-first artifacts.
| Route | Best for |
|---|---|
guizang | Chinese stable HTML PPT, magazine / Swiss style, screenshots and image framing |
beautiful-html-templates | preview-first style exploration with 34 templates and design.md contracts |
html-ppt | full-deck templates, presenter mode, speaker scripts, rich themes and animations |
frontend-slides | PPTX conversion, style discovery, viewport fitting, deploy/export references |
Router-first path
Humanize PPT → router_plan.json → commands/*.md → outputs/<renderer>/Downstream renderers consume the AST contract, not raw source, unless a command explicitly permits it.
C — Complete / Control
Post-processing adapters:
HyperFrames Video AdapterPresenter AdapterDeploy AdapterDeck QA
Presenter mode is not a style. It is added after a deck is produced.
Humanize PPT Agent Teams V0.2 Implementation Plan
For Hermes: Use subagent-driven-development skill to implement this plan task-by-task.
Goal: Build Humanize PPT into a main Agent Teams orchestrator that loads the humanize-ppt Skill, produces AST contracts, routes work to specialist Skill Agents, and verifies final PPT outputs.
Architecture: The main Humanize PPT Agent owns AST, routing, command generation, run manifest, and QA. Specialist agents each load one focused Skill and operate only on contract files, not raw source, unless explicitly allowed.
Tech Stack: Python stdlib, JSON contracts, Markdown commands, static HTML demo runner, GitHub Pages.
---
Task 1: Add Agent Team contract schemas
Objective: Define machine-readable contracts for routing and run manifests.
Files:
- Create:
contracts/router-plan.schema.json - Create:
contracts/run-manifest.schema.json
Step 1: Create `router-plan.schema.json`
Include fields:
{
"source": "string",
"goal": "string",
"routes": [
{
"agent": "string",
"skill": "string",
"purpose": "string",
"input_files": ["string"],
"output_dir": "string",
"depends_on": ["string"]
}
]
}Step 2: Create `run-manifest.schema.json`
Include fields:
{
"run_id": "string",
"source": "string",
"created_at": "string",
"selected_routes": ["string"],
"outputs": {},
"verification": {}
}Step 3: Validate JSON
Run:
python3 -m json.tool contracts/router-plan.schema.json >/dev/null
python3 -m json.tool contracts/run-manifest.schema.json >/dev/nullExpected: no output and exit code 0.
Step 4: Commit
git add contracts/router-plan.schema.json contracts/run-manifest.schema.json
git commit -m "feat: add agent team contract schemas"---
Task 2: Extend the local runner to emit Agent Team artifacts
Objective: Make scripts/humanize_ppt_v1.py generate router_plan.json, run_manifest.json, and commands/.
Files:
- Modify:
scripts/humanize_ppt_v1.py
Step 1: Add router plan generation
Generate this output:
out/router_plan.jsonRoutes for V0.2 simulation:
guizang-agentzara-agentpresenter-agentqa-agent
Step 2: Add run manifest generation
Generate:
out/run_manifest.jsonInclude output paths and verification status.
Step 3: Add command files
Generate:
out/commands/guizang-agent.md
out/commands/zara-agent.md
out/commands/presenter-agent.md
out/commands/qa-agent.mdEach command must include:
You are [Agent Name].
Load skill: [Skill Name].
Input directory: [workdir]
Task: [exact task]
Write outputs to: [exact output directory]
Return: output paths, decisions, issues, verification result.Step 4: Run demo
python3 scripts/humanize_ppt_v1.py \
--source examples/02-hermes-install-guide/source.md \
--out .humanize-ppt-runs/hermes-install-agent-team \
--title "把 Hermes 装成一个真正能干活的 Agent"Expected files:
router_plan.json
run_manifest.json
commands/guizang-agent.md
commands/zara-agent.md
commands/presenter-agent.md
commands/qa-agent.mdStep 5: Commit
git add scripts/humanize_ppt_v1.py .humanize-ppt-runs/hermes-install-agent-team || true
git add scripts/humanize_ppt_v1.py
git commit -m "feat: emit agent team orchestration artifacts"---
Task 3: Add simulated specialist output directories
Objective: Make the V0.2 demo look like an Agent Team run instead of a single script output.
Files:
- Modify:
scripts/humanize_ppt_v1.py
Step 1: Create output layout
Generate:
out/outputs/guizang/
out/outputs/zara/
out/outputs/presenter/
out/outputs/qa/Step 2: Copy existing generated files into specialist outputs
styles/guizang-stable.html→outputs/guizang/index.htmlstyles/zara-editorial.htmlandstyles/zara-contrast.html→outputs/zara/directions/presenter/index.html→outputs/presenter/index.html- QA report →
outputs/qa/qa_report.md
Step 3: Verify paths
Run:
python3 scripts/humanize_ppt_v1.py --source examples/02-hermes-install-guide/source.md --out /tmp/humanize-agent-team-test --title test
find /tmp/humanize-agent-team-test/outputs -type f | sortExpected: files under all four output directories.
Step 4: Commit
git add scripts/humanize_ppt_v1.py
git commit -m "feat: add simulated specialist agent outputs"---
Task 4: Add Agent Team docs to public site
Objective: Make the architecture visible to Tencent-facing readers and public users.
Files:
- Modify:
docs/index.html - Modify:
README.md - Modify:
README.en.md - Ensure:
docs/agent-teams.md
Step 1: Link `docs/agent-teams.md` from both READMEs
Add top-level links:
[Agent Teams](docs/agent-teams.md)Step 2: Link it from Pages home
Add a card explaining:
Humanize PPT Agent is the main orchestrator. Specialist agents load guizang, Zara, HyperFrames, Presenter, and QA skills.Step 3: Verify Pages locally
python3 -m http.server 8767 --directory docs
curl -s -o /tmp/hp.html -w '%{http_code}' http://127.0.0.1:8767/Expected: 200.
Step 4: Commit
git add README.md README.en.md docs/index.html docs/agent-teams.md
git commit -m "docs: document agent teams architecture"---
Task 5: Release V0.2 preview
Objective: Push the Agent Teams architecture and verify deployment.
Files:
- No source changes required beyond previous tasks.
Step 1: Run validations
python3 -m json.tool contracts/slide-plan.schema.json >/dev/null
python3 -m json.tool contracts/video-slots.schema.json >/dev/null
python3 -m json.tool contracts/router-plan.schema.json >/dev/null
python3 -m json.tool contracts/run-manifest.schema.json >/dev/null
python3 scripts/humanize_ppt_v1.py --source examples/02-hermes-install-guide/source.md --out /tmp/humanize-v02-check --title testStep 2: Push
git push origin mainStep 3: Verify GitHub Pages
curl -L -s -o /tmp/hp.html -w '%{http_code}' https://learnprompt.github.io/humanize-ppt/
grep -q "Agent Teams" /tmp/hp.htmlExpected: 200, grep success.
Step 4: Install locally
npx skills add https://github.com/LearnPrompt/humanize-ppt.git -g -yStep 5: Commit/tag if needed
git tag -a v0.2.0-preview -m "v0.2.0 Agent Teams preview"
git push origin v0.2.0-preview---
Acceptance Criteria
README.mdcommunicates Humanize PPT as a main Agent controlling Skill Agents.docs/agent-teams.mdexists and explains each specialist Agent.- Runner emits
router_plan.json,run_manifest.json, and command files. - Demo output has separate specialist output directories.
- GitHub Pages shows Agent Teams entry.
- Local Skill installation works after push.
Humanize PPT V0.2 升级判断与版本建议
更新时间:2026-05-19 17:47 CST
结论
建议更新 Humanize PPT 版本。
但更新方向不应是把 Humanize PPT 做成又一个固定视觉模板 Skill,而是把它从当前的「AST 大纲导演 Demo」升级为「可独立调用的 PPT 总控 Skill」。
所谓「可独立运作」应定义为:用户只调用 Humanize PPT,它能完成从原始素材到最终 HTML PPT 的端到端调度;但实际渲染仍通过适配器调用 guizang、html-ppt、frontend-slides、beautiful-html-templates 等下游能力。
当前 Humanize PPT 状态
本地 Skill 路径:/Users/carl/.hermes/skills/humanize-ppt
当前 SKILL.md 版本:0.1.0
当前定位:
- Humanize PPT 是 Outline Director / Agent Teams Orchestrator,不是 slide renderer。
- 固定产出契约:
deck_brief.md、ast_outline.md、slide_plan.json、speaker_intent.md、asset_manifest.md、video_slots.json。
当前脚本:scripts/humanize_ppt_v1.py
脚本验证结果:可运行,会生成 contract、3 个 demo style HTML、presenter、deploy 文件夹。但它仍是 demo 级实现:
- 5 页叙事角色写死:hook / conflict / method / proof / takeaway。
- 3 个视觉方向写死:guizang-stable / zara-editorial / zara-contrast。
- 没有真实读取下游 Skill 的模板库。
- 没有 renderer router。
- 没有把
slide_plan.json实际交给 guizang/html-ppt/frontend-slides/beautiful 渲染。 - 没有统一 QA、截图、PDF、部署闭环。
上游/下游仓库近期变化
1. op7418/guizang-ppt-skill
GitHub 最新 pushed_at:2026-05-16T02:37:58Z
最新提交要点:
3d87acc6Add bundled screenshot backgrounds2b9e6be0Add screenshot framing semanticsfd860dceAdd skill provenance marker0338705bAdd hosted theme preview tables
本地安装状态:/Users/carl/.agents/skills/guizang-ppt-skill,文件数 34;已包含 references/screenshot-framing.md 和 assets/screenshot-backgrounds/...,基本是最新能力形态。
对 Humanize PPT 的影响:
- guizang 已经不只是网页 PPT 模板,还包括截图美化、配图提示、瑞士风版式锁、主题预览和质量检查。
- Humanize PPT V0.2 应把 guizang 作为「中文稳定渲染 + 截图/配图适配」适配器,而不是简单写成一个推荐 Skill。
2. zarazhangrui/beautiful-html-templates
GitHub 最新 pushed_at:2026-05-19T01:24:56Z
最新提交要点:
68ae471eAdd design.md for all 34 templates- 近期修复 deck-stage hash navigation、screenshot renderer 等问题。
仓库能力:
- 34 个 HTML slide templates。
index.json提供 template_count、mood、occasion、tone、formality、density、scheme 等匹配字段。AGENTS.md明确要求先按 occasion + mood 选 3 个候选模板,生成真实标题页 preview,让用户选,再做完整 deck。- 每个模板新增
design.md,可作为结构化视觉契约。
对 Humanize PPT 的影响:
- 这是最适合补齐「风格探索」的库。
- Humanize PPT V0.2 应新增
beautiful-template-router适配器:读取index.json,按 AST 中的 audience / state / mood / density 选 3 个模板,生成 preview,再进入全 deck。 - 它不一定要安装成 Hermes Skill,但应该进入 Humanize PPT 的 renderer registry。
3. zarazhangrui/frontend-slides
GitHub 最新 pushed_at:2026-05-14T22:40:38Z;代码提交集中在 2026-04-08 前后。
仓库能力:
- 视觉风格 discovery:生成 3 个 style previews。
- PPTX 转 HTML。
- Vercel deploy + PDF export。
- Claude Code marketplace support。
本地安装状态:/Users/carl/.agents/skills/frontend-slides,包含 STYLE_PRESETS.md、viewport-base.css、html-template.md、animation-patterns.md、scripts。
对 Humanize PPT 的影响:
- frontend-slides 更像「从零生成/从 PPTX 转换」的完整 Skill。
- Humanize PPT 可借鉴它的 style discovery 与 viewport fitting 规则,但不应完全绑定它。
4. lewislulu/html-ppt-skill
GitHub 最新 pushed_at:2026-04-26T07:13:39Z
仓库能力:
- 36 themes。
- 15 full-deck templates。
- 31 page layouts。
- 47 animations(27 CSS + 20 canvas FX)。
- presenter mode:S 键打开 current / next / speaker script / timer 四卡片演讲者窗口。
本地安装状态:/Users/carl/.hermes/skills/html-ppt,文件数 226;已包含 references/presenter-mode.md 和 templates/full-decks/presenter-mode-reveal/index.html。
对 Humanize PPT 的影响:
- html-ppt 是最适合承担「端到端可交付 HTML PPT + presenter mode」的下游 Skill。
- Humanize PPT V0.2 应把 speaker_intent / 逐字稿转成 html-ppt 的
<div class="notes">...</div>或 presenter-mode template 输入。
推荐版本路线
V0.2:Humanize PPT Router Edition
目标:让 Humanize PPT 能被单独调用,并自动选择下游渲染路径。
最小交付:
1. renderer_registry.json
guizanghtml-pptfrontend-slidesbeautiful-html-templates
2. router_plan.json
- 输入:AST contract + 用户约束。
- 输出:推荐 renderer、候选 style/template、风险提示、所需素材。
3. commands/<renderer>.md
- 给下游 Skill/Agent 的有界命令,不让 renderer 直接吞原始素材。
4. run_manifest.json
- 记录每次运行的 source、contracts、renderer、输出路径、QA 状态。
5. 更新 SKILL.md
- 保持核心定位:Humanize PPT 是总控/导演,不是固定 renderer。
- 明确「单独运作」含义:一键调度,不是自己承担所有渲染。
V0.3:Standalone Skill UX
目标:形成用户可复制的一条命令。
建议 CLI:
python3 scripts/humanize_ppt.py \
--source input.md \
--out runs/my-deck \
--title "Deck Title" \
--renderer auto \
--style-mode preview-first \
--presenter on \
--export html,pdf最小交付:
- 自动产出 AST contracts。
- 自动选择/生成 3 个风格候选 preview。
- 用户选定后生成最终 deck。
- 自动跑 QA:viewport、缺图、路径、notes、导航、截图。
- 可选 PDF / deploy。
V0.4:Agent Teams / WorkBuddy Package
目标:把 Humanize PPT 作为一个团队包,而不是单个脚本。
最小交付:
- Team Lead Agent。
- Outline Director Agent。
- Renderer Adapter Agents。
- QA Agent。
- Scenario rules。
- WorkBuddy/CodeBuddy upload zip 结构验证。
推荐路由规则
| 用户目标 | 推荐路径 |
|---|---|
| 中文分享、观点表达、稳定出片 | Humanize PPT → guizang |
| 瑞士风、方法论、数据/结构表达 | Humanize PPT → guizang Style B |
| 想看多个视觉方向再选 | Humanize PPT → beautiful-html-templates previews |
| 需要演讲者模式、逐字稿、主题/动画丰富 | Humanize PPT → html-ppt |
| 已有 PPTX,要转换成 Web PPT | Humanize PPT → frontend-slides |
| 要最终公开视频/素材片段 | Humanize PPT → HyperFrames / Remotion 作为素材生产器,不替代 PPT |
关键产品判断
Humanize PPT 不应该和 guizang、html-ppt、frontend-slides、beautiful-html-templates 竞争。
它应该站在它们上面:
- 负责判断观众。
- 负责删噪音。
- 负责把资料变成可讲路径。
- 负责把 AST 变成下游 renderer 可执行的生产契约。
- 负责把最终 deck 做 QA 和交付。
一句话版本:
Humanize PPT V0.2 要从「会生成 demo 的大纲导演」升级为「能单独调用、自动调度多个 PPT Skill 的总控 Skill」。
Humanize PPT 目录简化 + SuperPower / Office Hours 前置计划
For Hermes: 当前阶段只做计划与审批,不直接改业务代码。后续执行时按小步提交,每一步都先验证再进入下一步。
日期: 2026-05-22 仓库: /Users/carl/Downloads/humanize-ppt 远端: git@github.com:LearnPrompt/humanize-ppt.git 当前分支: main 当前版本状态: SKILL.md 已到 0.5.0,主入口是 scripts/humanize_ppt_v5.py,但核心实现仍集中在 scripts/humanize_ppt_v2.py。
---
0. 结论
这次不建议先继续叠新版本。推荐先做一次“减熵版整理”:
1. 先简化代码目录和入口命名:让外部用户知道应该跑哪个脚本、看哪份文档、忽略哪些历史材料。 2. 再用 SuperPower 做下一版设计:把 V0.6 或 V1.0 的范围写成可审查 spec。 3. 再用 Office Hours 做价值审查:确认最窄切口、真实用户场景、哪些功能暂缓。 4. 最后再决定是否发新版本:只有目录、入口、README、demo、测试都清爽后,再更新版本号和 release note。
一句话:先整理地基,再讨论方向,最后发版本。
---
1. 当前仓库观察
1.1 文件结构现状
当前 tracked 文件主要集中在:
scripts/:5 个脚本入口。docs/:理论文档、版本说明、demo、showcase、历史计划。contracts/:输出契约模板和 schema。registry/:renderer 能力注册表。references/:公开传播、适配器和打包经验。tests/:目前只有tests/test_beautiful_preview.py一组测试。
1.2 代码复杂度信号
当前脚本行数:
scripts/humanize_ppt_v1.py:123 行。scripts/humanize_ppt_v2.py:1259 行。scripts/humanize_ppt_v3.py:12 行。scripts/humanize_ppt_v4.py:12 行。scripts/humanize_ppt_v5.py:12 行。
关键问题:
- V0.3 / V0.4 / V0.5 是 wrapper,核心逻辑都堆在
humanize_ppt_v2.py。 - README 已经面向 V0.5,但脚本命名仍保留多版本入口,外部用户会困惑。
docs/demo/、docs/showcase/、.humanize-ppt-runs/、版本说明文档共同存在,容易分不清“公开入口”“历史材料”“生成产物”。- 当前环境缺少
pytest,直接运行python -m pytest -q失败:No module named pytest。因此测试计划要先补安装说明或改为 stdlib 可跑的 smoke check。
---
2. 本轮目标与非目标
2.1 目标
本轮只做“简化目录 + 发版前置审查”,不做新功能。
交付物:
1. 一份目录瘦身方案。 2. 一份 SuperPower 设计审查问题清单。 3. 一份 Office Hours 价值审查问题清单。 4. 一份后续实施计划,明确每一步要改哪些文件、怎么验证、什么时候提交。
2.2 非目标
本轮不做:
- 不新增 V0.6 功能。
- 不重写 Humanize PPT 的 AST 理论。
- 不引入新的下游 renderer。
- 不做大规模架构重构。
- 不删除历史材料,只移动或归档,并保持可追溯。
- 不改 GitHub Pages 公开路径,除非后续单独确认。
---
3. 推荐目录目标形态
建议把仓库整理成“用户入口清楚、开发入口清楚、历史材料收纳”的结构:
humanize-ppt/
README.md
README.en.md
SKILL.md
LICENSE
scripts/
humanize_ppt.py # 推荐主入口,后续新增
humanize_ppt_v1.py # legacy,保留
humanize_ppt_v2.py # legacy/core,下一阶段再拆
humanize_ppt_v3.py # legacy wrapper
humanize_ppt_v4.py # legacy wrapper
humanize_ppt_v5.py # legacy wrapper
contracts/
*.schema.json
*.template.md
registry/
renderer_registry.json
examples/
01-ai-tool-update/source.md
02-hermes-install-guide/source.md
tests/
test_beautiful_preview.py
docs/
index.md
AST-theory.md
OPC-workflow.md
router-rules.md
presenter-adapter.md
versions/
v0.2-router-edition.md
v0.3-preview-first.md
v0.4-selected-template-full-deck.md
v0.5-presenter-export-adapter.md
plans/
*.md
demo/
... # 明确标注为 GitHub Pages demo
showcase/
... # 明确标注为公开展示素材
references/
*.md这一步先不强拆 humanize_ppt_v2.py,只解决“入口混乱”和“文档散落”。大拆模块放到下一轮。
---
4. SuperPower 设计审查问题
进入代码改动前,先用 SuperPower 把“目录简化”的设计边界固定下来。
建议只问 4 个问题:
1. 用户第一眼应该跑哪个命令? 推荐答案:python3 scripts/humanize_ppt.py ...,旧版脚本作为 legacy wrapper 保留。
2. 公开文档优先服务谁? 推荐答案:先服务“想试用 Humanize PPT 的内容创作者 / AI 工具玩家”,开发者文档放在 docs 深处。
3. 历史版本文档是否移动? 推荐答案:移动到 docs/versions/,README 只保留当前稳定链路。
4. 是否现在拆 `humanize_ppt_v2.py`? 推荐答案:不在本轮拆。先新增主入口和整理文档,再单独开“代码模块化”计划。
---
5. Office Hours 价值审查问题
目录整理完成后,再问这 6 个问题,决定要不要开新版本:
1. 谁现在真的痛? 是想快速把资料变成可讲PPT的人,还是想探索多个HTML PPT Skill的人?
2. 他们现在不用 Humanize PPT 时怎么做? 是直接丢给 PPT 生成器、手写大纲、还是让 Claude/Codex 生成 HTML?
3. 最窄可用切口是什么? 推荐切口:source.md → AST contract → 3 个真实风格预览 → 选 1 个生成完整HTML deck → presenter/export。
4. 哪一步最能证明价值? 推荐信号:用户看到 3 个预览后能马上选,并且最终 deck 没有明显 AI 味结构噪音。
5. 哪些功能只是显得高级? 推荐暂缓:多 renderer 自动全链路真实调用、部署平台集成、视频生成、WorkBuddy 团队包自动上传。
6. 下一版应该叫 V0.6 还是 V1.0? 推荐:如果只是目录简化 + 主入口,叫 V0.5.1 或 V0.6;只有跑通“单入口稳定交付链路”后再考虑 V1.0。
---
6. 实施计划
Phase 1:基线保护
目标: 在改目录前确认当前仓库可回滚、当前公开入口可解释。
步骤:
1. 运行 git status --short,确认没有未提交改动。 2. 记录最近 5 个 commit:git log --oneline -5。 3. 记录 tracked 文件清单:git ls-files。 4. 尝试运行测试:python -m pytest -q。 5. 如果本机没有 pytest,记录为环境问题,不把它当作代码失败。
验收:
- 有清晰基线记录。
- 知道测试失败是因为缺依赖还是代码错误。
Phase 2:新增稳定主入口
目标: 降低用户理解成本。
建议动作:
1. 新增 scripts/humanize_ppt.py。 2. 让它调用当前稳定入口 humanize_ppt_v5.main() 或直接调用 humanize_ppt_v2.main()。 3. 保留 humanize_ppt_v1.py 到 humanize_ppt_v5.py,但 README 只推荐 humanize_ppt.py。 4. 在旧 wrapper 顶部注释里标明 legacy / compatibility。
验收:
python3 scripts/humanize_ppt.py --help
python3 scripts/humanize_ppt_v5.py --help两者都能正常输出帮助信息。
Phase 3:整理文档目录
目标: 把“当前说明”和“历史说明”分开。
建议动作:
1. 新建 docs/versions/。 2. 移动:
- V0.2 到 V0.5 的历史版本说明统一收纳到
docs/versions/
3. 更新 README / SKILL.md 中对应路径。 4. 保留 docs/plans/,不混入正式版本文档。
验收:
grep -R "docs/v0\." -n README.md README.en.md SKILL.md docs --exclude-dir=plans || true不应再出现旧路径引用。
Phase 4:整理 README 的当前链路
目标: README 只讲当前推荐路径,不把历史版本全摊给用户。
建议动作:
1. 快速开始改成主入口:python3 scripts/humanize_ppt.py ...。 2. 保留一句:“旧版入口仍保留用于兼容”。 3. 把 V0.1-V0.4 的细节移到 docs/versions/。 4. 在线预览只保留稳定入口和 showcase,隐藏调试 demo 解释清楚。
验收:
- 用户 30 秒内能知道该跑哪条命令。
- README 不再像版本考古。
Phase 5:补一个最小 smoke 验证
目标: 即使没有 pytest,也能验证主入口不坏。
建议动作:
1. 新增或记录一个 smoke 命令:
python3 scripts/humanize_ppt.py \
--source examples/01-ai-tool-update/source.md \
--out /tmp/humanize-ppt-smoke \
--title "AI 工具更新,不只是功能清单" \
--style-mode preview-first2. 验证至少生成:
deck_brief.mdast_outline.mdslide_plan.jsonrouter_plan.jsonrun_manifest.json
验收:
test -f /tmp/humanize-ppt-smoke/deck_brief.md
test -f /tmp/humanize-ppt-smoke/slide_plan.json
test -f /tmp/humanize-ppt-smoke/run_manifest.jsonPhase 6:新版本决策
目标: 决定是否发版,以及版本号怎么定。
建议判断:
- 只做主入口 + 文档整理:
v0.5.1。 - 主入口 + 文档整理 + smoke 验证文档 + 小规模测试修复:
v0.6.0。 - 完成模块化拆分、稳定单入口完整交付链路后:再考虑
v1.0.0。
---
7. 建议任务拆分
Task 1:提交计划文档
文件:
- Create:
docs/plans/2026-05-22-directory-simplification-superpower-office-hours-plan.md
验收:
- 文档存在。
- 计划包含目标、非目标、目录目标形态、SuperPower 问题、Office Hours 问题、实施步骤。
Task 2:新增主入口
文件:
- Create:
scripts/humanize_ppt.py - Modify:
README.md - Modify:
README.en.md
验收:
python3 scripts/humanize_ppt.py --help可跑。- README 首推新入口。
Task 3:移动版本文档
文件:
- Move: historical V0.x version notes →
docs/versions/ - Modify:
SKILL.md - Modify:
README.md - Modify:
README.en.md
验收:
- 没有旧路径残留。
- 链接不失效。
Task 4:补 smoke 验证说明
文件:
- Modify:
README.md - Optional Create:
scripts/smoke_check.py或docs/smoke-test.md
验收:
- 无 pytest 时也能验证主链路。
- 有 pytest 时继续跑
python -m pytest -q。
Task 5:发版前审查
文件:
- Create:
docs/plans/2026-05-22-release-readiness-checklist.md或追加到当前计划。
验收:
- 明确版本号建议。
- 明确 release note 草稿。
- 明确暂缓功能。
---
8. 风险与处理
| 风险 | 处理 |
|---|---|
| 移动 docs 后 GitHub Pages 链接失效 | 只移动内部版本说明,不动 docs/index.html、docs/demo/、docs/showcase/ 公开入口 |
| 用户仍然看到 v1-v5 多入口困惑 | README 只推荐 scripts/humanize_ppt.py,旧入口标为 compatibility |
过早拆 humanize_ppt_v2.py 引入 bug | 本轮不拆,只记录下一轮模块化计划 |
| 本机没 pytest 导致误判 | 把缺依赖记录为环境问题,并补 smoke check |
| 新版本范围膨胀 | Office Hours 后再决定是否发版,默认不新增功能 |
---
9. 审批点
建议现在先确认以下决策:
1. 是否同意新增 scripts/humanize_ppt.py 作为唯一推荐主入口? 2. 是否同意把历史 V0.x 版本说明移到 docs/versions/? 3. 是否同意本轮不拆 humanize_ppt_v2.py,只做入口和文档减熵? 4. 是否同意本轮完成后优先定为 v0.5.1 或 v0.6.0,暂不冲 v1.0?
推荐默认答案:全部同意,版本倾向 `v0.6.0`。
Humanize PPT Release Readiness Checklist
Date: 2026-05-25 Scope: Directory simplification, stable entrypoint, README cleanup, and smoke verification. Recommended version: v0.6.0
Conclusion
This cleanup is more than a patch-level typo/doc fix because it changes the public command users should run:
- new stable entrypoint:
scripts/humanize_ppt.py; - README now recommends one path instead of versioned runner archaeology;
- historical V0.x notes are archived under
docs/versions/; - no-dependency smoke check is available through
scripts/smoke_check.py.
Recommendation: ship as v0.6.0 after remote sync and GitHub Pages verification. Do not call it v1.0.0 yet because the single-entry full delivery loop still depends on template selection and selected-template follow-up.
Release candidate checklist
Before tagging or publishing:
- [ ]
git status --shortis clean. - [ ]
python3 scripts/humanize_ppt.py --helpworks. - [ ]
python3 scripts/humanize_ppt_v5.py --helpstill works for compatibility. - [ ]
python3 scripts/smoke_check.pypasses. - [ ]
pytest -qpasses in an environment with pytest. - [ ]
grep -R "docs/v0\." -n README.md README.en.md SKILL.md docs --exclude-dir=planshas no output. - [ ] README examples only recommend
scripts/humanize_ppt.py. - [ ] Historical version docs live under
docs/versions/. - [ ] Generated run artifacts are not committed.
- [ ] GitHub remote is synced before tag/release.
- [ ] GitHub Pages source and live page are verified after push.
Suggested release notes
Added
- Added
scripts/humanize_ppt.pyas the stable recommended entrypoint. - Added
scripts/smoke_check.pyfor no-dependency core contract validation. - Added
docs/smoke-test.mdwith reproducible smoke-check instructions. - Added this release-readiness checklist.
Changed
- Simplified README and README.en around the current recommended workflow.
- Moved historical V0.x notes into
docs/versions/. - Updated
SKILL.mdreferences to the new historical docs location.
Kept compatible
- Kept
scripts/humanize_ppt_v1.pythroughscripts/humanize_ppt_v5.pyas compatibility entrypoints. - Kept existing examples, contracts, registry, demos, and GitHub Pages paths.
Deferred
- No module split of
scripts/humanize_ppt_v2.pyin this release. - No new renderer integration.
- No video-generation pipeline.
- No deployment-platform automation.
- No WorkBuddy/CodeBuddy team package publishing automation.
Version decision
Use this rule:
v0.5.1if only the first stable entrypoint commit ships.v0.6.0if this README cleanup, smoke check, and release checklist ship together.v1.0.0only after the single-entry workflow reliably completes preview, selected-template full deck, presenter/export, QA, and documented public verification without manual repair.
Current recommendation: v0.6.0.
Guizang Production Adapter Upgrade Brief
Superseded by v0.6.4 (2026-06-03). The "production-adapter" framing in this
document — copy Guizang's template, inject custom sections, and call it
"Guizang-native" — is no longer the target. v0.6.4 replaces it with a
brief-only contract: Humanize writes guizang-production-prompt.md andstops. The downstream guizang-ppt-skill renders natively. Seedocs/versions/v0.6.4-guizang-production-brief-orchestrator.md andreferences/guizang-production-brief-orchestrator.md for the currentcontract. This document is kept for historical context.
Date: 2026-05-31
Context
Humanize PPT already has a public GitHub project at LearnPrompt/humanize-ppt and a public Pages site at:
- https://learnprompt.github.io/humanize-ppt/
The current showcase artifact is:
docs/showcase/codex-guizang-black-white/index.html
It was generated from a local experiment in:
/Users/carl/Documents/Codex/2026-05-31/herems-profile-stepaux-stepflash/outputs/humanize-guizang-black-white-ppt/
The experiment proved that Humanize PPT can:
- read a source deck brief with
目标页数:15-18 页 - expand beyond the old 8-page cap
- render through
guizang-ppt-skill/assets/template-swiss.html - copy
assets/motion.min.js - emit
render_manifest.json - remove
[必填]template residue - record 16
data-layout="Sxx"markers and 10 unique layout IDs
But the user explicitly asked whether this is 1:1 Guizang quality. The answer is no. It is a useful intermediate adapter, not a full Guizang-native production pass.
Current Quality Gap
The black-white showcase is roughly a 60%-70% Guizang adapter:
- It uses the real Swiss template.
- It has real layout markers.
- It has a watchable deck.
- It is not yet using the full registered
layouts-swiss.mdskeletons page by page. - It does not run Guizang's Swiss validator.
- It does not perform screenshot-based visual QA.
- It does not produce the required page-by-page production reasoning:
page -> Sxx layout -> why this layout -> image/data slot -> validation result.
Goal
Upgrade Humanize PPT's Guizang path into a real production adapter while preserving existing 0.6.3 behavior:
- Do not regress English 5-style gallery behavior.
- Do not regress presenter bridge behavior.
- Do not regress Beautiful selected-template behavior.
- Do not regress existing tests.
The target architecture is:
Humanize PPT
-> AST contract
-> Guizang production brief
-> real Guizang Swiss generation
-> Guizang validator
-> screenshot / visual QA
-> presenter adapter
-> GitHub Pages showcaseWorkstreams
1. Codex Workstream
Use Codex for repo-safe implementation and verification.
Scope:
scripts/humanize_ppt_v2.pyscripts/humanize_ppt.pytests/test_beautiful_preview.pytests/test_main_entrypoint.pydocs/versions/references/docs/showcase/
Tasks:
- Merge the local Guizang production-adapter experiment into current
0.6.3without reverting newer behavior. - Add CLI flags:
--guizang-template auto|classic|swiss--guizang-skill-root--min-slides--max-slides- optional
--guizang-themeif theme presets are formalized - Add source parsing:
- page-count hints like
15-18 页 建议页结构numbered lists- per-page title/message extraction
- Add render metadata:
- template slug
- skill root
- copied assets
- layout IDs
- layout count
- fallback status
- placeholder residue status
- Make QA fail on:
- fallback template
- too few slides
- low layout diversity
- remaining
[必填] - mismatch between planned layout count and actual HTML markers
- Keep existing English style-gallery tests green.
Verification:
python3 -m py_compile scripts/humanize_ppt_v2.py
python3 -m pytest -q
python3 scripts/smoke_check.pyIf local pytest is unavailable, use scripts/smoke_check.py plus targeted no-dependency Python smoke tests, and state that clearly.
2. Claude Code Workstream
Use Claude Code for Guizang fidelity and visual judgment.
Scope:
- read-only reference:
/Users/carl/.agents/skills/guizang-ppt-skill/SKILL.md/Users/carl/.agents/skills/guizang-ppt-skill/references/layouts-swiss.md/Users/carl/.agents/skills/guizang-ppt-skill/references/swiss-layout-lock.md/Users/carl/.agents/skills/guizang-ppt-skill/references/checklist.md/Users/carl/.agents/skills/guizang-ppt-skill/assets/template-swiss.html- write targets in this repo:
references/guizang-production-adapter.mddocs/versions/v0.6.4-guizang-production-adapter.md- visual QA notes under
docs/showcase/codex-guizang-black-white/
Tasks:
- Convert the current simplified layout generator into a Guizang-compatible production spec.
- Define a strict intermediate artifact:
guizang_production_plan.jsonpage_layout_map.mdvisual_qa_report.md- For every slide, require:
- page number
- chosen
Sxx - why this layout fits the content
- required slots
- forbidden shortcuts
- validation result
- Identify which generated slides violate Guizang Swiss locked mode.
- Recommend fixes using existing
S01-S22registered layouts only.
Claude Code should not blindly rewrite the whole project. It should produce the Guizang fidelity spec and review notes, then Codex can wire them into the implementation.
Acceptance Criteria
A future run should produce:
outputs/guizang/index.htmloutputs/guizang/render_manifest.jsonoutputs/guizang/guizang_production_plan.jsonoutputs/guizang/page_layout_map.mdoutputs/guizang/visual_qa_report.mdoutputs/qa/qa_report.md
And these checks must pass:
- no
[必填] - no fallback template
- slide count respects source hints
data-layout="Sxx"count equals slide count- at least 6 unique Swiss layouts for 7-8 page decks, higher for longer decks
- no invented non-registered layout IDs
- presenter adapter can control the deck
- GitHub Pages showcase is accessible
Current Showcase Evidence
Use this as the baseline artifact, not as the final quality target:
docs/showcase/codex-guizang-black-white/index.htmldocs/showcase/codex-guizang-black-white/reports/render_report.mddocs/showcase/codex-guizang-black-white/reports/render_manifest.jsondocs/showcase/codex-guizang-black-white/reports/qa_report.md
Suggested Prompt For The Next Agent
你要同时协调 Claude Code 和 Codex,升级 LearnPrompt/humanize-ppt 的 Guizang production adapter。
先读:
- docs/plans/2026-05-31-guizang-production-adapter-upgrade.md
- docs/showcase/codex-guizang-black-white/README.md
- scripts/humanize_ppt_v2.py
- tests/test_beautiful_preview.py
- /Users/carl/.agents/skills/guizang-ppt-skill/SKILL.md
- /Users/carl/.agents/skills/guizang-ppt-skill/references/layouts-swiss.md
- /Users/carl/.agents/skills/guizang-ppt-skill/references/swiss-layout-lock.md
目标:
把现在的 60%-70% Guizang adapter 升级成真正生产 adapter,但不要破坏 Humanize PPT 0.6.3 已有的 English 5-style gallery、presenter bridge、Beautiful selected-template 功能。
分工:
- Codex 负责 repo 内代码实现、测试、Pages showcase 更新、commit/push。
- Claude Code 负责 Guizang fidelity review:逐页检查是否符合 Swiss locked layouts,并输出 page_layout_map / visual_qa_report / 100% 还原所需规则。
先做小步提交,不要整文件覆盖。Guizang Native Workflow TODO
Date: 2026-06-03
Goal
Turn Humanize PPT into a reliable upstream planner for Guizang, not a competing Guizang renderer.
TODO 1: Make the Humanize -> Guizang Interface Explicit
- Define the Guizang production brief as Humanize's handoff artifact.
- Required outputs:
research_dossier.mdast_outline.mddeck_brief.mdslide_plan.jsonguizang-production-prompt.md- The prompt must tell the next agent to use
guizang-ppt-skill/SKILL.mdand the correct Guizang template/layout/theme/checklist files. - The prompt must distinguish Style A and Style B:
- Style A:
assets/template.html,references/layouts.md,references/themes.md - Style B:
assets/template-swiss.html,references/swiss-layout-lock.md,references/layouts-swiss.md,references/themes-swiss.md
TODO 2: Remove or Downgrade Misleading Renderer Adapter Behavior
- Audit scripts and docs for language that implies Humanize itself can produce 1:1 Guizang quality.
- Keep old adapter code only as a legacy/demo path if needed.
- Rename or document old adapter output as "template adapter" or "fallback preview", not "Guizang-native".
- Do not build a new renderer that copies Guizang template and injects custom sections.
TODO 3: Add Native Guizang QA Requirements
- Use
examples/03-codex-guizang-native-ink-classic/index.htmlas the current known-good Style A checkpoint. - Style A QA must check:
- no
[必填] - no
SLIDES_HERE canvas#bg-darkexistscanvas#bg-lightexistsbody.low-poweris not active by default- hero pages expose WebGL background
- meaningful
data-anim/data-animatemarkers exist - Style B QA must run Guizang's
scripts/validate-swiss-deck.mjs. - Screenshot QA should save at least cover, one middle page, and closing page.
Current Known-Good Evidence
- Deck path:
examples/03-codex-guizang-native-ink-classic/index.html - Preview screenshots:
examples/03-codex-guizang-native-ink-classic/preview-slide-01.pngexamples/03-codex-guizang-native-ink-classic/preview-slide-05.pngexamples/03-codex-guizang-native-ink-classic/preview-slide-10.png- Verified behavior in the source experiment:
- 10 slides
- no template placeholders
- 86
data-animoccurrences - WebGL context available
- low-power mode off
- screenshot pixel samples changed across time after hero transparency fix
Non-Goals
- Do not push to GitHub in this checkpoint.
- Do not rewrite the whole Humanize runner in one pass.
- Do not remove existing examples.
- Do not modify the installed Guizang skill unless a separate task explicitly asks for it.
MiniMax M3 / Claude Code Handoff: Guizang Native Workflow
Date: 2026-06-03
Current Checkpoint
This repository now contains a verified Guizang Style A native sample:
examples/03-codex-guizang-native-ink-classic/index.htmlexamples/03-codex-guizang-native-ink-classic/assets/motion.min.jsexamples/03-codex-guizang-native-ink-classic/preview-slide-01.pngexamples/03-codex-guizang-native-ink-classic/preview-slide-05.pngexamples/03-codex-guizang-native-ink-classic/preview-slide-10.png
The sample is based on the local experiment:
/Users/carl/Documents/Codex/2026-05-31/herems-profile-stepaux-stepflash/outputs/native-guizang-style-a-ink-classic-20260603-010507/
It uses Guizang Style A / Ink Classic and keeps the real Guizang template mechanics:
assets/template.htmlreferences/themes.mdreferences/layouts.mdassets/motion.min.jsdata-animanddata-animate- WebGL dual canvas background
The key visual fix in the checkpoint is:
.slide.hero.light,.slide.hero.dark{background:transparent}Without this, the Style A hero pages can hide the WebGL canvas behind solid .slide.light / .slide.dark backgrounds.
Lesson Learned
The previous direction was too adapter-heavy.
Humanize PPT should not reimplement Guizang's HTML renderer. Guizang quality comes from its own skill instructions, layout skeletons, theme rules, animation markers, and visual QA flow.
The correct boundary is:
Humanize PPT
-> research dossier
-> AST outline
-> deck brief
-> slide plan
-> Guizang production prompt
-> guizang-ppt-skill native generationThe incorrect boundary is:
Humanize PPT
-> copy Guizang template
-> inject custom sections
-> call it Guizang-nativeThat second path is only a partial template adapter. It is not the Guizang skill itself.
Hard Rules
- Do not create a new Guizang HTML renderer inside Humanize PPT.
- Do not invent Guizang layout classes.
- Do not generate slides from scratch when Guizang has a matching layout skeleton.
- Humanize output must be a production brief for Guizang, not the final Guizang deck.
- Final PPT HTML must be generated by following
guizang-ppt-skill/SKILL.md. - Style A generation must preserve hero WebGL visibility,
data-anim,data-animate, and Motion One loading. - Style B generation must stay in Swiss locked mode and run Guizang's Swiss validator.
Claude Code Startup Prompt
Use this prompt to start the MiniMax M3 / Claude Code dynamic workflow:
You are working in /Users/carl/Downloads/humanize-ppt.
Read docs/plans/minimax-m3-claude-code-guizang-native-handoff.md and docs/plans/guizang-native-workflow-todo.md first.
Goal:
Upgrade Humanize PPT so it stops pretending to be a Guizang renderer. Humanize should produce research/AST/deck brief/slide plan/Guizang production prompt. The final PPT HTML should be generated by guizang-ppt-skill natively.
Important context:
- Verified sample: examples/03-codex-guizang-native-ink-classic/index.html
- The sample proves Style A / Ink Classic works when Guizang template + layouts are respected.
- The key fix for visible Style A WebGL hero background is:
.slide.hero.light,.slide.hero.dark{background:transparent}
Hard constraints:
- Do not write a new Guizang HTML renderer.
- Do not copy Guizang template and inject custom sections as a replacement for Guizang skill generation.
- Do not remove existing Humanize compatibility paths without a focused reason.
- Keep changes small and verifiable.
Suggested lanes:
Lane A: Define Humanize -> Guizang production brief outputs.
Lane B: Find old adapter renderer paths and mark/deprecate misleading behavior.
Lane C: Add a native Guizang smoke/QA checklist using the verified Ink Classic sample.
Expected result:
Propose and implement the smallest repo change that makes the Guizang-native boundary explicit and hard to regress.Acceptance Signals
The next working version should make these statements true:
- A maintainer can tell where Humanize stops and Guizang begins.
- A generated Guizang production prompt tells another agent to read Guizang's own
SKILL.md, template, themes, layouts, and checklist. - The old adapter path is not presented as equivalent to Guizang-native generation.
- The Ink Classic checkpoint remains openable as a known-good visual reference.
- A Style A smoke check includes hero background visibility,
canvas#bg-dark,canvas#bg-light,data-anim, and no low-power mode.
Presenter Adapter
V0.1 uses a shell-style presenter adapter.
It does not rewrite the rendered deck. It wraps it.
final/
deck/index.html
presenter/index.html
presenter/notes.jsonMinimum features:
- current slide preview
- next slide preview
- speaker notes
- timer
- keyboard navigation
- no visual mutation of the audience deck
Future bridge targets:
- generic hash navigation
- guizang-style deck bridge
- Zara deck-stage bridge
Router Rules
Humanize PPT V0.3 routes by presentation intent, not by a fixed downstream Skill list. Recommended renderers are pairings, not the product boundary.
Primary renderer selection
| Signal | Route |
|---|---|
| Chinese content + stability first | guizang |
| User asks for Swiss / magazine style | guizang |
User asks to compare styles or --style-mode preview-first | beautiful-html-templates |
| User needs presenter mode / speaker script as the main deliverable | html-ppt |
Input is .ppt / .pptx | frontend-slides |
| User explicitly names a renderer | respect the explicit renderer |
Post-processing routes
- Needs live talk / speaker notes → add
html-pptpresenter route after primary deck selection. - Needs motion / inserted video → emit
video_slots.json; route to HyperFrames / Remotion as material producer, not as PPT replacement. - Needs shareable URL / PDF → add deploy/export adapter after deck QA.
- Every run → add
qaroute.
Hard boundaries
- Downstream renderers must consume
deck_brief.md,ast_outline.md,slide_plan.json,speaker_intent.md, andasset_manifest.md; they should not consume raw source unless the command file explicitly permits it. - Presenter mode is a post-processing adapter, not a visual style.
- Humanize PPT can be invoked alone, but it remains the router/director layer; it should not absorb every template into one monolithic renderer.
Codex Guizang Black White Showcase
Legacy template adapter, superseded by v0.6.4 (2026-06-03). This showcase
was generated by the pre-v0.6.4 Humanize adapter that copied the Guizang Swiss
template and injected custom sections. v0.6.4 replaces that path with a
brief-only contract: Humanize writes guizang-production-prompt.md andstops; guizang-ppt-skill renders natively. This file is kept for visualcomparison and historical context only. The current known-good Style A
checkpoint is at examples/03-codex-guizang-native-ink-classic/.This showcase is a watchable intermediate artifact for the Guizang production-adapter upgrade.
- Deck:
index.html - Renderer:
guizang-ppt-skill/assets/template-swiss.html - Theme override: experimental black-white mono, not an official Guizang preset
- Slides: 16
- Swiss layout markers: 16
- Layout variety: 10 unique
Sxxlayouts - Required placeholders: 0
- QA: pass
Links
- Local / Pages entry:
docs/showcase/codex-guizang-black-white/index.html - Render report:
reports/render_report.md - Render manifest:
reports/render_manifest.json - QA report:
reports/qa_report.md - Source slide plan:
source/slide_plan.json
Important Caveat
This is not yet a 1:1 Guizang-quality deck. It uses the real Swiss template and records layout IDs, but the slide HTML is still generated by the Humanize PPT adapter with simplified Swiss structures. The next upgrade should make Humanize PPT hand off a strict production brief to a real Guizang generation pass, then validate the result with Guizang's own layout rules, screenshots, and visual QA.
QA Report
- status: pass
Checks
- [x] deck_brief.md
- [x] ast_outline.md
- [x] slide_plan.json
- [x] speaker_intent.md
- [x] asset_manifest.md
- [x] video_slots.json
- [x] router_plan.json
- [x] run_manifest.json
- [x] visible_slide_text_has_no_ai_draft_markers
{
"version": "0.6.0",
"generated_at": "2026-05-31T01:57:42+00:00",
"status": "rendered",
"template": "/Users/carl/.agents/skills/guizang-ppt-skill/assets/template-swiss.html",
"template_slug": "swiss",
"skill_root": "/Users/carl/.agents/skills/guizang-ppt-skill",
"output": "/Users/carl/Documents/Codex/2026-05-31/herems-profile-stepaux-stepflash/outputs/humanize-guizang-black-white-ppt/outputs/guizang/index.html",
"slide_count": 16,
"min_slides": 15,
"layout_ids": [
"S01",
"S03",
"S08",
"S11",
"S14",
"S15",
"S04",
"S05",
"S19",
"S03",
"S08",
"S11",
"S14",
"S15",
"S04",
"S09"
],
"layout_count": 10,
"copied_assets": [
"/Users/carl/Documents/Codex/2026-05-31/herems-profile-stepaux-stepflash/outputs/humanize-guizang-black-white-ppt/outputs/guizang/assets/motion.min.js"
],
"theme_override": {
"mode": "black-white experimental",
"accent": "#050505",
"official_guizang_preset": false
}
}Guizang Render Report
- status: rendered
- template: /Users/carl/.agents/skills/guizang-ppt-skill/assets/template-swiss.html
- template_slug: swiss
- skill_root: /Users/carl/.agents/skills/guizang-ppt-skill
- reason: tech/tutorial content prefers Swiss
- output: /Users/carl/Documents/Codex/2026-05-31/herems-profile-stepaux-stepflash/outputs/humanize-guizang-black-white-ppt/outputs/guizang/index.html
- slides: 16
- min_slides: 15
- layout_count: 10
- layout_ids: S01, S03, S08, S11, S14, S15, S04, S05, S19, S03, S08, S11, S14, S15, S04, S09
- copied_assets: 1
Theme Override
- mode: black-white experimental
- accent: #050505
- note: This is a monochrome preview variant for visual review, not an official guizang-ppt-skill preset.
Deck Brief
Title
Codex 入门教程:从第一次启动到让它真正帮你交付
Source
outputs/ppt-run-20260531-091416-humanize-redo/source.md
Deck Goal
把《Codex 入门教程:从第一次启动到让它真正帮你交付》整理成可讲、可生成、可交付的PPT生产契约。
Audience
对AI工具、PPT生产、Agent工作流感兴趣的内容创作者、产品人和独立开发者。
Initial State
听众知道一些零散信息,但缺少清晰判断和行动路径。
Desired State
听众能复述核心判断,理解为什么现在要做,并知道下一步怎么执行。
Core Tension
资料很多,但能让观众听懂、记住、复述的路径不清晰。
Success Criteria
- 观众能用一句话说出这份PPT的核心判断。
- 每页只承担一个状态转移任务。
- 下游渲染器不直接吞原始素材,只消费Humanize PPT契约。
{
"type": "module",
"dependencies": {
"@remotion/cli": "4.0.465",
"react": "18.3.1",
"react-dom": "18.3.1",
"remotion": "4.0.465"
}
}
Fix Prompt
No open findings. Convergence reached.
{
"iteration": 2,
"status": "pass",
"max_iterations": 3,
"renderer": "beautiful-html-templates",
"style": "A",
"unresolved": [],
"history": [
{
"iteration": 1,
"status": "pass",
"fail_count": 0,
"warn_count": 0,
"unresolved_ids": [],
"resolved_ids": []
},
{
"iteration": 2,
"status": "pass",
"fail_count": 0,
"warn_count": 0,
"unresolved_ids": [],
"resolved_ids": []
}
]
}QA Report
- iteration: 2 / 3
- status: pass
- fail: 0
- warn: 0
Findings
No findings. Deck is clean.
Beautiful Render Report
- status: rendered
- mode: selected-template-full-deck
- template: neo-grid-bold
- output: ppt/index.html
- slides: 11
- visual_pass: replaced generic selected-template output with a Neo-Grid Bold production deck using the selected template's 12-column x 8-row grid, ink/paper/lemon palette, Space Grotesk display type, and JetBrains Mono labels.
- screenshot_contact_sheet: not published
- overflow_check: pass, 11 slides, 0 text-boundary offenders
- video_check: pass, S10 video readyState=4 and autoplay active in browser QA
- closing_page: S11 added as the final Hermes-specific close after material test pages
- material_test_pages: S09 uses GPT Image 2 still, S10 uses Remotion MP4 + poster
.DS_Store
*.tmp
*.tmp.*
*.log
node_modules/
backups/