hugohe3/ppt-master
AI turns documents or topics into real, native PowerPoint decks—with native shapes, transitions and animations, data-backed charts and tables on demand, audio narration from speaker notes, and support for your own .pptx templates. · by Hugo He
Python★ 59,679+461 that day#3 on trending
C55.2/100
Duplication85
2% in python, javascript, bash, perlDead code68
4.2%Complexity29
89.2% The score is jscpd's own --health model: markup, data and text left out, tests kept. The numbers below are the trending scan's.
1.85%duplicated code · 3,550 of 192,018 lines
266clones in code
252code files of 6,257 scanned
11.22%duplicated over all files · 3,212 clones
Most complex files
- skills/ppt-master/scripts/svg_quality/checker.py2490 cx
- skills/ppt-master/scripts/svg_to_pptx/pptx_package/builder.py1781 cx
- skills/ppt-master/scripts/confirm_ui/static/app.js1639 cx
- skills/ppt-master/scripts/svg_to_pptx/drawingml/elements.py1104 cx
- skills/ppt-master/scripts/svg_to_pptx/drawingml/utils.py1019 cx
- skills/ppt-master/scripts/pptx_to_svg/chart_to_svg.py982 cx
- skills/ppt-master/scripts/svg_editor/static/app.js981 cx
- skills/ppt-master/scripts/svg_to_pptx/pptx_package/template_structure.py944 cx
- skills/ppt-master/scripts/mirror_template_materialize.py868 cx
- skills/ppt-master/scripts/pptx_animations.py856 cx
Dead code 4.2% unused · 43 findings
- skills/ppt-master/scripts/confirm_ui/static/app.jsunused-file
- skills/ppt-master/scripts/svg_editor/static/app.jsunused-file
- skills/ppt-master/scripts/spec_review/static/app.jsunused-file
- skills/ppt-master/scripts/svg_to_pptx/pptx_package/dimensions.py:get_slide_dimensionsunused-export
- skills/ppt-master/scripts/svg_to_pptx/native_objects/chart_style.py:_bool_attrunused-import
- skills/ppt-master/scripts/svg_to_pptx/native_objects/chart_style.py:_boundsunused-import
- skills/ppt-master/scripts/svg_to_pptx/pptx_package/dimensions.py:get_pixel_dimensionsunused-export
- skills/ppt-master/scripts/svg_to_pptx/native_objects/chart_style.py:_chart_boolunused-import
- skills/ppt-master/scripts/svg_to_pptx/native_objects/chart_style.py:_fallback_fill_candidatesunused-import
- skills/ppt-master/scripts/svg_to_pptx/pptx_package/dimensions.py:detect_format_from_svgunused-export
The code number leaves out tests, fixtures, docs, examples, data files, styles, translations and vendored code.
Largest clones in the code
- 28 lines in 6 placespython117 tokensskills/ppt-master/scripts/image_backends/backend_minimax.py:228–255skills/ppt-master/scripts/image_backends/backend_modelscope.py:162–189skills/ppt-master/scripts/image_backends/backend_qwen.py:198–225skills/ppt-master/scripts/image_backends/backend_siliconflow.py:156–183skills/ppt-master/scripts/image_backends/backend_volcengine.py:177–204and 1 more
228base_url = os.environ.get("MINIMAX_BASE_URL") or DEFAULT_ENDPOINT 229 230last_error = None 231for attempt in range(max_retries + 1): 232 try: 233 return _generate_image( 234 api_key=api_key, 235 prompt=prompt, 236 aspect_ratio=aspect_ratio, 237 image_size=normalized_size,First 10 of 28 lines.
- 60 lines in 2 placespython433 tokensskills/ppt-master/scripts/svg_to_pptx/drawingml/elements.py:3861–3920skills/ppt-master/scripts/svg_to_pptx/drawingml/elements.py:3962–4021
3861def close(actual: float, expected: float) -> bool: 3862 return math.isclose(actual, expected, rel_tol=1e-9, abs_tol=1e-6) 3863 3864try: 3865 if shape_tag == 'circle': 3866 cx = _effective_clip_geometry_length(shape, 'cx', default=0.0) 3867 cy = _effective_clip_geometry_length(shape, 'cy', default=0.0) 3868 radius = _effective_clip_geometry_length(shape, 'r', default=0.0) 3869 fits = ( 3870 close(expected_w, expected_h)First 10 of 60 lines.
- 17 lines in 7 placespython68 tokensskills/ppt-master/scripts/image_backends/backend_bfl.py:8–24skills/ppt-master/scripts/image_backends/backend_fal.py:8–24skills/ppt-master/scripts/image_backends/backend_ideogram.py:8–24skills/ppt-master/scripts/image_backends/backend_minimax.py:8–24skills/ppt-master/scripts/image_backends/backend_openrouter.py:8–24and 2 more
8 BFL_MODEL (optional) 9""" 10 11import sys 12from pathlib import Path 13 14_SCRIPTS_DIR = Path(__file__).resolve().parents[1] 15if str(_SCRIPTS_DIR) not in sys.path: 16 sys.path.insert(0, str(_SCRIPTS_DIR)) 17First 10 of 17 lines.
7 more
- 11 lines in 7 placespython68 tokensskills/ppt-master/scripts/image_backends/backend_bfl.py:172–182skills/ppt-master/scripts/image_backends/backend_fal.py:137–147skills/ppt-master/scripts/image_backends/backend_ideogram.py:142–152skills/ppt-master/scripts/image_backends/backend_qwen.py:178–188skills/ppt-master/scripts/image_backends/backend_replicate.py:160–170and 2 more
- 17 lines in 6 placespython69 tokensskills/ppt-master/scripts/image_backends/backend_minimax.py:8–24skills/ppt-master/scripts/image_backends/backend_qwen.py:8–24skills/ppt-master/scripts/image_backends/backend_replicate.py:8–24skills/ppt-master/scripts/image_backends/backend_siliconflow.py:8–24skills/ppt-master/scripts/image_backends/backend_volcengine.py:8–24and 1 more
- 15 lines in 7 placespython55 tokensskills/ppt-master/scripts/image_backends/backend_bfl.py:24–38skills/ppt-master/scripts/image_backends/backend_fal.py:24–38skills/ppt-master/scripts/image_backends/backend_ideogram.py:24–38skills/ppt-master/scripts/image_backends/backend_qwen.py:24–38skills/ppt-master/scripts/image_backends/backend_siliconflow.py:24–38and 2 more
- 18 lines in 6 placespython56 tokensskills/ppt-master/scripts/image_backends/backend_fal.py:25–42skills/ppt-master/scripts/image_backends/backend_ideogram.py:25–42skills/ppt-master/scripts/image_backends/backend_qwen.py:25–42skills/ppt-master/scripts/image_backends/backend_siliconflow.py:25–42skills/ppt-master/scripts/image_backends/backend_volcengine.py:25–42and 1 more
- 17 lines in 3 placespython137 tokens
- 14 lines in 4 placespython90 tokens
- 10 lines in 3 placespython123 tokens
Largest clones over all files, tests and data included
- 14 lines in 169 placesmarkupmarkup50 tokensskills/ppt-master/templates/icons/tabler-outline/accessible.svg:6–19skills/ppt-master/templates/icons/tabler-outline/aperture.svg:6–19skills/ppt-master/templates/icons/tabler-outline/ball-basketball.svg:6–19skills/ppt-master/templates/icons/tabler-outline/ball-bowling.svg:6–19skills/ppt-master/templates/icons/tabler-outline/ball-football.svg:6–19and 164 more
6--> 7<svg 8 xmlns="http://www.w3.org/2000/svg" 9 width="24" 10 height="24" 11 viewBox="0 0 24 24" 12 fill="none" 13 stroke="currentColor" 14 stroke-width="2" 15 stroke-linecap="round"First 10 of 14 lines.
- 14 lines in 84 placesmarkupmarkup50 tokensskills/ppt-master/templates/icons/tabler-outline/alert-square.svg:6–19skills/ppt-master/templates/icons/tabler-outline/align-box-bottom-center.svg:6–19skills/ppt-master/templates/icons/tabler-outline/align-box-bottom-left.svg:6–19skills/ppt-master/templates/icons/tabler-outline/align-box-bottom-right.svg:6–19skills/ppt-master/templates/icons/tabler-outline/align-box-left-bottom.svg:6–19and 79 more
6--> 7<svg 8 xmlns="http://www.w3.org/2000/svg" 9 width="24" 10 height="24" 11 viewBox="0 0 24 24" 12 fill="none" 13 stroke="currentColor" 14 stroke-width="2" 15 stroke-linecap="round"First 10 of 14 lines.
- 9 lines in 42 placesmarkupmarkup55 tokensskills/ppt-master/templates/icons/tabler-outline/adjustments-cog.svg:26–34skills/ppt-master/templates/icons/tabler-outline/api-book.svg:22–30skills/ppt-master/templates/icons/tabler-outline/basket-cog.svg:21–29skills/ppt-master/templates/icons/tabler-outline/bell-cog.svg:18–26skills/ppt-master/templates/icons/tabler-outline/calendar-cog.svg:21–29and 37 more
26 <path d="M18 9v2.5" /> 27 <path d="M17.001 19a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" /> 28 <path d="M19.001 15.5v1.5" /> 29 <path d="M19.001 21v1.5" /> 30 <path d="M22.032 17.25l-1.299 .75" /> 31 <path d="M17.27 20l-1.3 .75" /> 32 <path d="M15.97 17.25l1.3 .75" /> 33 <path d="M20.733 20l1.3 .75" /> 34</svg> - 15 lines in 40 placesmarkupmarkup57 tokensskills/ppt-master/templates/icons/tabler-outline/file-3d.svg:6–20skills/ppt-master/templates/icons/tabler-outline/file-alert.svg:6–20skills/ppt-master/templates/icons/tabler-outline/file-analytics.svg:6–20skills/ppt-master/templates/icons/tabler-outline/file-arrow-left.svg:6–20skills/ppt-master/templates/icons/tabler-outline/file-arrow-right.svg:6–20and 35 more
- 14 lines in 25 placesmarkupmarkup90 tokensskills/ppt-master/templates/icons/tabler-outline/circle-dotted-letter-a.svg:19–32skills/ppt-master/templates/icons/tabler-outline/circle-dotted-letter-b.svg:18–31skills/ppt-master/templates/icons/tabler-outline/circle-dotted-letter-c.svg:18–31skills/ppt-master/templates/icons/tabler-outline/circle-dotted-letter-d.svg:18–31skills/ppt-master/templates/icons/tabler-outline/circle-dotted-letter-e.svg:19–32and 20 more
By format, code only
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| python | 239 | 182,802 | 256 | 3,424 | 1.87% |
| javascript | 3 | 8,354 | 10 | 126 | 1.51% |
| bash | 9 | 694 | 0 | 0 | 0% |
| perl | 1 | 168 | 0 | 0 | 0% |
By format, all files
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| markup | 5,534 | 146,902 | 2,704 | 40,066 | 27.27% |
| python | 295 | 197,053 | 318 | 4,024 | 2.04% |
| markdown | 276 | 36,107 | 94 | 834 | 2.31% |
| json | 30 | 24,651 | 60 | 1,871 | 7.59% |
| bash | 50 | 2,593 | 14 | 88 | 3.39% |
| javascript | 4 | 8,362 | 10 | 126 | 1.51% |
| text | 39 | 624 | 7 | 52 | 8.33% |
| yaml | 17 | 612 | 3 | 52 | 8.5% |
| css | 3 | 2,261 | 1 | 11 | 0.49% |
| txt | 6 | 657 | 1 | 6 | 0.91% |
Trending appearances
| Day | Rank | Stars | Files | Lines | Clones | All files | Code | Health | Commit |
|---|---|---|---|---|---|---|---|---|---|
| Oct 11, 2026 | #3 | 59,679 (+461) | 6,257 | 420,018 | 3,212 | 11.22% | 1.85% | C 55.2 | b4efe3d |
Want this for your own project? Install jscpd and run jscpd ., or measure it the way the baselines were measured.