Content audit and refresh desk for your marketing site

Pull every page on your site into one ranked table, see what is thin or broken, and hand your team a ready-to-edit draft without anything going live.

App
FirecrawlWordPressGoogle SheetsMarketingResearch & MonitoringContent Generation
PromptCreate

Build me a content audit and refresh desk for our marketing site. I open it at the start of every content sprint, type in a domain or a section path, and work through one ranked table of every page until I have decided what to refresh, what to leave, and what to retire. It is used by our content lead and a couple of writers, and it needs to remember what we decided last quarter.

The main screen has a URL input and a Run audit button. When I run it, a handler calls Firecrawl Map Website URLs on what I typed to discover every page under that domain or section, then uses Firecrawl Crawl Website to pull each page down as markdown along with its page title, meta description, outbound links, and any published or modified date in the page metadata. For a re-check of a single page, use Firecrawl Scrape URL rather than a whole crawl. Show live progress while the run is going, since a big site takes a while.

The result is one sortable table with a row per page. Columns: URL, section (derived from the first path segment), word count, page title, meta description, last updated, number of links on the page that failed to load, and a status column for whether we have already actioned this page. Flag a title or meta description as missing when it is absent and as duplicated when the exact same string appears on another page in the run, and show which other pages it collides with. Compute an issue score so the table can be ranked worst first by default, weighting missing or duplicated titles and descriptions, thin word counts, staleness, and failed links. I need to filter by section and to hide pages already marked handled.

Failed links are found by taking the outbound links on a page and running Firecrawl Scrape URL against each one, treating a Firecrawl failure such as a missing page, an unreachable host, or a timeout as a failure. Always surface the actual failure reason in the interface rather than presenting a flat broken verdict, because this is a signal to go check something, not a link checker. Cap how many links get checked per page and de-duplicate repeated links across pages so a shared footer link is only tested once per run.

Clicking a row opens a detail panel with the page copy on one side and its issues on the other: the current title and meta description, the word count against our thin-page threshold, the duplicate collisions, the last updated date, and each failing link with its reason. The panel also shows the history of what we decided about this page in previous audits.

On that panel put a Draft a refresh button that kicks off a background agent for the page. The agent re-reads the live page with Firecrawl Scrape URL, writes an improved page title, an improved meta description, and a section by section rewrite outline that says what to keep, cut, update, and add. It then matches the URL to the right WordPress post using WordPress List Posts, searching on the slug and the page title, and reads the matched post with WordPress Retrieve a Post to confirm before writing. When a match is found it saves the rewrite with WordPress Update a Post; when there is no confident match it creates a new post with WordPress Create a Post. In both cases the post status must be draft. Nothing this app writes may ever be published, and if the agent cannot find a confident match it should say so in the app rather than guessing. When the agent finishes, its output lands back in the detail panel so I can read the proposed title, description, and outline next to the original copy, with a link through to the WordPress draft.

Persist everything to a Google Sheet. When an audit run completes, append a row per page with Google Sheets Append Values covering the run date, URL, section, word count, the title and description issues, last updated, and failing link count. When I mark a page as refresh, leave, or retire, append a decision row with the page, the decision, who made it, the date, and any note, plus the WordPress draft link when one exists. On load, and at the start of every run, read that sheet back with Google Sheets Get Values so pages that were already actioned come through marked as handled with the previous decision shown.

Keep the interface in plain language a marketing manager would use. Say missing description and thin page rather than search jargon, and make the worst-first ranking the thing I see first when the run finishes.

What does this prompt do?

  • Type in a domain or a single section and the app reads every page on it, then builds one sortable table with word count, page title, description, and when the page was last updated.
  • Pages rank worst first, so thin, untitled, duplicated, and long-neglected pages rise to the top, and you can narrow the list to one section at a time.
  • Open any page to read its actual copy next to its problems, including which of its own links no longer load and the reason each one failed.
  • Press Draft a refresh and a background helper re-reads the live page, writes a better title, description, and a section by section rewrite outline, then saves it to WordPress as a draft.
  • Every audit run and every call you make gets appended to a Google Sheet, so pages you already handled show up as done the next time you run the audit.

What do I need to use this?

  • A Firecrawl account so the app can read the pages on your site
  • A WordPress site you can log into, with an application password from your profile page
  • A Google account and a spreadsheet to hold the running record
  • The domain or section address you want to audit, for example yoursite.com or yoursite.com/blog

How can I customize it?

  • Change what counts as a thin page so the word count cutoff matches your own house standard
  • Point the audit at one section, like your blog or your guides, instead of the whole site
  • Add your own columns to the tracking sheet, such as an owner name or a target date, and they carry across quarters

FAQs

Will anything get published to my site automatically?
No. Every rewrite is saved to WordPress as a draft, so a person still has to open it, read it, and hit publish. Nothing the app writes is visible to visitors until you say so.
Does this work if my site is not on WordPress?
The audit half works on any public site, because the app reads your pages the same way a visitor would. The Draft a refresh button is the part that needs WordPress, since that is where the draft gets saved.
Is this a proper broken link checker?
Not quite, and it does not pretend to be. It tries to read each linked page and reports the ones it could not load, along with the reason, such as a missing page or a request that timed out. Treat it as a strong signal worth checking, not a verdict.
How long does a run take on a large site?
It depends on how many pages you point it at. A single section usually finishes in a few minutes, while a whole site with thousands of pages takes longer. Most teams start with one section per sprint.
Will I lose the record between quarters?
No. Every run and every decision is appended to your Google Sheet rather than overwriting it, so you keep a full history and the app reads it back to mark pages you already dealt with.

Related templates

Review desk for portal forms your team still fills in by hand

Stage a batch of filings overnight, then approve each completed form from a screenshot before anything is ever submitted.

Kernel
Google Sheets
Slack Bot
App
Audit what Intercom's Fin AI actually resolved before you pay

Review every conversation Fin closed as resolved, judge which ones actually stuck, and see what the gap is worth against your bill.

Intercom
Google Sheets
Slack Bot
App
Returns and warranty claim desk that follows your policy

Work every return, damage and warranty claim in one queue, with the order, the delivery date and a policy-backed recommendation already on screen.

Kustomer
Shopify
Google Sheets
App
Turn last week's cafe sales into this week's grocery order

See exactly which ingredients next week needs based on what you actually sold, adjust anything by hand, then build a one-click grocery cart.

Instacart
Square
Google Sheets
App
Benchmark your Instagram account against rival brands

See follower growth, posting cadence, format mix and engagement rate for your brand and every competitor you track, side by side on one board.

Instagram
Google Sheets
Google Docs
App
Find the services you're underpricing in your Jobber price book

Open one screen to see how every service in your Jobber price book actually performed: how often it sold, what you charged, and where prices swing.

Jobber
Google Sheets
App

Stop letting your audit spreadsheet go stale.

Run the audit, work the list, and leave every refresh sitting in WordPress as a draft ready for an editor.