On a schedule
Catalogue new Drive photos in a Notion gallery
Photos added to your Drive portfolio folder are described, tagged and catalogued in your Notion gallery database.
- Runs
- On a schedule
- Apps
- Google Drive, Notion
- AI
- Yes, uses the built-in AI allowance
- Access
- drive.readonly; Notion insert content
Send this to your assistant
Create a ClickRuntime automation: when new images land in my Drive Portfolio folder, write a short description and tags for each and add it to my Notion gallery database with a link.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A freelance photographer delivers shoots into a Google Drive folder and wants a browsable portfolio in Notion to share with prospective clients. Adding each photo by hand, with a title, tags and the shoot details, is the kind of job that never gets done, so the Notion gallery is always months behind.
This automation checks the folder every hour. For each new image it gathers the file name, folder, date and camera details, has AI turn them into a short description and tags, and adds an entry to your Notion gallery with a link to the photo.
What you get out of it
The portfolio keeps up with your work
New shoots appear in Notion soon after you upload them. You can send a prospect a current gallery without a catch-up session first.
Searchable by tag
Tags such as wedding, product or outdoor make it easy to filter the gallery. Finding the right examples for a pitch takes seconds.
Shoot details kept with each image
Date and camera details are stored alongside each photo. That context helps when a client asks when or how a picture was taken.
No change to how you upload
You keep saving photos into Drive as before. Cataloguing happens on its own afterwards.
How it works
What happens, step by step
Every hour, ClickRuntime looks for new images in your Drive Portfolio folder.
It reads each photo's name, folder, date and camera details.
AI writes a short description and a few tags from those details.
An entry with the description, tags and a link to the photo is added to your Notion gallery database.
Before it runs live
- Connect Google Drive
- Connect Notion and share the database you want it to use
What you get
Build your own
Need it to work differently?
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
- Change what the AI looks for, or how it writes the result
- Add another app, for example also send it to Slack
- Combine it with other Google Drive and Notion steps into one automation
Under the hood
The code that runs this automation
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, http, state, ai, report_fetched
FOLDER_ID, GALLERY_DB = "your-folder-id", "your-notion-database-id"
SCHEMA = {"type": "object", "properties": {"title": {"type": "string"}, "description": {"type": "string"}, "tags": {"type": "array", "items": {"type": "string"}}}, "required": ["title", "tags"]}
@on_trigger
def run(event):
drive = build("drive", "v3", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False).files()
seen = set(state.get("seen") or [])
files = [f for f in drive.list(q=f"'{FOLDER_ID}' in parents and mimeType contains 'image/' and trashed=false", pageSize=100,
fields="files(id,name,createdTime,webViewLink,imageMediaMetadata(time,cameraModel))").execute()["files"] if f["id"] not in seen]
report_fetched(len(files))
if not files:
return {"summary": "Nothing new"}
for f in files[:25]:
meta = f.get("imageMediaMetadata", {})
try:
info = ai.generate(f"File: {f['name']}\nTaken: {meta.get('time', f['createdTime'])}\nCamera: {meta.get('cameraModel', '')}",
system="Write a portfolio title, one-sentence description and up to 5 lowercase tags.", json_schema=SCHEMA, max_output_tokens=150).json
except ai.AIError:
info = {"title": f["name"], "description": "", "tags": []}
http.post("https://api.notion.com/v1/pages", headers={"Authorization": f"Bearer {credentials.connection('notion', 'work')}", "Notion-Version": "2022-06-28"}, json={"parent": {"database_id": GALLERY_DB}, "properties": {
"Name": {"title": [{"text": {"content": info["title"]}}]}, "Description": {"rich_text": [{"text": {"content": info.get("description", "")}}]},
"Tags": {"multi_select": [{"name": t[:100]} for t in info["tags"]]}, "Photo": {"url": f["webViewLink"]}}}).raise_for_status()
seen.add(f["id"])
state.set("seen", list(seen)[-2000:])
return {"added": min(len(files), 25)}FAQ
Common questions
How are the descriptions written?
Are the photos copied into Notion?
Which image types are included?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Turn recordings in Google Drive into summarised notes in Notion
Drop an audio recording in your Drive folder and get a Notion page with its summary and action items.
See how it worksScreen new résumés from Google Drive into Notion
Each new CV dropped into your Drive folder is read, scored against the job, and added as a card on your Notion hiring board.
See how it worksReview new contracts in Drive and log the findings in Notion
When a contract or finance document lands in your Drive folder, AI reviews it for risky terms and the findings are saved as a Notion page.
See how it worksKeep exploring
Set up “Catalogue new Drive photos in a Notion gallery” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.