# Content Polish Pass

Fills the excerpts, SEO titles, and descriptions your published content is missing, writes alt text onto images that have none, and logs exactly what it changed.

- Category: Content
- Steps: 1
- Cadence: Runs weekly
- Cost: Runs inside the Free plan allowance at the weekly default.
- Version: 1

## What gets installed

- A Demo Articles type with 3 incomplete articles to work on
- A Content Audit type to log each run
- Elena, SEO Analyst as the agent
- One weekly workflow, schedule off until you enable it

Installs into an existing project. Existing content is not overwritten, and the recurring schedule stays off until it is turned on in the dashboard.

## How it works

# Content Polish Pass

A weekly workflow that fills the supporting fields your published content is missing, describes images that have no alt text, and logs what it changed.

## What it installs

- `demo-articles`: three deliberately incomplete articles so the first run has work to do
- `content-audit`: a log of each run
- Agent: Elena, SEO Analyst (`seo-analyst`)
- One weekly workflow, created with its recurring schedule disabled

## Install it

Hosted MCP endpoint: `https://mcp.cosmicjs.com/v1/buckets/{bucket-slug}`

Or install in one click from https://www.cosmicjs.com/marketplace/workflows/content-polish-pass

## The prompt

```text
Fill in the supporting fields your published content is missing, then describe the images that have no alt text.

Part one: object fields.
1. Find published objects missing any of: excerpt, seo_title, seo_description.
2. Process at most {{max_objects}} objects. Stop when you reach that number, even if more remain. This keeps the run inside the token budget.
3. For each object, read the title and content, then write only the fields that are empty:
   - excerpt: one or two sentences in the author's voice, saying what the piece covers. Not a truncated first paragraph.
   - seo_title: under 60 characters, most important keyword first, no trailing brand suffix.
   - seo_description: under 160 characters, describes what the reader gets, ends with a reason to click.
4. Preserve the author's voice. Do not rewrite body content or titles, and do not touch any field that already has a value.

Part two: image alt text.
5. Call get_media with missing_alt_text=true to list images with no description. Handle at most {{max_images}} of them.
6. For each one, look at the image and call update_media with alt text that describes what is in it for someone who cannot see it: specific, under about 125 characters, no "image of" preamble, no keyword stuffing.
7. Alt text goes on the media record, never into an object field. One description on the media record covers every object that references that image.
8. If an image is purely decorative, leave it alone rather than inventing filler. Note it in the summary instead.

When finished, create one object in the content-audit type recording:
- run_date: today
- objects_scanned: how many objects you examined
- fields_filled: how many individual object fields you wrote
- images_described: how many media records you gave alt text
- summary: a short markdown list of what you changed, one line per object or image
- details: JSON array of { object_slug or media_id, fields_written }

If you found nothing to fill, still create the audit object noting zero changes. A run that reports honestly is more useful than one that invents work.
```

## Where alt text goes

Alt text is written onto the media record, not into a field on the object that happens to use the image. One image described once is then correct everywhere it appears, and stays correct when another object reuses it. This is why the installed content model has no alt text field.

## Cost

The object half of the run costs roughly what a metadata pass costs. Describing images adds an image to the prompt for each one, so the per-image cost is higher: keep the image cap low on the Free plan.

## Install

Open https://app.cosmicjs.com/login?redirect_to=%2Fprojects%3Fworkflow_template%3Dcontent-polish-pass&utm_source=cosmicjs.com&utm_medium=website&utm_campaign=workflow-template-marketplace&utm_content=workflow-template-content-polish-pass , pick a project, and confirm. The workflow runs once immediately so its first result is visible right away.
