ComfyUI Extension: comfyui-save-file-extended

Authored by RUiNtheExtinct

Created

Updated

0 stars

A collection of custom nodes for ComfyUI that offers an extension to the existing Save and Preview Image/Video nodes allowing directly adding and previewing the files from your preferred cloud storage providers (S3/DropBox/Google Drive/...)

Custom Nodes (0)

    README

    comfyui-save-file-extended

    Cloud-enabled save/load nodes for ComfyUI with clean UI, multi-provider support, and real-time progress.

    This extension adds enhanced Save and Load nodes that can write to/read from local disk and popular cloud storage providers. It includes a polished client UI with separate Cloud and Local sections, and a floating status panel that shows per-item and byte-level progress during uploads/downloads.

    [!NOTE] This project was created with the official cookiecutter template.

    Nodes

    • SaveImageExtended: Save images locally and/or upload to a selected cloud provider in one batch.
    • LoadImageExtended: Load images from local input directory or directly from cloud.

    Both nodes:

    • Separate Cloud/Local sections with headers and dividers (only visible when enabled)
    • Detailed tooltips and built-in help docs (Help icon in node header)
    • Real-time status panel showing per-item and byte-level progress

    Supported cloud providers

    • AWS S3, S3-Compatible endpoints
    • Google Cloud Storage
    • Azure Blob Storage
    • Backblaze B2
    • Google Drive
    • Dropbox
    • OneDrive
    • FTP
    • Supabase Storage

    Key features

    • Batch save/upload with per-file and byte-level progress
    • Conditional UI (only shows relevant options for Cloud/Local)
    • Token refresh for Drive/OneDrive (accepts JSON with refresh_token)
    • Provider-specific path handling with auto-folder creation where applicable
    • Rich help pages rendered in the ComfyUI client

    Future plans

    • Implement similar extensions for video and audio upload nodes.

    Quickstart

    1. Install ComfyUI.
    2. Install ComfyUI-Manager (recommended).
    3. Install this extension via ComfyUI-Manager, or clone this repo into ComfyUI/custom_nodes.
    4. Restart ComfyUI.

    Using the nodes

    1. Add "Save Image Extended" or "Load Image Extended".
    2. Toggle Cloud and/or Local.
    3. Configure provider, bucket_link, cloud_folder_path, and credentials (cloud_api_key).
    4. Run the workflow. Watch progress in the "Save/Load Status" panel.

    Credentials (examples)

    • S3/S3-Compatible: JSON {access_key, secret_key, region} or ACCESS:SECRET[:REGION]
    • GCS: Service account JSON file path or JSON string; or rely on ADC
    • Azure Blob: Connection string (or account URL with key/SAS)
    • B2: KEY_ID:APP_KEY
    • Supabase: JSON {url, key} or url|key
    • Drive/OneDrive: OAuth2 token or JSON with refresh_token (+ client id/secret)

    Develop

    To install the dev dependencies and pre-commit (will run the ruff hook), do:

    cd comfyui_save_file_extended
    pip install -e .[dev]
    pre-commit install
    

    The -e flag above will result in a "live" install, in the sense that any changes you make to your node extension will automatically be picked up the next time you run ComfyUI.

    Publish to Github

    Install Github Desktop or follow these instructions for ssh.

    1. Create a Github repository that matches the directory name.
    2. Push the files to Git
    git add .
    git commit -m "project scaffolding"
    git push
    

    Writing custom nodes

    An example custom node is located in nodes.py. To learn more, read the docs.

    Tests

    This repo contains unit tests written in Pytest in the tests/ directory. It is recommended to unit test your custom node.

    Publishing to Registry

    If you wish to share this custom node with others in the community, you can publish it to the registry. We've already auto-populated some fields in pyproject.toml under tool.comfy, but please double-check that they are correct.

    You need to make an account on https://registry.comfy.org and create an API key token.

    • [ ] Go to the registry. Login and create a publisher id (everything after the @ sign on your registry profile).
    • [ ] Add the publisher id into the pyproject.toml file.
    • [ ] Create an api key on the Registry for publishing from Github. Instructions.
    • [ ] Add it to your Github Repository Secrets as REGISTRY_ACCESS_TOKEN.

    A Github action will run on every git push. You can also run the Github action manually. Full instructions here. Join our discord if you have any questions!

    Roadmap

    • Video and audio equivalents of these nodes (save/load with cloud support and progress UI)
    • Additional providers and authentication helpers