Weekly SEO refresh for stale Shopify product descriptions
Every Sunday, find stale or non-converting Shopify products, rewrite their descriptions for SEO, and log every change in Notion for review.
Build me an agent workflow that runs once a week on a cron trigger (Sunday at 6pm America/New_York) and refreshes the descriptions of stale or underperforming Shopify products with SEO-friendly rewrites, logging every change to a Notion audit database.
Selecting which products to refresh. Call Shopify List Products to enumerate active products, paginating until done. Call Shopify List Orders filtered to the last 30 days (any financial status) and build a set of product IDs that appear in line items. A product is a candidate for refresh if it meets either condition: (a) status = active AND updated_at is older than 120 days, or (b) status = active AND its product ID does not appear in any order line item from the last 30 days. From the candidate pool, pick at most 20 products per run. Prefer products that hit BOTH conditions, then the oldest updated_at first, so the catalog never gets rewritten all at once.
Drafting the new copy. For each selected product, read the existing title, body_html, vendor, product_type, and tags. Then draft a new SEO-friendly description that: opens with an improved meta-style first sentence (one tight line with the primary keyword); is 80 to 150 words total; uses 3 to 5 scannable bullets covering benefits, materials or specs, and use cases; weaves the product title and one or two relevant keywords from the title/tags in naturally without keyword stuffing; matches a clean, friendly DTC voice. Keep brand-specific language and any compliance phrasing from the original (warranty, sourcing claims, allergen info) intact.
Writing it back. For each selected product, call Shopify Update Product to set body_html to the new description. Do not change title, price, variants, images, or status.
Auditing in Notion. For every product that was updated, call Notion Create a Page as a child of the audit database (I will provide the database ID at setup) with these properties: Product ID, Product Handle, Product Title, Reason Flagged (one of: stale, no_recent_sales, both), Old Description (truncated to fit Notion's rich text limit if needed), New Description, and Run Timestamp. Use the page body to store the full old and new descriptions side by side as two headings with paragraph content, in case the rich text properties get truncated.
Guardrails. Cap the run at 20 products. Skip any product whose tags include 'do-not-rewrite' or 'hero'. If Shopify returns a rate limit (429), back off and retry. If the Notion audit page fails to create for a product, do NOT update that product in Shopify on retry; the audit log must exist for every rewrite. Log a short summary at the end: how many products were considered, how many were rewritten, and which were skipped and why.
Inputs I will set at install time: the Notion audit database ID, the weekly cap (default 20), the staleness threshold in days (default 120), the no-sales window in days (default 30), and an optional list of vendor names or tags to exclude.
Additional information
What does this prompt do?
- Picks up to 20 products each week that look stale (not updated in a while) or that haven't sold recently, so your catalog never gets rewritten all at once.
- Drafts a fresh, SEO-friendly description for each product with a clear value prop, scannable bullets, and your target keywords woven in naturally.
- Publishes the new copy back to your Shopify store automatically, so refreshed listings go live without anyone copy-pasting.
- Logs every rewrite to a Notion audit database with the old text, the new text, and the reason it was flagged, so your marketing owner can review or revert.
What do I need to use this?
- A Shopify store and admin access to read and update products and orders.
- A Notion workspace with an audit database shared with your General Input connection.
- A rough idea of which products are core (so you can exclude them) and what a 'stale' product looks like for your catalog.
How can I customize it?
- Change the day and time it runs, or raise or lower the weekly cap on how many products get rewritten.
- Tune the 'stale' definition: how many days since the last update, how many days since the last sale, which product status to include.
- Set the voice, length, and target keywords for the new descriptions, or scope it to specific vendors, tags, or collections.
Frequently asked questions
Will this rewrite my entire catalog at once?
How do I review or undo a rewrite?
Can I exclude specific products or collections?
What if a product is already selling well?
Does this also update SEO meta titles and tags?
Stop letting stale product copy hide your best inventory.
Connect Shopify and Notion once, and Geni rewrites the right product descriptions every Sunday with a full audit trail.