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 5 months ago·Updated 4 months ago· 1
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—