Skip to content

Weekly

Log new SEO issues to a sheet and create Asana tasks to fix them

Every Monday new broken backlinks are added to your Google Sheet and each one gets an Asana task, so nothing found is forgotten.

Runs
Weekly
Apps
Asana, Google Sheets
AI
Not needed
Access
Sheets edit; Asana write

Send this to your assistant

Create a ClickRuntime automation: every Monday, fetch my broken backlinks from DataForSEO, append new ones to my Google Sheet, and create an Asana task for each.

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 content marketer at an online shop runs an SEO report every few weeks and finds a list of backlinks pointing at pages that no longer exist. Each one is a link another site gave for free, now sending visitors and ranking value to a 404. The list goes into a spreadsheet that nobody revisits, and the same broken links show up in the next report.

Checking every week and turning each newly found problem into a task means fixes such as redirects actually get scheduled and done, and the sheet becomes a record of what was found and when.

What you get out of it

  • Lost link value gets recovered

    Each broken backlink fixed with a redirect sends visitors and ranking value back to a live page. Small fixes add up over months.

  • Only new problems create work

    Links already in the sheet are skipped. Your team sees each issue once, not every week.

  • Findings turn into assigned tasks

    Each new issue becomes an Asana task in the project your team already plans from. It gets an owner and a due date instead of sitting in a report.

  • A running log you can show

    The sheet records when each problem was found. It is easy to show a manager or client how many issues were spotted and fixed each month.

  • Steady rather than a big clean-up

    A few issues a week are easy to handle. It avoids the quarterly audit that turns up hundreds of problems at once.

How it works

What happens, step by step

  1. Every Monday, ClickRuntime asks DataForSEO for backlinks that point to broken pages on your site.

  2. It skips any it has already logged, so only new problems come through.

  3. Each new broken link is added as a row in your Google Sheet with the date found.

  4. An Asana task is created for each one so someone can set up a redirect or fix the page.

Before it runs live

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

What you get

RunsWeekly
Log new SEO issues to a sheet and create Asana tasks to fix themtoday, 9:00Succeeded
Asana · SEOFix broken backlink to acme-shop.com/guides/winter-tires (linked from northwindblog.com)

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
  • 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 Asana and Google Sheets 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.
seo_issues_logged_to_a_sheet_with_asana_fix_tasks.pyexample
from datetime import date
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, http, state

DOMAIN = "example.com"
SHEET_ID = "your-spreadsheet-id"
PROJECT_ID = "your-asana-project-id"

@on_trigger
def run(event):
    auth = (credentials.secret("DATAFORSEO_LOGIN"), credentials.secret("DATAFORSEO_PASSWORD"))
    res = http.post("https://api.dataforseo.com/v3/backlinks/backlinks/live", auth=auth,
                    json=[{"target": DOMAIN, "filters": ["is_broken", "=", True], "limit": 500}]).json()
    items = (res["tasks"][0]["result"] or [{}])[0].get("items") or []
    seen = set(state.get("seen") or [])
    new = [i for i in items if f"{i['url_from']}|{i['url_to']}" not in seen]
    if not new:
        return {"new": 0}
    rows = [[date.today().isoformat(), i["url_from"], i["url_to"]] for i in new]
    sheets = build("sheets", "v4", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False)
    sheets.spreadsheets().values().append(spreadsheetId=SHEET_ID, range="Broken links!A:C", valueInputOption="USER_ENTERED", body={"values": rows}).execute()
    for i in new:
        http.post("https://app.asana.com/api/1.0/tasks", headers={"Authorization": f"Bearer {credentials.secret('ASANA_TOKEN')}"},
                  json={"data": {"name": f"Fix broken backlink to {i['url_to']}", "notes": f"Linked from {i['url_from']}", "projects": [PROJECT_ID]}})
        seen.add(f"{i['url_from']}|{i['url_to']}")
    state.set("seen", sorted(seen))
    return {"new": len(new)}

FAQ

Common questions

Where does the SEO data come from?
From a DataForSEO account, using your own API login. It reports backlinks that point to pages on your site returning errors.
How does it know an issue is new?
Each broken link is identified by the linking page and the target address on your site. Pairs already seen are remembered and never logged twice.
Can it track new ranking keywords instead?
Yes. The same pattern works for keywords your site has started ranking for, logging each new one and creating a task to improve that page.
What permissions does it need?
Sheets edit; Asana 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 runs (weekly). 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 “Log new SEO issues to a sheet and create Asana tasks to fix them” from your assistant

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