Repository Analysis

harry0703/MoneyPrinterTurbo

利用AI大模型,一键生成高清短视频 Generate short videos with one click using AI LLM.

22.0 Moderate AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of harry0703/MoneyPrinterTurbo, a Python project with 97,268 GitHub stars. SynthScan v2.0 examined 28,619 lines of code across 96 source files, recording 593 pattern matches distributed across 14 syntactic categories. The overall adjusted score of 22.0 places this repository in the Moderate AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

22.0
Adjusted Score
22.0
Raw Score
100%
Time Factor
2026-07-13
Last Push
97.3K
Stars
Python
Language
28.6K
Lines of Code
96
Files
593
Pattern Hits
2026-07-14
Scan Date
0.02
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 0HIGH 2MEDIUM 46LOW 545

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 593 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Hyper-Verbose Identifiers415 hits · 379 pts
SeverityFileLineSnippetContext
LOWcli.py592def _path_is_within_directory(file_path: str, directory: str) -> bool:STRING
LOWcli.py602def _resolve_managed_resource_file(STRING
LOWapp/asgi.py25def validation_exception_handler(request: Request, e: RequestValidationError):CODE
LOWapp/config/config.py98def _decode_linux_route_gateway(hex_gateway: str) -> str:CODE
LOWapp/config/config.py112def get_container_default_gateway_ip(route_path: str = "/proc/net/route") -> str:CODE
LOWapp/config/config.py146def get_default_ollama_base_url() -> str:CODE
LOWapp/utils/utils.py193def time_convert_seconds_to_hmsm(seconds) -> str:CODE
LOWapp/utils/utils.py224def split_string_by_punctuations(s):STRING
LOWapp/utils/utils.py266def normalize_script_for_subtitle_matching(video_script: str) -> str:STRING
LOWapp/utils/file_security.py4def resolve_path_within_directory(CODE
LOWapp/models/llm_provider.py259def normalize_provider_override(value: str | None, default_value: str | None) -> str:CODE
LOWapp/controllers/v1/llm.py58def generate_video_social_metadata(CODE
LOWapp/controllers/v1/video.py64def _sanitize_upload_filename(filename: str, request_id: str) -> str:CODE
LOWapp/controllers/v1/video.py77def _resolve_path_within_directory(base_dir: str, unsafe_path: str, request_id: str) -> str:CODE
LOWapp/controllers/v1/video.py381def upload_video_material_file(request: Request, file: UploadFile = File(...)):CODE
LOWapp/services/task.py89def resolve_custom_audio_file(task_id: str, custom_audio_file: str | None) -> str:CODE
LOWapp/services/material.py386def _download_videos_by_script_order(CODE
LOWapp/services/cache_manager.py57def _iter_video_cache_entries() -> Iterator[_VideoCacheEntry]:CODE
LOWapp/services/llm.py85def _extract_chat_completion_text(response, llm_provider: str) -> str:STRING
LOWapp/services/llm.py114def _extract_qwen_generation_text(response) -> str:CODE
LOWapp/services/llm.py442def _normalize_script_paragraph_number(paragraph_number: int | None) -> int:CODE
LOWapp/services/llm.py736def _normalize_social_language(language: str | None) -> str:STRING
LOWapp/services/llm.py760def _social_language_instruction(language: str | None) -> str:STRING
LOWapp/services/llm.py811def build_social_metadata_prompt(STRING
LOWapp/services/llm.py881def _fallback_social_metadata(STRING
LOWapp/services/voice.py270def estimate_no_voice_duration(text: str) -> float:CODE
LOWapp/services/voice.py482def ensure_legacy_submaker_fields(sub_maker: SubMaker) -> SubMaker:CODE
LOWapp/services/voice.py497def populate_legacy_submaker_with_full_text(CODE
LOWapp/services/voice.py569def create_edge_tts_communicate(CODE
LOWapp/services/voice.py593def get_edge_tts_timeout_seconds() -> Union[float, None]:CODE
LOWapp/services/voice.py626def _stream_edge_tts_sync_with_timeout(CODE
LOWapp/services/voice.py960 def _format_duration_to_offset(duration) -> int:CODE
LOWapp/services/voice.py986 def speech_synthesizer_word_boundary_cb(evt: speechsdk.SessionEventArgs):CODE
LOWapp/services/voice.py1473def _build_subtitle_formatter():CODE
LOWapp/services/voice.py1575def _build_subtitle_items_from_edge_cues(CODE
LOWapp/services/voice.py1630def _build_subtitle_items_from_legacy_submaker(CODE
LOWapp/services/voice.py1705def _get_audio_duration_from_submaker(sub_maker: SubMaker):CODE
LOWapp/services/voice.py1719def _get_audio_duration_from_file(audio_file: str) -> float:CODE
LOWapp/services/video.py95def _get_required_video_duration(audio_duration: float) -> float:CODE
LOWapp/services/video.py106def is_material_resolution_acceptable(width: int, height: int) -> bool:CODE
LOWapp/services/video.py117def _prioritize_unique_source_clips(CODE
LOWapp/services/video.py171def _get_configured_video_codec() -> str:CODE
LOWapp/services/video.py223def _get_effective_video_codec(preferred_codec: str | None = None) -> str:CODE
LOWapp/services/video.py252def _disable_runtime_video_codec(codec: str, reason: str):CODE
LOWapp/services/video.py280def _fallback_write_videofile(clip, output_file: str, failed_codec: str, reason: str, **kwargs):CODE
LOWapp/services/video.py293def _write_videofile_with_codec_fallback(clip, output_file: str, codec: str, **kwargs):CODE
LOWapp/services/video.py316def _escape_ffmpeg_concat_path(file_path: str) -> str:CODE
LOWapp/services/video.py321def _format_ffmpeg_concat_path(file_path: str) -> str:CODE
LOWapp/services/video.py333def concat_video_clips_with_ffmpeg(CODE
LOWapp/services/video.py412def _open_image_clip_with_fallback(image_path: str):CODE
LOWapp/services/video.py848def _rounded_subtitle_background_clip(CODE
LOWapp/services/video.py870def _get_visible_center_position(CODE
LOWapp/services/video.py906def subtitle_colors_are_indistinguishable(params: VideoParams) -> bool:CODE
LOWapp/services/video.py922def _subtitle_font_supports_sample(font_path: str, sample: str) -> bool:CODE
LOWapp/services/video.py948def subtitle_font_supports_text(font_path: str, text: str) -> bool:CODE
LOWapp/services/video.py993 def resolve_subtitle_background_color():CODE
LOWapp/services/state.py153 def _convert_to_original_type(value):CODE
LOWtest/test_main.py11def test_main_starts_uvicorn_with_runtime_config():CODE
LOWtest/services/test_voice.py122 def test_no_voice_alias_none_is_supported_temporarily(self):CODE
LOWtest/services/test_voice.py131 def test_no_voice_duration_estimates_non_ascii_languages(self):CODE
355 more matches not shown…
Decorative Section Separators34 hits · 102 pts
SeverityFileLineSnippetContext
MEDIUMconfig.example.toml5# =============================================================================COMMENT
MEDIUMconfig.example.toml7# =============================================================================COMMENT
MEDIUMconfig.example.toml16# -----------------------------------------------------------------------------COMMENT
MEDIUMconfig.example.toml18# -----------------------------------------------------------------------------COMMENT
MEDIUMconfig.example.toml243# -----------------------------------------------------------------------------COMMENT
MEDIUMconfig.example.toml245# -----------------------------------------------------------------------------COMMENT
MEDIUMconfig.example.toml273# =============================================================================COMMENT
MEDIUMconfig.example.toml275# =============================================================================COMMENT
MEDIUMconfig.example.toml284# =============================================================================COMMENT
MEDIUMconfig.example.toml286# =============================================================================COMMENT
MEDIUMconfig.example.toml32# -----------------------------------------------------------------------------COMMENT
MEDIUMconfig.example.toml34# -----------------------------------------------------------------------------COMMENT
MEDIUMconfig.example.toml67# -----------------------------------------------------------------------------COMMENT
MEDIUMconfig.example.toml69# -----------------------------------------------------------------------------COMMENT
MEDIUMconfig.example.toml196# -----------------------------------------------------------------------------COMMENT
MEDIUMconfig.example.toml198# -----------------------------------------------------------------------------COMMENT
MEDIUMconfig.example.toml218# -----------------------------------------------------------------------------COMMENT
MEDIUMconfig.example.toml220# -----------------------------------------------------------------------------COMMENT
MEDIUMconfig.example.toml260# =============================================================================COMMENT
MEDIUMconfig.example.toml262# =============================================================================COMMENT
MEDIUMconfig.example.toml314# =============================================================================COMMENT
MEDIUMconfig.example.toml316# =============================================================================COMMENT
MEDIUMapp/services/llm.py689# =============================================================================STRING
MEDIUMapp/services/llm.py694# =============================================================================STRING
MEDIUMwebui/Main.py118# -----------------------------------------------------------------------------COMMENT
MEDIUMwebui/Main.py120# -----------------------------------------------------------------------------COMMENT
MEDIUMwebui/Main.py263# -----------------------------------------------------------------------------COMMENT
MEDIUMwebui/Main.py265# -----------------------------------------------------------------------------COMMENT
MEDIUMwebui/Main.py1664# -----------------------------------------------------------------------------COMMENT
MEDIUMwebui/Main.py1666# -----------------------------------------------------------------------------COMMENT
MEDIUMwebui/Main.py1919# -----------------------------------------------------------------------------COMMENT
MEDIUMwebui/Main.py1921# -----------------------------------------------------------------------------COMMENT
MEDIUMwebui/Main.py1125# -----------------------------------------------------------------------------STRING
MEDIUMwebui/Main.py1127# -----------------------------------------------------------------------------STRING
Excessive Try-Catch Wrapping71 hits · 66 pts
SeverityFileLineSnippetContext
LOWcli.py743 except Exception as exc:CODE
LOWapp/config/config.py189 except Exception as e:CODE
LOWapp/utils/utils.py56 except Exception as e:CODE
LOWapp/utils/utils.py175 except Exception as exc:CODE
LOWapp/utils/utils.py185 except Exception as e:CODE
MEDIUMapp/utils/utils.py28def to_json(obj):CODE
MEDIUMapp/utils/utils.py182def run():CODE
LOWapp/controllers/manager/base_manager.py34 except Exception:CODE
LOWapp/controllers/manager/base_manager.py81 except Exception:CODE
LOWapp/services/material.py106 except Exception as e:CODE
LOWapp/services/material.py162 except Exception as e:CODE
LOWapp/services/material.py238 except Exception as e:CODE
LOWapp/services/material.py285 except Exception as e:CODE
LOWapp/services/material.py289 except Exception as remove_error:CODE
LOWapp/services/material.py297 except Exception as close_error:CODE
LOWapp/services/material.py380 except Exception as e:CODE
LOWapp/services/material.py460 except Exception as e:CODE
LOWapp/services/llm.py398 except Exception as e:CODE
LOWapp/services/llm.py557 except Exception as e:STRING
LOWapp/services/llm.py667 except Exception as e:STRING
LOWapp/services/llm.py674 except Exception as e:STRING
LOWapp/services/llm.py861 except Exception:STRING
LOWapp/services/llm.py939 except Exception as e:STRING
LOWapp/services/bgm.py185 except Exception as exc:CODE
LOWapp/services/subtitle.py39 except Exception as e:CODE
MEDIUMapp/services/voice.py645def _produce_chunks():CODE
LOWapp/services/voice.py162 except Exception as e:CODE
LOWapp/services/voice.py650 except Exception as e:CODE
LOWapp/services/voice.py765 except Exception as e:CODE
LOWapp/services/voice.py773 except Exception as remove_error:CODE
LOWapp/services/voice.py892 except Exception as e:CODE
LOWapp/services/voice.py916 except Exception as e:CODE
LOWapp/services/voice.py1047 except Exception as e:CODE
LOWapp/services/voice.py1143 except Exception as e:CODE
LOWapp/services/voice.py1173 except Exception as e:CODE
LOWapp/services/voice.py1272 except Exception as e:CODE
LOWapp/services/voice.py1331 except Exception:CODE
LOWapp/services/voice.py1361 except Exception as e:CODE
LOWapp/services/voice.py1448 except Exception as e:CODE
LOWapp/services/voice.py1568 except Exception as e:CODE
LOWapp/services/voice.py1701 except Exception as e:CODE
LOWapp/services/voice.py1731 except Exception as e:CODE
LOWapp/services/twelvelabs.py84 except Exception as e: # noqa: BLE001 - never break the pipeline on TL errorsCODE
LOWapp/services/twelvelabs.py164 except Exception as e: # noqa: BLE001CODE
LOWapp/services/video.py304 except Exception as exc:CODE
LOWapp/services/video.py386 except Exception as exc:CODE
LOWapp/services/video.py416 except Exception as exc:CODE
LOWapp/services/video.py485 except Exception as e:CODE
LOWapp/services/video.py498 except Exception as e:CODE
LOWapp/services/video.py712 except Exception as e:CODE
LOWapp/services/video.py900 except Exception as exc:CODE
LOWapp/services/video.py942 except Exception as e:CODE
LOWapp/services/video.py1047 except Exception as exc:CODE
LOWapp/services/video.py1184 except Exception as e:CODE
LOWapp/services/video.py1243 except Exception:CODE
LOWapp/services/video.py1249 except Exception as exc:CODE
LOWapp/services/video.py1303 except Exception:CODE
LOWtest/services/test_video.py712 except Exception as e:CODE
LOWtest/services/test_cli.py236 except Exception:CODE
MEDIUMwebui/Main.py1155def open_task_folder(task_id):CODE
11 more matches not shown…
Deep Nesting43 hits · 32 pts
SeverityFileLineSnippetContext
LOWapp/config/config.py197CODE
LOWapp/utils/utils.py28CODE
LOWapp/utils/utils.py350CODE
LOWapp/utils/utils.py31CODE
LOWapp/services/material.py55CODE
LOWapp/services/material.py112CODE
LOWapp/services/material.py244CODE
LOWapp/services/material.py304CODE
LOWapp/services/material.py386CODE
LOWapp/services/upload_post.py28CODE
LOWapp/services/cache_manager.py57CODE
LOWapp/services/llm.py140CODE
LOWapp/services/llm.py585CODE
LOWapp/services/bgm.py139CODE
LOWapp/services/subtitle.py21CODE
LOWapp/services/subtitle.py145CODE
LOWapp/services/subtitle.py200CODE
LOWapp/services/voice.py357CODE
LOWapp/services/voice.py626CODE
LOWapp/services/voice.py726CODE
LOWapp/services/voice.py781CODE
LOWapp/services/voice.py947CODE
LOWapp/services/voice.py1178CODE
LOWapp/services/voice.py1278CODE
LOWapp/services/video.py454CODE
LOWapp/services/video.py529CODE
LOWtest/services/test_llm.py396CODE
LOWtest/services/test_bgm.py112CODE
LOWtest/services/test_bgm.py270CODE
LOWtest/services/test_controller_video.py52CODE
LOWtest/services/test_controller_video.py212CODE
LOWtest/services/test_video.py298CODE
LOWtest/services/test_video.py532CODE
LOWwebui/Main.py447CODE
LOWwebui/Main.py663CODE
LOWwebui/Main.py1031CODE
LOWwebui/Main.py1493CODE
LOWwebui/Main.py1678CODE
LOWwebui/Main.py1924CODE
LOWwebui/Main.py2331CODE
LOWwebui/Main.py2465CODE
LOWwebui/Main.py2877CODE
LOWwebui/Main.py3105CODE
Self-Referential Comments5 hits · 18 pts
SeverityFileLineSnippetContext
MEDIUMconfig.example.toml248# Create an account and API key at https://upload-post.com/COMMENT
MEDIUMconfig.example.toml54# Create an API key at https://playground.twelvelabs.io/COMMENT
MEDIUMapp/utils/utils.py30 # Define a helper function to handle different types of objectsCOMMENT
MEDIUMapp/services/video.py1271 # Create an image clip and set its duration to 3 secondsCOMMENT
MEDIUMtest/services/test_cli.py227 # Create a minimal valid video file for testingCOMMENT
Magic Placeholder Names2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHREADME.md392upload_post_api_key = "your-api-key"CODE
HIGHREADME-en.md395upload_post_api_key = "your-api-key"CODE
Over-Commented Block10 hits · 6 pts
SeverityFileLineSnippetContext
LOWconfig.example.toml1# MoneyPrinterTurbo configuration example.COMMENT
LOWconfig.example.toml21# 是否隐藏 WebUI 基础配置面板。COMMENT
LOWconfig.example.toml41# Key 必须使用英文半角双引号,多个 Key 使用英文逗号分隔。COMMENT
LOWconfig.example.toml61# twelvelabs_pegasus_model = "pegasus1.5"COMMENT
LOWconfig.example.toml201mimo_tts_model_name = "mimo-v2.5-tts"COMMENT
LOWconfig.example.toml261# Whisper Subtitles / Whisper 字幕COMMENT
LOWconfig.example.toml321COMMENT
LOWdocker-compose.gpu.yml1# GPU override fileCOMMENT
LOWapp/config/__init__.py41 colorize=True,COMMENT
LOWtest/services/__init__.py1# Unit test package for servicesCOMMENT
Unused Imports5 hits · 4 pts
SeverityFileLineSnippetContext
LOWcli.py1CODE
LOWapp/config/__init__.py7CODE
LOWapp/services/cache_manager.py3CODE
LOWapp/services/video.py1CODE
LOWdocs/skill/mpt_agent.py4CODE
Slop Phrases1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMwebui.sh3# If you could not download the model from the official site, you can use the mirror site.COMMENT
Fake / Example Data2 hits · 3 pts
SeverityFileLineSnippetContext
LOWtest/services/test_voice.py999 result = vs.get_elevenlabs_voices("fake-key")CODE
LOWtest/services/test_voice.py1033 mock_config.elevenlabs.get.return_value = "fake-key"CODE
Modern AI Meta-Vocabulary1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMREADME-en.md37Thanks to [Kimi](https://platform.kimi.ai?aff=MoneyPrinterTurbo) for sponsoring this project! [Kimi K2.7 Code](https://pCODE
Overly Generic Function Names2 hits · 2 pts
SeverityFileLineSnippetContext
LOWapp/controllers/manager/base_manager.py54 def execute_task(self, func: Callable, *args: Any, **kwargs: Any):CODE
LOWapp/controllers/manager/base_manager.py60 def run_task(self, func: Callable, *args: Any, **kwargs: Any):CODE
AI Structural Patterns1 hit · 1 pts
SeverityFileLineSnippetContext
LOWapp/utils/utils.py263CODE
Redundant / Tautological Comments1 hit · 1 pts
SeverityFileLineSnippetContext
LOWconfig.example.toml169# Set model_name to a model installed by `ollama pull` or shown by `ollama list`.COMMENT