Nodes/DriveSend Node/πŸš™πŸ“€ DriveSend - AutoUploader
ComfyUI Node

πŸš™πŸ“€ DriveSend - AutoUploader

Your RunPod dies tonight. Your images don't have to.

By machinepaintingΒ·Created 7 months agoΒ·Updated 4 months agoΒ· 2
πŸš™πŸ“€ DriveSend - AutoUploader
    • status
    β—„watch_folder/tmp/ComfyUI/custom_nodes/outputβ–Ί
    β—„auth_methodoauthβ–Ί
    β—„enable_encryptiontrueβ–Ί
    β—„Post_Delete_Encfalseβ–Ί
    β—„Subfolder_Monitortrueβ–Ί
    β—„run_processtrueβ–Ί

    If you run ComfyUI on a cloud GPU box, you know the feeling: you finish a big batch and the pod's clock is ticking. Storage on a RunPod or similar is ephemeral - terminate the pod and every image you didn't manually pull down goes with it. The usual escape routes (zip the output folder in Jupyter, click through Downloads one file at a time, cross your fingers) are miserable. DriveSend AutoUploader is the "set it and forget it" version: it sits in your workflow, watches the ComfyUI output folder, and pushes every new file straight into a Google Drive folder. Generate, forget, collect from Drive later from anywhere.

    It's a niche solve, but a real one. "Google Drive + ComfyUI" has been a steady, years-long drumbeat on r/StableDiffusion and r/comfyui - people repeatedly hitting the "how do I get my outputs off the pod" wall. This is the node that just does it.

    How it works

    The name is a small lie: you don't wire an image through this node. It takes no image input and hands back no URL. DriveSendAutoUploader is a watcher. Drop it anywhere in the graph (it's an output node), run the workflow once, and it uses watchdog to monitor the output folder. New files land, get queued, and an upload processor works through the queue with retries and a SHA256 verification after each upload.

    It handles .png, .jpg, .jpeg, .webp, .gif, .mp4, .avi, .mov - so video batches are covered too. With encryption on it runs two watchers: one creates an encrypted .enc copy of each new file (AES via Fernet, originals preserved), and the other uploads the encrypted copy. Files arrive in Drive as filename.png.enc, and you decrypt them locally with one of the scripts in the repo.

    The inputs that matter

    • watch_folder - where it looks for new files. Defaults to ComfyUI's output directory, and it's clamped to that directory. You can't point it at an arbitrary path from a workflow; to watch extra locations, set COMFYUI_DRIVESEND_ALLOWED_WATCH_PATHS on the host before starting ComfyUI.
    • run_process - the actual on/off switch. Set to True to start uploading. This is the #1 "nothing is uploading" gotcha: flip it off for a cleanup run, forget, and you'll wonder where your files went.
    • enable_encryption - on by default. Turn it off for plain uploads without .enc files. If you keep it on, back up the key - encrypted files are unrecoverable without it.
    • Post_Delete_Enc - after upload, delete the local .enc copy.
    • Subfolder_Monitor - watch subfolders recursively. On by default.
    • auth_method - oauth or service_account, and it must match whatever you set up in the Setup node.

    Output is a single STRING status that prints a startup banner to the console.

    Credentials it expects

    The node reads everything from the environment: GOOGLE_DRIVE_FOLDER_ID, GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, GOOGLE_REFRESH_TOKEN (or GOOGLE_SERVICE_ACCOUNT_JSON), plus COMFYUI_ENCRYPTION_KEY if encryption is on. That's what the Setup node exists to create - run it first, then either paste the values into RunPod Secrets / your pod template, or let it write .env on a local install.

    Install

    Same for the whole pack - ComfyUI Manager, search DriveSend Node, or:

    cd ComfyUI/custom_nodes/
    git clone https://github.com/machinepainting/ComfyUI_DriveSendNode.git
    pip install -r ComfyUI_DriveSendNode/requirements.txt
    

    Restart ComfyUI. Dependencies are google-api-python-client, google-auth, google-auth-oauthlib, python-dotenv, watchdog, and cryptography. No model downloads, nothing heavy - the one-time Google Cloud project setup (Drive API, OAuth client, a Drive folder) is the only real overhead.

    Common gotchas

    • Nothing uploads. run_process must be True, then check the ComfyUI console - upload errors print there. Confirm the Drive folder is shared with the account you authorized.
    • "GOOGLE_DRIVE_FOLDER_ID not set." You skipped Setup, or the pod was restarted without the env vars. Run the Setup node, save to secrets, redeploy.
    • "Encryption key not found." The env var must be exactly COMFYUI_ENCRYPTION_KEY, set in the pod template, and the pod restarted.
    • watch_folder path rejected. That's the clamp working as intended - add the path to COMFYUI_DRIVESEND_ALLOWED_WATCH_PATHS instead of fighting it.

    One honest caveat: this is a young, small pack from a single author, so don't treat it as battle-tested infrastructure. But the security design - secrets that never touch workflow JSON or /history, .env written with 0600 permissions - is more careful than most nodes in the ecosystem, which says good things about where the author's head is.

    CategoryDriveSend

    Inputs (6)

    NameTypeDefaultDescription
    watch_folderSTRING/tmp/ComfyUI/custom_nodes/outputβ€”
    auth_methodCOMBOoauth2 options: oauth, service_account
    enable_encryptionBOOLEANtrueβ€”
    Post_Delete_EncBOOLEANfalseβ€”
    Subfolder_MonitorBOOLEANtrueβ€”
    run_processBOOLEANtrueβ€”

    Outputs (1)

    NameTypeDescription
    statusSTRINGβ€”