[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-83284":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":31,"readmeContent":32,"aiSummary":10,"trendingCount":16,"starSnapshotCount":16,"syncStatus":33,"lastSyncTime":34,"discoverSource":35},83284,"speaker","AI272\u002Fspeaker","AI272","Speaker is a Codex skill project for academic presentations: read real.pptx, combine text extraction, PPTX structure parsing, page-by-page rendering, OCR, and visual review to generate page-by-page speaker notes, and write a clean version of the lecture into the PowerPoint comment area.","",null,"Python",216,6,57,1,0,11,151,85,89.54,false,"main",true,[25,26,27,28,29,30],"ai","claude-code","claude-code-skill","codex","codex-skill","skill","2026-06-12 04:01:40","# speaker\n\n![speaker cover](assets\u002Fspeaker-cover.png)\n\n[中文说明](README.zh.md)\n\n`speaker` is a Codex skill project for academic presentations. It reads a real `.pptx`, combines text extraction, PPTX structure inspection, slide rendering, OCR, and vision review, then generates grounded speaker notes and injects the clean script into PowerPoint's speaker notes pane.\n\n> Current skill package: `speaker-v7.skill`  \n> Internal skill name: `ppt-speech-writer`\n\n## What It Solves\n\nMany presentation-note tools only read text boxes. That misses charts, screenshots, SmartArt, axes, legends, tables, and text embedded in images. This skill is designed to keep speaker notes grounded in the actual slides:\n\n- Build a visible-element inventory for every slide.\n- Review visually complex content with a vision-capable agent or human reviewer.\n- Tie each spoken sentence to visible slide evidence.\n- Produce two versions: a display version for rehearsal and a clean version for PowerPoint notes.\n\n## Workflow\n\n```mermaid\nflowchart TD\n    A[Input .pptx] --> B[Structured Extraction]\n    B --> C[Render Slides to PNG]\n    C --> D[OCR and Visual Inventory]\n    D --> E[Vision Review]\n    E --> F[Deck Comprehension Brief]\n    F --> G[Narrative Arc]\n    G --> H[Slide-by-Slide Display Notes]\n    H --> I[Clean Notes JSON]\n    H --> J[Display Version DOCX or Markdown]\n    I --> K[Inject Notes into PPTX]\n    K --> L[Output PPTX with Speaker Notes]\n```\n\n## Evidence Chain\n\n```mermaid\ngraph LR\n    XML[PPTX XML] --> INV[Visible Element Inventory]\n    TEXT[Text Boxes] --> INV\n    TABLE[Tables] --> INV\n    CHART[Native Charts] --> INV\n    IMAGE[Rendered Slide Images] --> INV\n    OCR[OCR Text] --> INV\n    VISION[Vision Review] --> INV\n    INV --> NOTES[Grounded Speaker Notes]\n```\n\n## Features\n\n| Feature | Description |\n|---|---|\n| Text extraction | Extracts titles, body text, placeholders, and text boxes |\n| Table extraction | Reads row and column text from PowerPoint tables |\n| Chart extraction | Attempts to read native chart titles, categories, series, values, axes, and legends |\n| OOXML fallback | Extracts additional slide XML text not exposed by `python-pptx`, including some SmartArt or grouped-shape text |\n| Slide rendering | Renders slides to PNG so the final visual presentation can be inspected |\n| OCR | Optionally reads text in screenshots, images, small labels, and other visual regions |\n| Vision review | Produces a review packet for a vision-capable agent or human reviewer |\n| Notes injection | Writes clean speaker notes into the PowerPoint notes pane |\n| Display document | Generates a complete rehearsal document as `.docx`, with Markdown fallback when `python-docx` is unavailable |\n\n## Repository Layout\n\n```text\nppt-speech-writer\u002F\n├── SKILL.md\n└── scripts\u002F\n    ├── read_slides.py\n    ├── render_slides.py\n    ├── visual_inventory.py\n    ├── vision_review.py\n    ├── write_display_docx.py\n    └── inject_notes.py\n\nspeaker-v7.skill\n```\n\nClaude Code compatibility:\n\n```text\n.claude\u002Fskills\u002Fppt-speech-writer -> ..\u002F..\u002Fppt-speech-writer\nCLAUDE.md\n```\n\n## Installation\n\nDownload or use the packaged skill:\n\n```text\nspeaker-v7.skill\n```\n\nInstall it using your Codex client's skill import flow. Once installed, use it when you need speaker notes, presenter notes, a speech script, or narration for a real `.pptx` file.\n\nFor Claude Code, this repository includes a project skill at `.claude\u002Fskills\u002Fppt-speech-writer`. Open Claude Code from the repository root and invoke:\n\n```text\n\u002Fppt-speech-writer\n```\n\nIf Claude Code is already running, use `\u002Freload-skills` after pulling updates.\n\n## Example Prompt\n\n```text\nUse speaker \u002F ppt-speech-writer to write a 15-minute academic presentation script\nfor this PowerPoint deck. Inject the clean script into speaker notes and also\ngenerate a complete display-version rehearsal document.\n```\n\nThe skill will:\n\n1. Read the full deck.\n2. Render every slide.\n3. Build a visual inventory.\n4. Run vision review for visually complex content.\n5. Produce a Deck Comprehension Brief.\n6. Confirm the narrative arc.\n7. Write display notes and clean notes.\n8. Generate the complete display document.\n9. Inject clean notes into the `.pptx`.\n10. Keep intermediate evidence files inside `work\u002F`.\n\nBefore writing notes, the skill must explicitly confirm the output language. It does not infer the note language from the language you use in chat.\n\n## Outputs\n\nMost users only need the top-level deliverables:\n\n| Top-level output | Purpose |\n|---|---|\n| `\u003Cdeck-stem>-with-notes.pptx` | PowerPoint file with speaker notes injected |\n| `\u003Cdeck-stem>-display.docx` | Complete rehearsal script with slide labels, transitions, glossary, and timing table |\n| `\u003Cdeck-stem>-display.md` | Markdown fallback when `python-docx` is unavailable |\n| `\u003Cdeck-stem>-vision-review.md` | Markdown packet for human or vision-agent review |\n\nIntermediate files are grouped under `work\u002F`:\n\n```text\n\u003Cdeck-stem>-speaker-output\u002F\n├── \u003Cdeck-stem>-with-notes.pptx\n├── \u003Cdeck-stem>-display.docx\n├── \u003Cdeck-stem>-display.md\n├── \u003Cdeck-stem>-vision-review.md\n└── work\u002F\n    ├── slide_extract.json\n    ├── visual_inventory.json\n    ├── vision_review_packet.json\n    ├── vision_review.json\n    ├── display_document.json\n    ├── notes.json\n    └── rendered_slides\u002F\n```\n\n## Script Reference\n\n### 1. Structured extraction\n\n```bash\npython scripts\u002Fread_slides.py \"\u002Fpath\u002Fto\u002Fdeck.pptx\" \\\n  --output \"\u003Cdeck-stem>-speaker-output\u002Fwork\u002Fslide_extract.json\"\n```\n\nReads text boxes, tables, charts, picture objects, OOXML text, and existing notes.\n\n### 2. Slide rendering\n\n```bash\npython scripts\u002Frender_slides.py \"\u002Fpath\u002Fto\u002Fdeck.pptx\" \\\n  --output-dir \"\u003Cdeck-stem>-speaker-output\u002Fwork\u002Frendered_slides\"\n```\n\nRenders slides to PNG. The script tries LibreOffice \u002F `soffice` first and falls back to macOS Quick Look when available.\n\n### 3. Visual inventory\n\n```bash\npython scripts\u002Fvisual_inventory.py \\\n  --extract \"\u003Cdeck-stem>-speaker-output\u002Fwork\u002Fslide_extract.json\" \\\n  --rendered-dir \"\u003Cdeck-stem>-speaker-output\u002Fwork\u002Frendered_slides\" \\\n  --output \"\u003Cdeck-stem>-speaker-output\u002Fwork\u002Fvisual_inventory.json\" \\\n  --ocr auto\n```\n\nCombines structured extraction, rendered slide paths, and OCR text into a per-slide coverage inventory.\n\n### 4. Vision review packet\n\n```bash\npython scripts\u002Fvision_review.py \\\n  --inventory \"\u003Cdeck-stem>-speaker-output\u002Fwork\u002Fvisual_inventory.json\" \\\n  --output \"\u003Cdeck-stem>-speaker-output\u002Fwork\u002Fvision_review_packet.json\" \\\n  --markdown \"\u003Cdeck-stem>-speaker-output\u002F\u003Cdeck-stem>-vision-review.md\"\n```\n\nPrepares review prompts and evidence for a vision-capable agent or human reviewer.\n\n### 5. Display document\n\n```bash\npython scripts\u002Fwrite_display_docx.py \\\n  --input \"\u003Cdeck-stem>-speaker-output\u002Fwork\u002Fdisplay_document.json\" \\\n  --output \"\u003Cdeck-stem>-speaker-output\u002F\u003Cdeck-stem>-display.docx\"\n```\n\nWrites the display-version rehearsal document. If `python-docx` is missing, it writes a Markdown fallback.\n\n### 6. Speaker notes injection\n\n```bash\npython scripts\u002Finject_notes.py \\\n  --input \"\u002Fpath\u002Fto\u002Fdeck.pptx\" \\\n  --output \"\u003Cdeck-stem>-speaker-output\u002F\u003Cdeck-stem>-with-notes.pptx\" \\\n  --notes \"\u003Cdeck-stem>-speaker-output\u002Fwork\u002Fnotes.json\" \\\n  --mode replace\n```\n\nInjects clean notes into the PowerPoint notes pane.\n\n## Display Version vs Clean Version\n\n```mermaid\nflowchart LR\n    A[One Grounded Source] --> B[Display Version]\n    A --> C[Clean Version]\n    B --> D[DOCX or Markdown for rehearsal]\n    C --> E[Injected into PPT notes pane]\n```\n\n| Version | Content | Use |\n|---|---|---|\n| Display version | Slide labels, separators, transitions, pauses, emphasis marks, glossary, timing table | Rehearsal and review |\n| Clean version | Spoken text only | Injected into PowerPoint speaker notes |\n\n## Language And Style Rules\n\n- The output language must be confirmed before drafting.\n- The full deliverable must use one language consistently.\n- Canonical technical terms may remain in English, but sentence grammar must follow the selected language.\n- Slide notes must not start with template phrases such as \"This slide shows...\" or \"On this slide...\".\n- Chinese notes must not start with phrases such as \"这一页展示了...\" or \"在这一页中...\"。\n- Each slide should open with the actual claim, finding, method role, or argument step.\n\n## Dependencies\n\nUseful dependencies:\n\n- `python-pptx` for PPTX structure extraction and speaker-note injection\n- LibreOffice \u002F `soffice` for high-quality slide rendering\n- macOS `qlmanage` as a rendering fallback\n- `tesseract` for OCR\n- `python-docx` for Word display documents\n\nIf a dependency is missing, the skill uses the strongest available evidence and reports the limitation. For complex charts, screenshots, SmartArt, and image-only slides, final notes should not be produced without vision review.\n\n## Limits\n\nThis skill aims to cover and explain visible slide elements as completely as possible. It does not claim that scripts can automatically understand every visual element with perfect semantic accuracy.\n\nWhy:\n\n- Images and screenshots are pixels, not structured semantic objects.\n- OCR can fail on small text, formulas, low contrast, or rotated labels.\n- SmartArt, arrows, and layout relationships often depend on author intent.\n- A chart may be a screenshot rather than a native PowerPoint chart.\n\nThe skill improves reliability through script-based discovery, rendering, OCR, vision review, and explicit coverage notes. Uncertain elements must be marked, not invented.\n\n## Updating The Package\n\nAfter modifying the source folder, rebuild the `.skill` package:\n\n```bash\nzip -r speaker-v8.skill ppt-speech-writer -x '*\u002F__pycache__\u002F*'\n```\n\nThe `.skill` file is a fixed package. Editing `ppt-speech-writer\u002F` does not automatically update an already packaged or installed skill.\n\n## Best For\n\n- Academic conference talks\n- Thesis defenses\n- Lab meetings\n- Research project briefings\n- Slide-grounded speaker scripts\n- Decks with charts, screenshots, SmartArt, or method diagrams\n\n## Not Ideal For\n\n- Free-form speeches that ignore slide content\n- Marketing copy that exaggerates beyond slide evidence\n- Requests without a real `.pptx` file\n- Workflows that cannot perform vision review for complex visual slides\n",2,"2026-06-11 04:10:47","CREATED_QUERY"]