Nodes/ComfyUI-PromptMaker-PNGTuber/PromptMaker PNGTuber Video Mouth Pipeline (compat)
ComfyUI Node

PromptMaker PNGTuber Video Mouth Pipeline (compat)

A compatibility alias, not a new node — old PromptMaker workflows just load

By hobi2k·Created 3 months ago·Updated 3 months ago· 0
PromptMaker PNGTuber Video Mouth Pipeline (compat)
    • mouthless_video
    • mouth_track_json
    • mouth_sprite_atlas_json
    • bundle_manifest_json
    • mouth_closed
    • mouth_half
    • mouth_open
    • mouth_e
    • mouth_u
    • summary_json
    video_pathinput_video.mp4
    output_dir
    asset_idpngtuber_video_mouth
    max_frames0
    frame_stride1
    detection_confidence0.50
    detection_modeanime_first
    face_yolo_fallbacktrue
    track_quad_scale1.25
    inpaint_scale1.55
    inpaint_radius5
    erase_methodeigen
    sprite_size512
    preserve_audiotrue
    angle_range_degrees45
    angle_step_degrees15
    occlusion_filtertrue

    This one's quick: PromptMakerPNGTuberVideoMouth is not a different node. In the pack source it's literally a one-line alias - PromptMakerPNGTuberVideoMouth = PNGTuberVideoMouthBuilder - registered in the class mappings so the node shows up in ComfyUI under its old, PromptMaker-era name. The pipeline, the inputs, the outputs, and the bundle it writes are identical to PNGTuber Video Mouth Builder. Everything that article says applies here verbatim.

    Why it exists

    The pack's name carries the "PromptMaker" integration target from earlier iterations, and some workflows out in the wild reference the older class name. Keeping this alias registered means those saved workflows keep loading instead of erroring with "missing node." It's the same compatibility trick the pack uses for its manifest schemas - the new pngtuber.videoMouthBundle.v1 format is deliberately readable by old PromptMaker consumers.

    What you get

    Identical schema to the video mouth builder: video_path, output_dir, asset_id, max_frames, frame_stride, detection_confidence, detection_mode, face_yolo_fallback, track_quad_scale, inpaint_scale, inpaint_radius, erase_method, sprite_size, preserve_audio (required); angle_range_degrees, angle_step_degrees, occlusion_filter (optional). Outputs are the ten strings - mouthless_video, mouth_track_json, mouth_sprite_atlas_json, bundle_manifest_json, the five mouth sprite paths, and summary_json. Same detection chain (anime cascade → OpenCV mouth refine → MediaPipe → YOLO), same angle atlas defaults (-45° to +45° in 15° steps), same erase_method gotcha: the eigen default needs the local Qwen stack, and cv2 is the no-model path.

    Install

    The pack, the usual way:

    cd /path/to/ComfyUI/custom_nodes
    git clone https://github.com/hobi2k/ComfyUI-PromptMaker-PNGTuber.git
    cd /path/to/ComfyUI
    python -m pip install -r custom_nodes/ComfyUI-PromptMaker-PNGTuber/requirements.txt
    

    Or search ComfyUI-PromptMaker-PNGTuber in ComfyUI Manager. Restart after installing, and both this alias and the canonical builder will be in your node list - same orange output nodes, same category (PNGTuber/Video Mouth).

    When you'd actually pick this name

    Honestly: when a workflow already says it. If you're building fresh, use PNGTuberVideoMouthBuilder or the friendlier upload-to-bundle node. If an old workflow references PromptMakerPNGTuberVideoMouth and works, there's no reason to rewire it - it's the same code under the hood, and the outputs wire into the same PromptMaker/PNGTuber consumers either way.

    CategoryPNGTuber/Video Mouth

    Inputs (17)

    NameTypeDefaultDescription
    video_pathSTRINGinput_video.mp4
    output_dirSTRING
    asset_idSTRINGpngtuber_video_mouth
    max_framesINT00–20000
    frame_strideINT11–30
    detection_confidenceFLOAT0.500.1–0.95
    detection_modeCOMBOanime_first4 options: anime_first, mediapipe_first, anime_only, face_yolo_only
    face_yolo_fallbackBOOLEANtrue
    track_quad_scaleFLOAT1.251–4
    inpaint_scaleFLOAT1.551–4
    inpaint_radiusINT51–31
    erase_methodCOMBOeigen2 options: eigen, cv2
    sprite_sizeINT51264–2048
    preserve_audioBOOLEANtrue
    angle_range_degreesoptINT4515–75
    angle_step_degreesoptINT155–30
    occlusion_filteroptBOOLEANtrue

    Outputs (10)

    NameTypeDescription
    mouthless_videoSTRING
    mouth_track_jsonSTRING
    mouth_sprite_atlas_jsonSTRING
    bundle_manifest_jsonSTRING
    mouth_closedSTRING
    mouth_halfSTRING
    mouth_openSTRING
    mouth_eSTRING
    mouth_uSTRING
    summary_jsonSTRING