Can Claude write meta descriptions in bulk?

Quick Answer: Claude can write, rewrite, and bulk-process meta descriptions for your entire site by taking a CSV of page URLs and titles as input and returning a CSV of optimised descriptions as output. This cuts what would take hours of manual writing down to minutes, without sacrificing quality or keyword relevance.
Meta descriptions are one of those tasks that every SaaS marketing team knows matters and almost nobody has time to do properly. You have 160 characters to convince someone to click your result over the nine others on the page, and most teams either skip them entirely or write one generic version and paste it everywhere.
Claude changes that equation. With the right prompt structure and a basic CSV workflow, you can generate, review, and publish optimised meta descriptions for hundreds of pages in a single session. This guide shows you exactly how to set that up.
What Makes a Meta Description Worth Writing in the First Place?
A meta description is the short text that appears below your page title in search results. Google does not use it as a direct ranking factor, but it directly affects click-through rate (CTR), which affects traffic, which affects everything downstream.
A strong meta description does three things:
- Matches the search intent of the query the page targets
- Includes the primary keyword naturally (Google bolds it in results)
- Gives the reader a specific reason to click, not a vague summary
The problem for B2B SaaS teams is volume. A typical SaaS site has product pages, feature pages, comparison pages, blog posts, landing pages, and help docs. Writing 160-character descriptions that actually do the job above for every one of those pages is a grind.
Why Claude Is the Right Tool for This Job
Claude handles meta descriptions well for a few specific reasons.
It follows length constraints reliably. When you tell Claude to stay under 155 characters, it does. Other models drift. That matters when you are processing 200 rows and cannot manually check every one.
It understands B2B SaaS context. Claude picks up on product positioning, ICP language, and commercial intent without you needing to explain what a "conversion rate" or "pipeline" is in every prompt. If you need specialist support beyond prompting, SaaS Hackers also maintains vetted lists of B2B SaaS SEO experts and B2B SaaS copywriters who can help shape messaging at scale.
It can process structured data. You can paste a table of page data directly into Claude or use the API to feed it a CSV row by row and get structured output back. No complex tooling required to get started.
How to Set Up the CSV Workflow
This is the core of the process. The goal is CSV in, CSV out: you feed Claude a spreadsheet of page data, and it returns a column of ready-to-publish meta descriptions.
Step 1: Build Your Input CSV
Your input file needs at minimum three columns:
| Column | What to include |
|---|---|
page_url |
The full URL of the page |
page_title |
The H1 or existing title tag |
primary_keyword |
The main search term the page targets |
Optional columns that improve output quality:
page_type(blog post, product page, comparison page, landing page)target_audience(e.g. "VP of Marketing at a Series B SaaS company")existing_meta(the current description, if you want Claude to rewrite rather than generate from scratch)cta_preference(e.g. "book a demo", "start free trial", "read the guide")
The more context you give per row, the less generic the output. For high-value pages like your homepage or key product pages, include all columns. For blog posts at scale, the first three columns are enough.
Step 2: Write a System Prompt That Locks in the Rules
Before you paste any data, give Claude a clear brief. This is the instruction set that governs every description it writes. Here is a working template:
You are an SEO copywriter specialising in B2B SaaS. I will give you a table of pages. For each row, write one meta description that:
- Is between 140 and 155 characters including spaces - Includes the primary keyword naturally, ideally in the first half of the sentence - Matches the search intent implied by the page type - Ends with a clear action or benefit, not a full stop - Uses plain, direct language. No buzzwords.
Return your output as a table with two columns: page_url and meta_description. Do not add commentary. Do not skip rows.
That last instruction matters. Without it, Claude sometimes adds notes like "Here is a suggestion for row 4..." which breaks your ability to copy the output straight back into a spreadsheet.
Step 3: Paste Your Data in Batches
Claude handles around 50-80 rows comfortably in a single context window before output quality starts to drift. For larger sites, split your CSV into batches by page type:
- Product and feature pages (highest commercial intent, process first)
- Comparison and alternative pages
- Blog posts and guides
- Help docs and support pages
Paste the batch as a markdown table directly into the chat after your system prompt. Claude will return a matching table you can copy straight into a spreadsheet.
Step 4: Run a Consistency Check Pass
Before publishing, run a second prompt on your output table:
Review this table of meta descriptions. Flag any row where: - The character count falls outside 140-155 characters - The primary keyword does not appear - The description reads like a generic summary with no specific benefit
Return only the flagged rows with a one-line note explaining the issue.
This catches the 5-10% of rows that need a manual tweak without requiring you to read every single one. If you are auditing descriptions as part of a wider optimisation project, this process fits neatly alongside a broader B2B SaaS SEO agency workflow.
How to Handle Different Page Types
Not all meta descriptions follow the same formula. Here is how to adjust your prompt per page type.
Product and Feature Pages
These pages target high-intent queries. The description should lead with the outcome, include the feature name or product name, and end with a conversion-oriented phrase.
Example output format: "[Product] helps [ICP] [achieve outcome] without [common pain point]. [CTA]."
Add this to your system prompt for this batch: "These are product pages. Prioritise outcome language over feature description. The reader is evaluating options."
Comparison and Alternative Pages
These pages capture buyers who are already in the market. The description should acknowledge the comparison context and give a reason to click through rather than pick a competitor from the SERP.
Add: "These are comparison pages. The reader is actively choosing between products. Write descriptions that signal confidence and specificity, not neutrality."
Blog Posts and Guides
Here the intent is informational. The description should tell the reader exactly what they will learn or get, and match the tone of the article.
Add: "These are educational articles. Match the informational intent. Do not use sales language. The goal is to earn the click by being the most useful-sounding result." For teams building an editorial engine around this type of content, SaaS Hackers also has resources on content workflows, including using Claude Projects for editorial calendars.
Using Claude via API for Full Automation
If you want to go beyond copy-paste and automate the whole process, Claude's API makes this straightforward. The basic flow:
- Read your input CSV row by row using Python or a no-code tool like Make or Zapier
- Send each row as a structured message to the Claude API with your system prompt
- Write the response to a new column in your output CSV
A minimal Python structure looks like this:
import anthropic
import csv
client = anthropic.Anthropic(api_key="your_api_key")
with open("pages.csv") as infile, open("output.csv", "w") as outfile:
reader = csv.DictReader(infile)
writer = csv.DictWriter(outfile, fieldnames=["page_url", "meta_description"])
writer.writeheader()
for row in reader:
message = client.messages.create(
model="claude-opus-4-5",
max_tokens=200,
system="You are an SEO copywriter for B2B SaaS. Write one meta description of 140-155 characters. Include the primary keyword. Return only the description text, nothing else.",
messages=[{
"role": "user",
"content": f"URL: {row['page_url']}\nTitle: {row['page_title']}\nKeyword: {row['primary_keyword']}\nPage type: {row['page_type']}"
}]
)
writer.writerow({
"page_url": row["page_url"],
"meta_description": message.content[0].text.strip()
})
This approach scales to thousands of pages and removes the batch-size limitation of the chat interface. For most B2B SaaS teams, the no-code route via Make or Zapier is faster to set up and requires no engineering support. If automation is part of a wider growth stack, you may also want to review specialist B2B SaaS marketing ops agencies or HubSpot experts for B2B SaaS.
Common Mistakes to Avoid
Skipping the character count instruction. Claude will write great descriptions that are 180 characters long. Always specify the range.
Using the same system prompt for every page type. A help doc and a pricing page have completely different intents. Mixing them in one batch with one prompt produces mediocre output across both.
Publishing without a spot-check. Claude is accurate but not perfect. Run the consistency check pass described above, and manually read the 10-15 highest-traffic pages before pushing anything live.
Ignoring existing descriptions. If a page already has a description with a strong CTR, flag it in your input CSV and tell Claude to preserve it. Do not rewrite what is already working.
FAQs
What is the ideal meta description length for Claude to generate? Target 140-155 characters. Google typically truncates descriptions beyond 155-160 characters in desktop results. Staying in the 140-155 range gives you a small buffer while keeping descriptions long enough to include a keyword and a clear benefit. Always include the character count constraint in your Claude prompt.
Can Claude write meta descriptions that rank better in Google? Meta descriptions are not a direct ranking factor, but they affect CTR, which is a behavioural signal Google monitors. A well-written meta description that matches search intent and includes the target keyword (which Google bolds in results) consistently outperforms generic descriptions on click volume. Claude's output quality is high enough to produce that kind of description at scale.
How many meta descriptions can Claude process in one session? In the chat interface, 50-80 rows per batch is reliable before output consistency drops. Via the API, there is no practical batch limit since each row is sent as a separate request. For sites with more than 100 pages, the API approach or a no-code automation tool like Make is the better option.
Is this workflow suitable for non-technical SaaS marketers? The CSV-in, CSV-out approach via Claude's chat interface requires no technical skills. You need a spreadsheet, a Claude account, and the system prompt template from this guide. The API route requires basic Python or a no-code tool, but it is not a prerequisite for getting value from the workflow.
How does SaaS Hackers recommend prioritising which pages to process first? Start with your highest-traffic pages that currently have no meta description or a generic one. Use Google Search Console to sort pages by impressions with a CTR below 2%. Those pages are already getting visibility but losing clicks, and better meta descriptions will show results fastest.
Find a B2B SaaS Expert
We've collected a directory of B2B SaaS experts and agencies that we've reviewed and categorised based on service and specialism for your review.


