import json import os raw_data = """ 适用方向 Controlnet 类型 模型名称 基础算法类型 模型版本UUID 线稿类 Canny(硬边缘) control_v11p_sd15_canny 基础算法 1.5 7d917ec7e55c5805db737d3b493c91ce t2iadapter_canny_sd14v1 基础算法 1.5 a2c41c4e97944f3aa71f913bdc45b1ca t2iadapter_canny_sd15v2 基础算法 1.5 c04144bcf017232483181cd8607097c2 diffusers_xl_canny_full 基础算法 XL 56de5edadb6f2891aff05ff078dc0470 diffusers_xl_canny_mid 基础算法 XL efb97e9d8c237573298c3a5a7869b89c diffusers_xl_canny_small 基础算法 XL dccde738064e9748f93b48ec5868968e kohya_controllllite_xl_canny 基础算法 XL 5242e3d18cc18689bd8af11dd2d675c1 kohya_controllllite_xl_canny_anime 基础算法 XL 4f3e1cfe79f87496ec69a37826c3afeb sai_xl_canny_128lora 基础算法 XL 63c7f2c6c354336513831aa522d7e0f4 sai_xl_canny_256lora 基础算法 XL 5bf551f53651764cad56363e17900d87 t2i-adapter_diffusers_xl_canny 基础算法 XL 618390ab2957a422612cb2ba92a2788f t2i-adapter_xl_canny 基础算法 XL 7cd56501c336c1edba78430355c9d081 xinsir_controlnet-canny-sdxl_V2 基础算法 XL b6806516962f4e1599a93ac4483c3d23 XLabs-flux-canny-controlnet_v3 基础算法 F.1 017997cd6ba44c4dbe8f60e0a26cd0df InstantX-FLUX.1-dev-Controlnet-Union-Pro 基础算法 F.1 13c1e1b96ba64f9cbb2b54f89b5fe873 InstantX-Qwen-Image-Controlnet-Union Qwen Image 5b5f21d2b80445598db19e924bd3a409 SoftEdge(软边缘) control_v11p_sd15_softedge 基础算法 1.5 0929722d9047ec6498a50ff5d1081629 sargezt_xl_softedge 基础算法 XL dda1a0c480bfab9833d9d9a1e4a71fff controlnet-sd-xl-1.0-softedge-dexined 基础算法 XL 37bddde3d45c11ee9b5e00163e365853 mistoLine_softedge_sdxl_fp16 基础算法 XL 4f6726be104a432f8039b018c92ed4bf mistoLine_rank256 基础算法 XL 83286d0e66a845c58f7d23442f9dedf9 XLabs-flux-hed-controlnet_v3 基础算法 F.1 6c4d620df3644514903b8189735c6ae9 F.1_mistoline_dev_v1 基础算法 F.1 3e6860a3b9444f25ae07d9c1b5d1ba9e InstantX-FLUX.1-dev-Controlnet-Union-Pro 基础算法 F.1 13c1e1b96ba64f9cbb2b54f89b5fe873 InstantX-Qwen-Image-Controlnet-Union Qwen Image 5b5f21d2b80445598db19e924bd3a409 MLSD(直线) control_v11p_sd15_mlsd 基础算法 1.5 7168cece6a0d491375aa1753ff3bdc21 Scribble/Sketch(涂鸦/草图) control_v11p_sd15_scribble 基础算法 1.5 fe57911f7ba1b84eb27f1e1ecead3367 kohya_controllllite_xl_scribble_anime 基础算法 XL 4a399a87f1ffbc26d065a38765d30d24 xinsir_controlnet-scribble-sdxl-1.0 基础算法 XL 888cf8985bd6442cba1f2d975b6eb022 xinsir_anime_painter 基础算法 XL f936bf22cb8e4dcfa6b0f3b96cdd8eb7 InstantX-Qwen-Image-Controlnet-Union Qwen Image 5b5f21d2b80445598db19e924bd3a409 Lineart(线稿) control_v11p_sd15_lineart 基础算法 1.5 b06dfbd1a61c35e933d9f8caa8a0e031 control_v11p_sd15s2_lineart_anime 基础算法 1.5 c263e039c57b8a958ee0a936039af654 t2i-adapter_diffusers_xl_lineart 基础算法 XL a0f01da42bf48b0ba02c86b6c26b5699 InstantX-Qwen-Image-Controlnet-Union Qwen Image 5b5f21d2b80445598db19e924bd3a409 空间关系类 Depth(深度图) control_v11f1p_sd15_depth 基础算法 1.5 cf63d214734760dcdc108b1bd094921b t2iadapter_depth_sd15v2 基础算法 1.5 f08a4a889b56d4099e8a947503cabc14 t2iadapter_depth_sd14v1 基础算法 1.5 8b74bf9ea84f592c069b523d9bef9dab t2iadapter_zoedepth_sd15v1 基础算法 1.5 fc8b79f97eeceda388b43df12509c311 control_sd15_inpaint_depth_hand_fp16 基础算法 1.5 3497061cd45c11ee9b5e00163e365853 t2i-adapter_diffusers_xl_depth_zoe 基础算法 XL a35993a2d1cde4a6c800364a68731c67 sai_xl_depth_128lora 基础算法 XL 3156f3428afc7122c66b2b950f09d4cd t2i-adapter_diffusers_xl_depth_midas 基础算法 XL c22ec6a7a24eed6b91889ae1a1e94b2e diffusers_xl_depth_mid 基础算法 XL 740d6d428e70d4b40888efa4d9eb642a xinsir_controlnet_depth_sdxl_1.0 基础算法 XL 6349e9dae8814084bd9c1585d335c24c sai_xl_depth_256lora 基础算法 XL 08d0fbb72d7fab601218df26978a46e0 sargezt_xl_depth 基础算法 XL feb9ee5779bf2eb3fdd669f2e3e6b1aa sargezt_xl_depth_zeed 基础算法 XL 4216d4b49a6b559d76d181908f866eb8 kohya_controllllite_xl_depth_anime 基础算法 XL dea707d52e3a8f243da5579579cb3a3d kohya_controllllite_xl_depth 基础算法 XL 693d7182db5293c0087524580111fd96 sargezt_xl_depth_faid_vidit 基础算法 XL 1c6d32d0fb004cf1becc2b526fd83690 diffusers_xl_depth_small 基础算法 XL 6a786af31a13776100e9c6a90f99aebf diffusers_xl_depth_full 基础算法 XL 04dcab4b18c7b821e96660d6c19de50b XLabs-flux-depth-controlnet_v3 基础算法 F.1 0cc4e6b8206b44cdab51e30fb8b9c328 InstantX-FLUX.1-dev-Controlnet-Union-Pro 基础算法 F.1 13c1e1b96ba64f9cbb2b54f89b5fe873 Flux.1-dev-Controlnet-Depth 基础算法 F.1 64dd7a6c714f4512a4500f6a01b016b7 InstantX-Qwen-Image-Controlnet-Union Qwen Image 5b5f21d2b80445598db19e924bd3a409 Segment(语义分割) control_v11p_sd15_seg 基础算法 1.5 94571f4bb5136464afc1540a92ae3ee8 Normal(正态) control_v11p_sd15_normalbae 基础算法 1.5 9a85fdca18a8b58b2fb2ff13ab339be4 Flux.1-dev-Controlnet-Surface-Normal 基础算法 F.1 e51fdccdf3b8417aab246bde40b5f360 姿态类 OpenPose(姿态) control_v11p_sd15_openpose 基础算法 1.5 b46dd34ef9c2fe189446599d62516cbf t2iadapter_openpose_sd14v1 基础算法 1.5 5a8b19a8809e00be4e17517e8ab174ad control_v11p_sd15_densepose_fp16 基础算法 1.5 3b4e0830d45c11ee9b5e00163e365853 control_sd15_animal_openpose_fp16 基础算法 1.5 329f0073d45c11ee9b5e00163e365853 control_v2p_sd15_mediapipe_face 基础算法 1.5 73de0752a7a8431ba21637cda6723c95 kohya_controllllite_xl_openpose_anime_v2 基础算法 XL 4cbbd2483088ef5f0d41bfef0d7141fb kohya_controllllite_xl_openpose_anime 基础算法 XL abb5d55cf94c504f6f8c64abc0b1483f thibaud_xl_openpose_256lora 基础算法 XL 4dd1f4df2a9d3a9db8aeaa9480196d02 t2i-adapter_xl_openpose 基础算法 XL 9deac5a5c60abfd03261bd174ddba47d t2i-adapter_diffusers_xl_openpose 基础算法 XL 9cd43e1856040c2436f00802d5b54ee5 thibaud_xl_openpose 基础算法 XL 2fe4f992a81c5ccbdf8e9851c8c96ff2 controlnet-densepose-sdxl 基础算法 XL 3ae77dfdd45c11ee9b5e00163e365853 xinsir_controlnet-openpose-sdxl-1.0 基础算法 XL 23ef8ab803d64288afdb7106b8967a55 F.1-ControlNet-Pose-V1 基础算法 F.1 7c6d889cb9c04b78858d8fece80f9f85 InstantX-Qwen-Image-Controlnet-Union Qwen Image 5b5f21d2b80445598db19e924bd3a409 画面参考 Tile/Blur(分块/模糊) control_v11f1e_sd15_tile 基础算法 1.5 37e42c6bdb6fab4c24a662100f20f722 kohya_controllllite_xl_blur_anime 基础算法 XL 46a34a643f6855e9b3861515712df5d9 xinsir_controlnet_tile_sdxl_1.0 基础算法 XL 0f47ef6d4f4b40afab8b290c98baac0e kohya_controllllite_xl_blur_anime_beta 基础算法 XL 44199bb6dcf4f65e09a4e5e57ebdf9b4 kohya_controllllite_xl_blur 基础算法 XL aac5fe593565f0673673731d54ecfab8 TTPLanet_SDXL_Controlnet_Tile_Realistic_v1 基础算法 XL 13bfaf39f9214c658507a92cd15fd02d TTPLanet_SDXL_Controlnet_Tile_Realistic_v2 基础算法 XL 163d505651a64d6bac9a907b213dc8b0 Flux.1-dev-Controlnet-Upscaler 基础算法 F.1 a696b5bdadc740119fd76505b33d6898 Reference(参考) None 基础算法 1.5 / 风格迁移 IP-Adapter ip-adapter_sd15 基础算法 1.5 18801062fe4289dd0a984e69de9f9e7c ip-adapter_sd15_plus 基础算法 1.5 ad4bd9b4b05c4ac8faf7f81d9fdcadc8 ip-adapter_sd15_light 基础算法 1.5 3a1ddfd0d45c11ee9b5e00163e365853 ip-adapter_sd15_vit-G 基础算法 1.5 36f3d2a0d45c11ee9b5e00163e365853 ip-adapter_xl 基础算法 XL 8ea2538fdd7dcdea52b2da6b5151f875 ip-adapter-plus_sdxl_vit-h 基础算法 XL 38ee73f1d45c11ee9b5e00163e365853 ip-adapter_sdxl_vit-h 基础算法 XL 375866e3d45c11ee9b5e00163e365853 InstantX-F.1-dev-IP-Adapter 基础算法 F.1 c6ed70879cf011ef96d600163e37ec70 F.1-redux-dev 基础算法 F.1 8ddf6f3ba8a111efbb1700163e031cf1 T2I-Adapter t2iadapter_canny_sd15v2 基础算法 1.5 c04144bcf017232483181cd8607097c2 t2iadapter_depth_sd15v2 基础算法 1.5 f08a4a889b56d4099e8a947503cabc14 t2iadapter_canny_sd14v1 基础算法 1.5 a2c41c4e97944f3aa71f913bdc45b1ca t2iadapter_color_sd14v1 基础算法 1.5 8e581a4e7c986950d71f1102accad5d0 t2iadapter_depth_sd14v1 基础算法 1.5 8b74bf9ea84f592c069b523d9bef9dab t2iadapter_keypose_sd14v1 基础算法 1.5 181d8d213381458cb6e326760637d4b4 t2iadapter_openpose_sd14v1 基础算法 1.5 5a8b19a8809e00be4e17517e8ab174ad t2iadapter_seg_sd14v1 基础算法 1.5 3c680cc8edfbc4479423549e01f21897 t2iadapter_sketch_sd14v1 基础算法 1.5 0d19dd02091ec2d01f3cdd99a4f4b442 t2iadapter_sketch_sd15v2 基础算法 1.5 bd6c5dbb73c2c2e538850c23ab2dcbf5 t2iadapter_style_sd14v1 基础算法 1.5 e33777a1f374eccd9464623c56a82c91 t2iadapter_zoedepth_sd15v1 基础算法 1.5 fc8b79f97eeceda388b43df12509c311 Shuffle (随机洗牌) control_v11e_sd15_shuffle 基础算法 1.5 9efba1cc2d469bf4be8fc135689bc8a0 上色 Recolor(重上色) ioclab_sd15_recolor 基础算法 1.5 e0db5b9e227eac932c71498cf7e03a78 sai_xl_recolor_128lora 基础算法 XL af92235f1de682ceac136c06450c9a51 sai_xl_recolor_256lora 基础算法 XL 03051a3606b4974ec02fc55b079757e7 局部重绘 Inpaint(局部重绘) control_v11p_sd15_inpaint 基础算法 1.5 ebeada0aa92959b4e905ab6980d5d203 segmentation_mask_brushnet_ckpt 基础算法 1.5 14aa553bf6534a419a9a465eba900f3a random_mask_brushnet_cpkt 基础算法 1.5 de44488f84a74e02a1fac604d790698c segmentation_mask_brushnet_ckpt_sdxl_v1 基础算法 XL a311363995dd4f2fa42ee3fc9582d920 random_mask_brushnet_ckpt_sdxl 基础算法 XL 3161fc68c59847b0ad826a9fb18c857f F.1-dev-Controlnet-Inpainting-Alpha 基础算法 F.1 012d2f780c0b44dba829bb223207e608 F.1-dev-Controlnet-Inpainting-Beta 基础算法 F.1 31df01fc271d484ca4d496179d69a665 InstantX-Qwen-Image-ControlNet-Inpainting Qwen Image 2228ab9234a34aa5abf77caa907c0de1 换脸 IP-Adapter ip-adapter_face_id 基础算法 1.5 368e6a37d45c11ee9b5e00163e365853 ip-adapter-faceid-portrait_sd15 基础算法 1.5 330504bcd45c11ee9b5e00163e365853 ip-adapter-faceid-plusv2_sd15 基础算法 1.5 34fb8ef6d45c11ee9b5e00163e365853 ip-adapter-faceid-plus_sd15 基础算法 1.5 362a215ad45c11ee9b5e00163e365853 ip-adapter-faceid-portrait-v11_sd15 基础算法 1.5 35c50016d45c11ee9b5e00163e365853 ip-adapter-faceid_sdxl 基础算法 XL 38879e1ad45c11ee9b5e00163e365853 ip-adapter-faceid-plusv2_sdxl 基础算法 XL 3953f672d45c11ee9b5e00163e365853 ip-adapter-plus-face_sdxl_vit-h 基础算法 XL 336955e4d45c11ee9b5e00163e365853 Instant ID ip-adapter_instant_id_sdxl 基础算法 XL 3a8267c7d45c11ee9b5e00163e365853 control_instant_id_sdxl 基础算法 XL 3560664ad45c11ee9b5e00163e365853 puLID pulid_flux_v0.9.1 基础算法 F.1 405836d1ae2646b4ba2716ed6bd5453a 其他 光影 control_v1u_sd15_illumination 基础算法 1.5 3109072a5cf6403faba6162003b8f483 control_v1p_sd15_brightness 基础算法 1.5 39b8eac0d45c11ee9b5e00163e365853 二维码 control_v1p_sd15_qrcode_monster 基础算法 1.5 1fa6070c35626e760b1473926852cbbc """ lines = [l.strip() for l in raw_data.split('\n') if l.strip()] models_by_category = {} current_category = "General" current_type = "Misc" i = 0 while i < len(lines): line = lines[i] if line in ["适用方向", "Controlnet 类型", "模型名称", "基础算法类型", "模型版本UUID"]: i += 1 continue # Check if this is a top level category (usually ends with 类 or specific words) if line.endswith("类") or line in ["风格迁移", "上色", "局部重绘", "换脸", "其他", "光影", "二维码", "画面参考"]: current_category = line if current_category not in models_by_category: models_by_category[current_category] = {} i += 1 continue # Check if this is a sub-type (usually Chinese translation in parens or standard names like IP-Adapter) if "(" in line or line in ["IP-Adapter", "Instant ID", "puLID", "T2I-Adapter", "Shuffle (随机洗牌)"]: current_type = line if current_category not in models_by_category: models_by_category[current_category] = {} if current_type not in models_by_category[current_category]: models_by_category[current_category][current_type] = [] i += 1 continue # Model block: 3 lines if i + 2 < len(lines): model_name = lines[i] algo = lines[i+1] uuid = lines[i+2] # Verify it's actually an algo block if algo.startswith("基础算法") or algo == "Qwen Image" or uuid == "/": if current_category not in models_by_category: models_by_category[current_category] = {} if current_type not in models_by_category[current_category]: models_by_category[current_category][current_type] = [] models_by_category[current_category][current_type].append({ "model_name": model_name, "base_algorithm": algo, "uuid": uuid }) i += 3 continue # Default case i += 1 # Generate Markdown md_lines = ["# LiblibAI ControlNet Models Mapping\\n"] for category, types in models_by_category.items(): md_lines.append(f"## {category}\\n") for t, models in types.items(): md_lines.append(f"### {t}") md_lines.append("| Model Name | Base Algorithm | UUID |") md_lines.append("| --- | --- | --- |") for m in models: md_lines.append(f"| {m['model_name']} | {m['base_algorithm']} | `{m['uuid']}` |") md_lines.append("\\n") md_content = "\\n".join(md_lines) # Write outputs os.makedirs("/root/Tool_Agent/data", exist_ok=True) with open("/root/Tool_Agent/data/liblibai_controlnet_models.md", "w", encoding="utf-8") as f: f.write(md_content) with open("/root/Tool_Agent/data/liblibai_controlnet_models.json", "w", encoding="utf-8") as f: json.dump(models_by_category, f, indent=4, ensure_ascii=False)