Every 6 hours
Turn new items from your sources into WordPress drafts
New articles and videos from the feeds in your Sources sheet become original blog drafts in WordPress, each one logged in the sheet.
- Runs
- Every 6 hours
- Apps
- Google Sheets, WordPress
- AI
- Yes, uses the built-in AI allowance
- Access
- Sheets edit; WordPress author
Send this to your assistant
Create a ClickRuntime automation: every 6 hours, take new items from the feeds in my Sources sheet, rewrite each as an original blog draft in WordPress that credits the source, and log it.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
An independent travel blogger follows a dozen tourism boards, airline news feeds and YouTube channels for story ideas. Turning a new route announcement or a festival video into a post for their readers is valuable, but keeping up with every source and starting each draft takes hours each week.
This automation keeps watch and gets drafts started. Every 6 hours it checks the RSS and YouTube feeds listed in a Sources sheet, AI writes an original draft for each new item in the blogger's voice with a credit and link to the source, and the draft is saved in WordPress. Each draft is logged in the sheet, and an email lists what was added.
What you get out of it
Never miss a story from your sources
Every feed you list is checked several times a day. New announcements turn into drafts while the news is still fresh.
Original drafts, not copies
AI is told to write in your voice and add your angle, crediting and linking the source. You publish something of your own, not a copy of someone else's article.
Manage sources in a sheet
Adding or removing a feed is a matter of editing a row. Anyone helping with the blog can update the list.
You review before anything is published
Everything is saved as a draft. You decide which stories run and add your own experience before publishing.
How it works
What happens, step by step
Every 6 hours, ClickRuntime reads the list of feeds in your Sources sheet and checks each for new items.
It skips any item it has already turned into a draft.
AI writes an original blog draft for each new item in your voice, crediting and linking the source.
Each draft is saved in WordPress and logged in the sheet, and you get an email listing the new drafts.
Before it runs live
- Connect your Google Sheets account and pick the spreadsheets it may use
- Connect WordPress
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
- 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 WordPress steps into one automation
Under the hood
The code that runs this automation
import feedparser
from datetime import date
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, http, state, ai, notify
SHEET_ID = "your-spreadsheet-id"
WP = "https://blog.example.com/wp-json/wp/v2"
def wp(method, path, **kw):
r = http.request(method, f"{WP}/{path}", auth=(credentials.secret("WP_USER"), credentials.secret("WP_APP_PASSWORD")), **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()
feeds = [r[0] for r in sheets.values().get(spreadsheetId=SHEET_ID, range="Sources!A2:A").execute().get("values", []) if r]
seen = set(state.get("seen") or [])
new = [e for f in feeds for e in feedparser.parse(http.get(f).content).entries[:10] if e.link not in seen][:8]
rows = []
for e in new:
body = ai.generate(f"Source: {e.title}\n{e.get('summary', '')[:2500]}\n\nWrite an original 500-word blog draft in HTML for travellers, in our voice, ending with a credit linking {e.link}.", max_output_tokens=1200).text
post = wp("POST", "posts", json={"title": e.title, "content": body, "status": "draft"})
rows.append([date.today().isoformat(), e.title, e.link, post["id"]])
seen.add(e.link)
if rows:
sheets.values().append(spreadsheetId=SHEET_ID, range="Drafts!A:D", valueInputOption="RAW", body={"values": rows}).execute()
notify.email_me(f"{len(rows)} new blog drafts", "\n".join(r[1] for r in rows))
state.set("seen", list(seen)[-1000:])
return {"drafts": len(rows)}FAQ
Common questions
Which feeds can I add?
Is rewriting other people's articles allowed?
Will the same item become two drafts?
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 a blog plan sheet into WordPress drafts
Each morning the next topic in your blog plan sheet becomes an SEO article draft in WordPress, with the link written back to the sheet.
See how it worksAdd a short summary to the top of every WordPress post
Every night, posts without a summary get a three-line summary at the top, and each one is logged in a sheet so you can see what has been done.
See how it worksTurn this week's trending searches into WordPress drafts
Every Monday the week's rising searches in your niche are logged in a sheet and the top three become blog drafts in WordPress.
See how it worksKeep exploring
Set up “Turn new items from your sources into WordPress drafts” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.