skills/ppt-station-skill/scripts/rebuild_ppt.py
wangyitong a65adcc2e5 Initial commit: merged, deduplicated, and vetted skill collection
Sources: extracted from two upstream archives (skill-repo, skills-main),
merged with the following policy:

- 15 broken symlinks (pointing to /Users/jameslee/.cc-switch/skills or
  ../../.agents/skills on a foreign machine) discarded
- 3 real name collisions with identical content (ai-pair, ifind-http-api,
  zhipu-websearch) kept as one copy
- Functional overlaps deduped keeping the strongest variant:
  - docx family: kept docx (official, full toolchain) + docx-cn
    (GB/T 9704 Chinese official-document constants),
    dropped docx_writer (no scripts, name collided with docx)
  - humanizer family: kept humanizer-zh (6 zh reference docs),
    dropped humanizer (en, redundant for CN workflow)
- Skills that only ran in a foreign environment removed:
  ablemind-ops, app-publish, hlb-design-system, openclaw-adj-skill,
  claude-driver
- alphapai excluded from this public repo because its SKILL.md hard-coded
  live credentials

Result: 25 skills, 572 files, ~7.5 MB.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-13 14:47:12 +08:00

44 lines
1.1 KiB
Python

#!/usr/bin/env python3
"""从 JSON 重建 PPT
用法: python rebuild_ppt.py <input.json> <output.pptx>
"""
import sys
import json
import argparse
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
from ppt_station.renderers.ppt_renderer import render_from_json_file
def main():
parser = argparse.ArgumentParser(description="JSON → PPT 重建")
parser.add_argument("input", help="输入 .json 文件路径")
parser.add_argument("output", help="输出 .pptx 文件路径")
args = parser.parse_args()
input_path = Path(args.input)
output_path = Path(args.output)
if not input_path.exists():
print(f"错误: 文件不存在: {input_path}", file=sys.stderr)
sys.exit(1)
output_path.parent.mkdir(parents=True, exist_ok=True)
# 日志到 stderr
old_stdout = sys.stdout
sys.stdout = sys.stderr
render_from_json_file(input_path, output_path)
sys.stdout = old_stdout
print(json.dumps({"status": "ok", "output": str(output_path)}))
if __name__ == "__main__":
main()