Repository Analysis

HKUDS/ViMax

"ViMax: Agentic Video Generation (Director, Screenwriter, Producer, and Video Generator All-in-One)"

52.8 Strong AI signal View on GitHub
52.8
Adjusted Score
52.8
Raw Score
100%
Time Factor
2026-05-27
Last Push
8,364
Stars
Python
Language
7,426
Lines of Code
60
Files
240
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 20MEDIUM 4LOW 216

Pattern Findings

240 matches across 10 categories. Click a row to expand file-level details.

Magic Placeholder Names20 hits · 150 pts
SeverityFileLineSnippet
HIGHreadme.md411 api_key: <YOUR_API_KEY>
HIGHreadme.md411 api_key: <YOUR_API_KEY>
HIGHreadme.md417 api_key: <YOUR_API_KEY>
HIGHreadme.md417 api_key: <YOUR_API_KEY>
HIGHreadme.md422 api_key: <YOUR_API_KEY>
HIGHreadme.md422 api_key: <YOUR_API_KEY>
HIGHREADME_ZH.md387 api_key: <YOUR_API_KEY>
HIGHREADME_ZH.md387 api_key: <YOUR_API_KEY>
HIGHREADME_ZH.md393 api_key: <YOUR_API_KEY>
HIGHREADME_ZH.md393 api_key: <YOUR_API_KEY>
HIGHREADME_ZH.md398 api_key: <YOUR_API_KEY>
HIGHREADME_ZH.md398 api_key: <YOUR_API_KEY>
HIGHconfigs/idea2video_minimax.yaml23 api_key: <YOUR_API_KEY>
HIGHconfigs/idea2video_minimax.yaml23 api_key: <YOUR_API_KEY>
HIGHconfigs/idea2video_minimax.yaml30 api_key: <YOUR_API_KEY>
HIGHconfigs/idea2video_minimax.yaml30 api_key: <YOUR_API_KEY>
HIGHconfigs/script2video_minimax.yaml23 api_key: <YOUR_API_KEY>
HIGHconfigs/script2video_minimax.yaml23 api_key: <YOUR_API_KEY>
HIGHconfigs/script2video_minimax.yaml30 api_key: <YOUR_API_KEY>
HIGHconfigs/script2video_minimax.yaml30 api_key: <YOUR_API_KEY>
Unused Imports124 hits · 124 pts
SeverityFileLineSnippet
LOWtools/video_generator_veo_yunwu_api.py2
LOWtools/__init__.py2
LOWtools/__init__.py2
LOWtools/__init__.py3
LOWtools/__init__.py6
LOWtools/__init__.py7
LOWtools/__init__.py8
LOWtools/__init__.py11
LOWtools/__init__.py14
LOWtools/__init__.py15
LOWtools/__init__.py16
LOWtools/reranker_bge_silicon_api.py1
LOWtools/reranker_bge_silicon_api.py4
LOWtests/test_minimax_integration.py15
LOWagents/reference_image_selector.py7
LOWagents/scene_extractor.py1
LOWagents/scene_extractor.py5
LOWagents/scene_extractor.py5
LOWagents/scene_extractor.py6
LOWagents/scene_extractor.py6
LOWagents/scene_extractor.py6
LOWagents/scene_extractor.py6
LOWagents/global_information_planner.py1
LOWagents/global_information_planner.py3
LOWagents/global_information_planner.py4
LOWagents/global_information_planner.py4
LOWagents/global_information_planner.py4
LOWagents/global_information_planner.py9
LOWagents/global_information_planner.py10
LOWagents/event_extractor.py1
LOWagents/event_extractor.py3
LOWagents/event_extractor.py8
LOWagents/event_extractor.py8
LOWagents/character_portraits_generator.py1
LOWagents/character_portraits_generator.py2
LOWagents/character_portraits_generator.py3
LOWagents/character_portraits_generator.py4
LOWagents/character_portraits_generator.py5
LOWagents/character_portraits_generator.py6
LOWagents/character_portraits_generator.py7
LOWagents/character_portraits_generator.py8
LOWagents/character_portraits_generator.py8
LOWagents/character_portraits_generator.py9
LOWagents/character_portraits_generator.py9
LOWagents/character_portraits_generator.py9
LOWagents/character_portraits_generator.py12
LOWagents/character_portraits_generator.py12
LOWagents/character_extractor.py1
LOWagents/character_extractor.py2
LOWagents/character_extractor.py4
LOWagents/character_extractor.py5
LOWagents/screenwriter.py1
LOWagents/screenwriter.py2
LOWagents/screenwriter.py4
LOWagents/screenwriter.py6
LOWagents/screenwriter.py8
LOWagents/screenwriter.py8
LOWagents/__init__.py1
LOWagents/__init__.py2
LOWagents/__init__.py3
64 more matches not shown…
Hyper-Verbose Identifiers58 hits · 69 pts
SeverityFileLineSnippet
LOWtools/video_generator_doubao_seedance_yunwu_api.py23 async def create_video_generation_task(
LOWtools/video_generator_doubao_seedance_yunwu_api.py109 async def query_video_generation_task(
LOWtests/test_provider_presets.py17 def test_minimax_preset_exists(self):
LOWtests/test_provider_presets.py20 def test_minimax_preset_base_url(self):
LOWtests/test_provider_presets.py26 def test_minimax_preset_env_key(self):
LOWtests/test_provider_presets.py29 def test_minimax_preset_default_model(self):
LOWtests/test_provider_presets.py32 def test_minimax_preset_has_models_list(self):
LOWtests/test_provider_presets.py39 def test_minimax_preset_temperature_range(self):
LOWtests/test_provider_presets.py48 def test_unknown_provider_passes_through(self):
LOWtests/test_provider_presets.py55 def test_no_model_provider_passes_through(self):
LOWtests/test_provider_presets.py60 def test_minimax_rewrites_provider_to_openai(self):
LOWtests/test_provider_presets.py65 def test_minimax_sets_base_url(self):
LOWtests/test_provider_presets.py70 def test_minimax_preserves_custom_base_url(self):
LOWtests/test_provider_presets.py80 def test_minimax_defaults_model(self):
LOWtests/test_provider_presets.py85 def test_minimax_preserves_explicit_model(self):
LOWtests/test_provider_presets.py91 def test_minimax_reads_api_key_from_env(self):
LOWtests/test_provider_presets.py96 def test_minimax_prefers_explicit_api_key_over_env(self):
LOWtests/test_provider_presets.py102 def test_minimax_clamps_temperature_above_max(self):
LOWtests/test_provider_presets.py107 def test_minimax_clamps_temperature_below_min(self):
LOWtests/test_provider_presets.py112 def test_minimax_passes_valid_temperature(self):
LOWtests/test_provider_presets.py117 def test_minimax_temperature_zero_allowed(self):
LOWtests/test_provider_presets.py122 def test_minimax_no_temperature_key(self):
LOWtests/test_provider_presets.py127 def test_minimax_temperature_none_ignored(self):
LOWtests/test_provider_presets.py132 def test_original_dict_not_mutated(self):
LOWtests/test_provider_presets.py137 def test_empty_model_string_gets_default(self):
LOWtests/test_provider_presets.py151 def test_returns_none_when_no_keys(self):
LOWtests/test_novel2movie_pipeline_init.py18 def test_initializes_runtime_dependencies(self):
LOWtests/test_minimax_integration.py52 def test_full_minimax_config_resolution(self):
LOWtests/test_minimax_integration.py60 def test_minimax_highspeed_model(self):
LOWtests/test_minimax_integration.py72 def test_env_key_fallback_in_config(self):
LOWtests/test_minimax_integration.py80 def test_openrouter_config_unchanged(self):
LOWtests/test_minimax_integration.py93 def test_init_chat_model_receives_openai_provider(self):
LOWtests/test_minimax_integration.py101 def test_temperature_clamping_in_pipeline_flow(self):
LOWtests/test_minimax_integration.py106 def test_extra_kwargs_preserved(self):
LOWtests/test_minimax_integration.py150 def test_existing_openrouter_config_still_works(self, mock_backend, mock_init):
LOWagents/reference_image_selector.py151 async def select_reference_images_and_generate_prompt(
LOWagents/global_information_planner.py158 async def merge_characters_across_scenes_in_event(
LOWagents/global_information_planner.py220 def merge_characters_to_existing_characters_in_novel(
LOWagents/global_information_planner.py280 # def merge_characters_across_events_in_novel(
LOWagents/global_information_planner.py342 # async def extract_static_feature_for_character_in_novel(
LOWagents/screenwriter.py139 async def write_script_based_on_story(
LOWagents/storyboard_artist.py214 async def decompose_visual_description(
LOWagents/camera_image_generator.py153 async def generate_transition_video(
LOWagents/novel_compressor.py125 async def compress_single_novel_chunk(
LOWpipelines/script2video_pipeline.py162 async def generate_frames_for_single_camera(
LOWpipelines/script2video_pipeline.py310 async def generate_video_for_single_shot(
LOWpipelines/script2video_pipeline.py335 async def generate_frame_for_single_shot(
LOWpipelines/script2video_pipeline.py448 async def generate_character_portraits(
LOWpipelines/script2video_pipeline.py480 async def generate_portraits_for_single_character(
LOWpipelines/script2video_pipeline.py564 async def decompose_visual_descriptions(
LOWpipelines/script2video_pipeline.py578 async def decompose_visual_description_for_single_shot_brief_description(
LOWpipelines/idea2video_pipeline.py74 async def generate_character_portraits(
LOWpipelines/idea2video_pipeline.py128 async def write_script_based_on_story(
LOWpipelines/idea2video_pipeline.py146 async def generate_portraits_for_single_character(
LOWpipelines/novel2movie_pipeline.py335 async def merge_characters_across_scenes_in_event(sem, event_idx, scenes):
LOWpipelines/novel2movie_pipeline.py429 async def generate_portrait_for_character(sem, character: CharacterInNovel):
LOWpipelines/novel2movie_pipeline.py462 async def generate_portrait_for_character_in_scene(
LOWutils/provider_presets.py35def resolve_chat_model_config(init_args: Dict[str, Any]) -> Dict[str, Any]:
Excessive Try-Catch Wrapping13 hits · 15 pts
SeverityFileLineSnippet
LOWtools/video_generator_veo_yunwu_api.py85 except Exception as e:
LOWtools/video_generator_veo_yunwu_api.py105 except Exception as e:
LOWtools/video_generator_doubao_seedance_yunwu_api.py100 except Exception as e:
LOWtools/video_generator_doubao_seedance_yunwu_api.py133 except Exception as e:
LOWtools/image_generator_doubao_seedream_yunwu_api.py64 except Exception as e:
LOWagents/reference_image_selector.py184 except Exception as e:
LOWagents/reference_image_selector.py221 except Exception as e:
LOWagents/script_enhancer.py118 except Exception as e:
LOWagents/script_planner.py427 except Exception as e:
LOWutils/video.py20 except Exception as e:
MEDIUMutils/video.py7def download_video(url, save_path):
LOWutils/image.py23 except Exception as e:
MEDIUMutils/image.py11def download_image(url, save_path):
Verbosity Indicators7 hits · 10 pts
SeverityFileLineSnippet
LOWpipelines/novel2movie_pipeline.py58 # Step 1: Compress the novel text
LOWpipelines/novel2movie_pipeline.py126 # Step 2: Extract events from the compressed novel
LOWpipelines/novel2movie_pipeline.py170 # Step 3: Extract relevant chunks for each event
LOWpipelines/novel2movie_pipeline.py257 # Step 4: Extract scenes for each event, design the script for each scene
LOWpipelines/novel2movie_pipeline.py323 # Step 5: Merge characters from scene-level to event-level, then to novel-level
LOWpipelines/novel2movie_pipeline.py417 # Step 6: Generate the portrait for all characters in the novel
LOWpipelines/novel2movie_pipeline.py535 # Step 7: Generate video for each scene
Over-Commented Block10 hits · 10 pts
SeverityFileLineSnippet
LOWagents/global_information_planner.py281 # self,
LOWagents/global_information_planner.py301
LOWagents/global_information_planner.py321 # # check the output is valid
LOWagents/global_information_planner.py341
LOWagents/global_information_planner.py361 # character_name=character.identifier_in_novel,
LOWinterfaces/scene.py41# description="The index of the scene within the event, starting from 0"
LOWinterfaces/shot_description.py41 # default=None,
LOWinterfaces/shot_description.py61 # False,
LOWinterfaces/shot_description.py161 # audio
LOWinterfaces/shot_description.py181 # )
Decorative Section Separators2 hits · 6 pts
SeverityFileLineSnippet
MEDIUMutils/provider_presets.py15# ---------------------------------------------------------------------------
MEDIUMutils/provider_presets.py17# ---------------------------------------------------------------------------
Deep Nesting4 hits · 4 pts
SeverityFileLineSnippet
LOWpipelines/script2video_pipeline.py162
LOWpipelines/novel2movie_pipeline.py51
LOWpipelines/novel2movie_pipeline.py198
LOWutils/rate_limiter.py39
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippet
LOWtools/video_generator_veo_google_api.py91 # Check if operation completed successfully
AI Slop Vocabulary1 hit · 2 pts
SeverityFileLineSnippet
LOWagents/global_information_planner.py353 # parser = None # no need to parse the output, just return the text