Skip to content

On a schedule

Turn a keyword sheet into Webflow blog drafts

Each day the next keyword in your sheet becomes a full blog post draft in your Webflow Blog collection, with the link written back to the sheet.

Runs
On a schedule
Apps
Google Sheets, Webflow
AI
Yes, uses the built-in AI allowance
Access
Webflow cms:write; Sheets read+write

Send this to your assistant

Create a ClickRuntime automation: every day at 7am, take the next pending keyword from my SEO sheet, write a blog post with AI, create it as a draft in my Webflow Blog collection, write the link back and tell me in Slack.

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 SaaS startup's single marketer keeps a keyword plan in Google Sheets with fifty topics the company should rank for. The website runs on Webflow. Each article means writing, then copying the title, slug, meta description and body into the CMS by hand, so the plan moves at about one post a fortnight.

This automation moves it every day. Each morning it takes the next pending keyword, AI writes a title, slug, meta description and body, and the post is created as a draft in the Webflow Blog collection. The sheet row is updated with the link and a Slack message lets the marketer know a draft is ready to edit.

What you get out of it

  • Work through the keyword plan

    A draft a day turns a long list into real articles within weeks. The plan stops being a wish list.

  • No copying into the CMS

    Title, slug, meta description and body are filled in for you. The marketer only edits and publishes.

  • Drafts first, always

    Posts are created as drafts, so nothing reaches the live site until someone has read it. Quality stays in your hands.

  • The sheet stays the source of truth

    Every row shows its status and a link to the draft. Anyone can see what is planned, drafted and live.

How it works

What happens, step by step

  1. Every morning, ClickRuntime reads your SEO sheet and picks the first keyword marked pending.

  2. AI writes a blog post for it with a title, slug, meta description and body.

  3. The post is created as a draft item in your Webflow Blog collection.

  4. The row is marked drafted with a link to the item, and a Slack message tells you it is ready to review.

Before it runs live

  • Connect your Google Sheets account and pick the spreadsheets it may use
  • Connect Webflow

What you get

RunsOn a schedule
Turn a keyword sheet into Webflow blog draftstoday, 9:00Succeeded
Slack · #marketing📝 New Webflow draft: How to Track Billable Hours Without a Timer (billable hours tracking)

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

  • Run it at a different time, more or less often, or only on weekdays
  • 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 Sheets and Webflow 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.
write_and_publish_seo_blog_posts_from_a_keyword_sheet.pyexample
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, http, ai, notify

SHEET_ID = "your-spreadsheet-id"
COLLECTION_ID = "your-collection-id"

def webflow(method, path, **kw):
    r = http.request(method, f"https://api.webflow.com/v2/collections/{COLLECTION_ID}/items{path}",
                     headers={"Authorization": f"Bearer {credentials.secret('WEBFLOW_API_TOKEN')}"}, **kw)
    r.raise_for_status()
    return r.json()

@on_trigger
def run(event):
    sheets = build("sheets", "v4", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False).spreadsheets()
    rows = sheets.values().get(spreadsheetId=SHEET_ID, range="SEO!A2:C").execute().get("values", [])
    nxt = next(((i + 2, r[0]) for i, r in enumerate(rows) if len(r) > 1 and r[1] == "pending"), None)
    if not nxt:
        return {"drafted": False}
    row, keyword = nxt
    schema = {"type": "object", "properties": {k: {"type": "string"} for k in ["title", "slug", "summary", "body_html"]}, "required": ["title", "slug", "summary", "body_html"]}
    post = ai.generate(f"Write an SEO blog post targeting '{keyword}', 900-1200 words, H2 headings, HTML body.", json_schema=schema, max_output_tokens=2048).json
    item = webflow("POST", "", json={"isDraft": True, "fieldData": {"name": post["title"], "slug": post["slug"], "post-summary": post["summary"], "post-body": post["body_html"]}})
    link = f"https://webflow.com/dashboard/sites/your-site/cms/{COLLECTION_ID}/{item['id']}"
    sheets.values().update(spreadsheetId=SHEET_ID, range=f"SEO!B{row}:C{row}", valueInputOption="RAW", body={"values": [["drafted", link]]}).execute()
    notify.slack(f"📝 New Webflow draft: {post['title']} ({keyword})\n{link}", channel="#marketing")
    return {"drafted": keyword}

FAQ

Common questions

Can it publish straight away?
It can, but drafts are the default and the safer choice. Reviewing each article before it goes live protects your site's quality.
Which collection fields does it fill?
Name, slug, post summary and post body by default. Tell it the field names in your collection if they differ.
Does it add images?
No. Add a cover image in Webflow when you review the draft, or ask for an image description to help whoever creates it.
What permissions does it need?
Webflow cms:write; Sheets read+write. Nothing else in your accounts is used.
Does it need AI?
Yes. It uses ClickRuntime's built-in AI, so you don't need an OpenAI or Anthropic key. Every plan includes a monthly AI allowance.
How many runs does it use?
One run each time it runs (on a schedule). Checks that find nothing to do 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 “Turn a keyword sheet into Webflow blog drafts” from your assistant

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