Nodes/ComfyUI ZhipuAI Platform/ZhipuAI VideoReportPull
ComfyUI Node

ZhipuAI VideoReportPull

VideoReportPull Is the 'Check the Oven' Node — Polling Your Zhipu Jobs

By MetaGLM·Created 2 years ago·Updated 2 years ago· 5
ZhipuAI VideoReportPull
    • video_pull_report_path
    video_report_path
    num_threads1

    Zhipu's video platform is asynchronous, and that's the whole reason this node exists. VideoReportGenerate fires your jobs at the API and gets back task IDs in a couple of seconds. The actual video takes minutes. VideoReportPull is the node you run to check whether those minutes are up - think of it as the "is the oven done?" node in a two-part dance, not a competitor to anything that renders locally.

    How it works

    You feed it the CSV that Generate produced, and it walks every row looking for a video_task_id column. For each ID it calls the platform's retrieve_videos_result endpoint and writes a fresh report - task ID, the hosted video URL, a cover-image URL, and the task's status - to ComfyUI/output/zhipu/output/video_pull_report.csv.

    The nice part is the same disk cache that makes the whole pack idempotent. Task IDs already pulled are skipped, so you can run this node over and over while videos finish, and it only makes fresh API calls for jobs that are actually new. That's the loop the README describes: run Generate, wait a few minutes, run Pull, and if anything's still processing, run it again.

    One honest correction before you get excited: "pull" here means pull the manifest, not the media. What lands in the report is a hosted URL per video, not an .mp4 sitting on your disk. The pack's underlying package has a separate CLI step for downloading files (python -m zhipuai_platform_video.download_video), and this ComfyUI pack never wraps it into a node. So if you want the actual files, you either grab the URLs yourself or run that command from a terminal against the pull report.

    Inputs and outputs

    Two inputs, and only one of them requires thought:

    • video_report_path - a STRING pointing at the video_report.csv. In a normal workflow you don't type this; you wire it straight from VideoReportGenerate's video_report_path output. A hardcoded path here is how stale workflows get built.
    • num_threads - 1 to 10, same story as Generate: concurrent API slots, each throttled to roughly one call per 60 seconds. For a handful of videos, 1 is fine.

    The single output, video_pull_report_path, is an absolute path to the new CSV. From there the pack's own example wires it into VideoReportData → a ShowText node so you can actually read the URLs and statuses without opening a spreadsheet.

    Installing it

    Same story as its sibling nodes - this is one pack. Install through ComfyUI Manager (search ComfyUI ZhipuAI Platform), or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/MetaGLM/ComfyUI-ZhipuAI-Platform
    

    then restart. The pip dependency zhipuai-platform-video installs itself; there are no model downloads. Set the API key in the environment that launches ComfyUI (there's no key field anywhere):

    export ZHIPUAI_API_KEY="your_platform_key"
    

    And note the Python pin - the dependency wants 3.10 or 3.11, so a Python 3.12+ ComfyUI venv will refuse to install it.

    Where people get burned

    • You'll see empty results on the first pull. If your video is still rendering, the report's rows have a task ID but no result URL yet. That's not a bug - it's the async platform telling you to wait and run Pull again. The cache makes re-running safe, so don't delete anything to "fix" it.
    • A stale or hand-typed path will blow up on the CSV read with a Python traceback rather than a friendly message. Keep the path wired from Generate and you'll never see it.
    • The results are URLs. If you were expecting files on disk, that's the mismatch to understand first - the node's job ends at the manifest. The download is a CLI step this pack left out.

    It's a simple node, and its simplicity is the point: submit, wait, poll, read. Wire Generate → Pull → Data → ShowText and you have a complete no-GPU video pipeline.

    Categoryzhipuai/video

    Inputs (2)

    NameTypeDefaultDescription
    video_report_pathSTRING
    num_threadsINT11–10

    Outputs (1)

    NameTypeDescription
    video_pull_report_pathSTRING