Skip to content

Every 10 minutes

Resize and watermark new photos

Photos dropped into a folder are resized, compressed and watermarked into a web-ready folder.

Runs
Every 10 minutes
Apps
Google Drive
AI
Not needed
Access
read+write

Send this to your assistant

Create a ClickRuntime automation: every 10 minutes, take new images in Product photos, resize them to 1600px wide, compress them, add our logo as a watermark and save them to Product photos - web.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A boutique hotel photographer drops forty raw JPEGs into a shared Drive folder after each shoot. Each is 6 to 9 MB, which is far too heavy for the website and slow to send to a client by link. Someone then opens an image editor, resizes every picture, exports at lower quality and pastes a logo on each one. That is an hour of repetitive work per batch, and it gets skipped when things are busy.

Every 10 minutes, ClickRuntime lists the images added to the input folder since its last run, downloads them, and runs a Python step that resizes each to your target width, compresses it and stamps your watermark. The finished files are uploaded to a separate output folder, and the originals are left untouched in place.

It is useful for photographers, estate agents, product shops and anyone who publishes pictures regularly and wants a web-ready copy without opening an editor.

What you get out of it

  • Pages that load faster

    A 700 KB photo instead of an 8 MB one means product and gallery pages open quickly on mobile connections. Faster pages keep visitors from leaving and make it easier to pass image-weight checks in search audits.

  • Originals stay safe

    Processing writes new files into an output folder, so the full-resolution originals remain in the input folder. If a client later asks for a print-size version, the source file is still there and unedited.

  • Watermark applied every time

    When the watermark is part of the pipeline, no picture reaches the shared folder without it. That protects your work from being lifted from a client gallery link and republished elsewhere under another name.

  • Same size and quality across a batch

    Hand-exported images drift in dimensions and compression. A fixed rule produces a uniform set, so a gallery grid lines up properly and a catalogue does not mix crisp pictures with blurry ones.

  • Hours back after each shoot

    The editing step that used to eat an hour per batch happens in the background while you do other work. By the time you open the output folder, the whole set is ready to publish or send.

How it works

What happens, step by step

  1. Every 10 minutes ClickRuntime checks your Google Drive photos folder for new images.

  2. It resizes each one for the web, compresses it and adds your logo as a watermark.

  3. The finished copy is saved to your output folder with the same name. Your original stays untouched.

  4. It remembers which photos it has already processed, so each one is only done once.

Before it runs live

  • Connect Google Drive

What you get

RunsEvery 10 minutes
Resize and watermark new photostoday, 9:00Succeeded
Google Drive · Product photos - weboak-chair-front.jpg (1600×1067, 214 KB, watermarked)

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • Your own rules

    Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.

  • Any number of apps

    One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.

  • AI where it helps

    Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.

  • On a schedule or on each event

    Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.

Changes you can ask for

  • Act only on the items that match your own rules, and skip the rest
  • Add an AI step, for example to summarize, sort or draft a reply
  • Add another app, for example also send it to Slack
  • Combine it with other Google Drive steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
clean_up_images_added_to_a_folder.pyexample
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
import io
from PIL import Image  # declare "pillow" in dependencies
from googleapiclient.http import MediaInMemoryUpload
from clickruntime import on_trigger, report_fetched, credentials, state

SOURCE, TARGET, LOGO = "product-photos-folder-id", "product-photos-web-folder-id", "logo-file-id"

@on_trigger
def run(event):
    drive = build("drive", "v3", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False)
    since = state.get("since") or "2026-01-01T00:00:00Z"
    files = drive.files().list(q=f"'{SOURCE}' in parents and mimeType contains 'image/' and createdTime > '{since}'",
                               orderBy="createdTime", fields="files(id,name,createdTime)").execute()["files"]
    report_fetched(len(files))
    if not files:
        return {"summary": "Nothing new"}
    logo = Image.open(io.BytesIO(drive.files().get_media(fileId=LOGO).execute())).convert("RGBA")
    for f in files:
        img = Image.open(io.BytesIO(drive.files().get_media(fileId=f["id"]).execute())).convert("RGB")
        img = img.resize((1600, round(img.height * 1600 / img.width)))
        mark = logo.copy()
        mark.thumbnail((240, 240))
        img.paste(mark, (img.width - mark.width - 32, img.height - mark.height - 32), mark)
        out = io.BytesIO()
        img.save(out, "JPEG", quality=80, optimize=True)
        name = f["name"].rsplit(".", 1)[0] + ".jpg"
        drive.files().create(body={"name": name, "parents": [TARGET]},
                             media_body=MediaInMemoryUpload(out.getvalue(), "image/jpeg")).execute()
    state.set("since", files[-1]["createdTime"])
    return {"processed": len(files)}

FAQ

Common questions

Which image formats can it process?
Common formats such as JPEG and PNG work well, and the Python step can handle others your imaging library reads. Files are checked by type, so a PDF or a spreadsheet placed in the same folder is left alone instead of failing the run.
Will it process the same photo twice?
No. The list of images already handled is kept as run state, so each file is picked up once. If you replace a file with an edited version under a new name, that new file is treated as a new image and goes through the pipeline.
Can I change the output size or watermark text?
Yes. Tell your AI assistant the width, quality level or watermark wording you want, for example 1600 pixels wide at 80 percent quality with your studio name in the corner. Files already in the output folder stay as they were.
What permissions does it need?
read+write. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run each time it checks. Checks that find nothing new and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Resize and watermark new photos” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.