Every hour
Add FAQ sections to WordPress pages listed in a sheet
List a page in your FAQ sheet and five questions and answers written from its content are added to the bottom of the page, with the row marked done.
- Runs
- Every hour
- Apps
- Google Sheets, WordPress
- AI
- Yes, uses the built-in AI allowance
- Access
- WordPress editor; Sheets edit
Send this to your assistant
Create a ClickRuntime automation: every hour, for each page URL in my FAQ sheet without a status, write 5 FAQs from the page content, append them to the WordPress page and mark the row done.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A physiotherapy clinic's WordPress site has a page for each treatment it offers. Patients ask the same questions on the phone again and again: how many sessions, whether it hurts, what to wear. An FAQ on each page would save reception time and help the pages appear in search, but nobody at the clinic has time to write them.
This automation adds them page by page. Staff paste page URLs into a Google Sheet. Every hour the automation picks up new rows, reads each page, AI writes five FAQs based on its content, and they are added to the end of the page along with FAQ markup that search engines understand. The row is then marked done.
What you get out of it
Fewer repeat questions
Answering common questions on the page means fewer phone calls and emails asking the same thing. Front-desk staff get time back.
Pages that match how people search
Many searches are phrased as questions. FAQ sections with proper markup give those pages a better chance of showing up for them.
Controlled rollout
Only pages you add to the sheet are changed, one row at a time. You can check the first few before adding the rest.
A clear record of what changed
Each row is marked done with the date. You always know which pages have an FAQ.
How it works
What happens, step by step
Every hour, ClickRuntime reads your FAQ sheet and finds page addresses with no status yet.
For each one, it finds the page in WordPress and reads its content.
AI writes five questions and answers using only what the page says, plus the matching FAQ markup.
The FAQ section is added to the end of the page, and the row is marked done so it is not handled again.
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
- 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 Sheets and WordPress steps into one automation
Under the hood
The code that runs this automation
import re
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, http, ai, report_fetched
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()
rows = sheets.values().get(spreadsheetId=SHEET_ID, range="FAQ!A2:B").execute().get("values", [])
todo = [(i + 2, r[0]) for i, r in enumerate(rows) if r and r[0] and len(r) < 2][:5]
report_fetched(len(todo))
if not todo:
return {"done": 0}
for row, url in todo:
page = wp("GET", "pages", params={"slug": url.rstrip("/").split("/")[-1], "context": "edit"})[0]
text = re.sub("<[^>]+>", " ", page["content"]["raw"])[:4000]
faq_html = ai.generate(f"Page content:\n{text}\n\nWrite 5 FAQs answered by this content as HTML (h3 + p), then a FAQPage JSON-LD script tag.", max_output_tokens=1000).text
wp("POST", f"pages/{page['id']}", json={"content": page["content"]["raw"] + "\n<h2>Frequently asked questions</h2>\n" + faq_html})
sheets.values().update(spreadsheetId=SHEET_ID, range=f"FAQ!B{row}", valueInputOption="RAW", body={"values": [["done"]]}).execute()
return {"done": len(todo)}FAQ
Common questions
Will it overwrite my page content?
Does it work with page builders?
What is the FAQ markup?
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
Write social captions for new WordPress posts in a sheet
Each time you publish a blog post, captions for LinkedIn, X and Facebook are written and added to your social queue sheet, ready to schedule.
See how it worksTurn 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 worksKeep exploring
Set up “Add FAQ sections to WordPress pages listed in a sheet” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.