Landing Page Copy skill for Codex
Headlines a competitor could not reuse. Codex gathers the visitor, traffic source, proof and customer phrases before writing, builds a one-line message hierarchy, then drafts hero, benefits, social proof, FAQ and CTAs section by section. Claims without a source are flagged instead of softened, headline variants test distinct angles, and copy is edited into your existing components and checked rendered at mobile width.
curl -fsSL codexskills.dev/install.sh \ | sh -s -- landing-page-copy Installs to ~/.agents/skills/landing-page-copy/ for every project on this machine.
curl -fsSL codexskills.dev/cli.mjs -o codex-skills.mjsnode codex-skills.mjs install landing-page-copy The CLI also searches, updates and removes skills. Run it with no arguments to pick from a list. Needs Node 20.12+.
curl -fsSL codexskills.dev/install.sh \ | sh -s -- --project landing-page-copy Installs to .agents/skills/landing-page-copy/ in the current repository. Commit it and everyone who runs Codex there gets it.
curl -fsSLO codexskills.dev/downloads/landing-page-copy.zipunzip -o landing-page-copy.zip -d ~/.agents/skills/ The archive holds the skill folder with its generated agents/openai.yaml. Unzip into .agents/skills/ to scope it to a repo.
& ([scriptblock]::Create((irm codexskills.dev/install.ps1))) landing-page-copy PowerShell 5.1 or 7. Installs to %USERPROFILE%\.agents\skills\. Add -Project for the current repo.
104-line POSIX script. No sudo, no telemetry. Read install.sh
Use it in Codex
Start a prompt with $landing-page-copy, or pick it from /skills.
You can also just describe the task: Codex reads the description below and loads the playbook when your request matches.
What Codex reads before loading it
Writes and rewrites conversion copy for landing pages, homepages and feature pages - hero headline and subhead, value propositions, benefit sections, social proof, objection-handling FAQ and calls to action - grounded in the visitor's awareness level, real customer language and verifiable claims. Edits copy directly in HTML, JSX, MDX or CMS content files. Use when asked to write a landing page, improve a hero section, make a page convert better, sharpen messaging for a launch, or produce headline variants for a test.
Use it when
- A new landing, feature or campaign page needs copy from scratch
- An existing hero or value proposition is vague or generic
- Ads point at a page whose message does not match the ad
- You need distinct headline variants to put into an experiment
Use something else when
- The layout, hierarchy and visual design need work rather than words: use landing-page-design
- You want a conversion audit of the whole funnel: use conversion-rate-optimization
- The goal is ranking for a query rather than converting visitors: use on-page-seo
How to check the result
Someone shown only the hero can state what the product is, who it is for and what to do next, and every claim has a source or a VERIFY marker.
The mistake it prevents
Writing a headline so generic that any competitor could paste their logo above it without changing a word.
Good landing page copy lets a stranger answer three questions in five seconds - what is this, who is it for, why should I care now - and then gives each objection an answer before the visitor has to ask. Every claim is specific and true; nothing reads like a template with the product name swapped in.
Inputs to gather first
Do not write a word of copy until these exist, even as rough notes:
| Input | Where to find it | If missing |
|---|---|---|
| One target visitor and their trigger moment | Sales calls, support tickets, user interviews, ICP doc | Ask the user; write it down as an assumption |
| Traffic source and awareness level | Ad campaigns, UTM data, referrers | Assume problem-aware cold traffic and say so |
| Primary conversion action | Product, analytics events | One action only (sign up, book demo, buy) |
| Proof available | Customer logos (with permission), metrics, reviews, case studies | Use what is real; never invent |
| Customer language | Reviews, G2/Capterra, Reddit threads, interview transcripts, support tickets | Ask the user for 10-20 raw quotes |
| Constraints | Brand voice doc, legal-approved claims, AGENTS.md, existing components | Follow the existing component’s slots and character limits |
Search the repo for an existing voice or messaging doc before inventing one:
rg -il "voice|tone|messaging|positioning" docs/ content/ *.md.
Match the page to awareness
| Visitor arrives… | Awareness | Hero should lead with |
|---|---|---|
| From a branded search or a referral | Product-aware | The offer and the CTA; skip the problem lecture |
| From a comparison or “X alternative” search | Solution-aware | The differentiator against what they use now |
| From a problem search or content | Problem-aware | The problem in their words, then the outcome |
| From a cold social ad | Unaware | A sharp observation or outcome that earns the next line |
Workflow
- [ ] 1. Collect inputs (table above); list assumptions explicitly
- [ ] 2. Mine customer language: pull 10-20 phrases about pain, outcome, alternatives
- [ ] 3. Write the message hierarchy (one sentence each) before any section copy
- [ ] 4. Draft sections top to bottom using the structure below
- [ ] 5. Cut: every sentence must inform, prove or move; delete the rest
- [ ] 6. Check claims against evidence; mark anything unverified
- [ ] 7. Produce 3-5 headline variants for testing
- [ ] 8. Edit copy into the codebase in existing components; render and read it in place
Message hierarchy (write this first)
- Visitor: <role, situation, trigger>
- Core promise: <outcome they get, in their words>
- Why believe it: <mechanism or proof in one line>
- Why now / why us: <differentiator vs. the real alternative, often "a spreadsheet" or "doing nothing">
- Primary CTA: <verb + object>, risk reducer: <no card / free plan / cancel anytime>
Section structure (default; adapt to the page)
- Hero. Headline = outcome or sharp problem framing, under ~10 words. Subhead = who it is for and how it works, 1-2 sentences. CTA button with a specific verb (“Start free trial”, “Get the template”, not “Submit” or “Learn more”). A risk reducer line under the button. A product visual that shows the outcome, not a decorative blob.
- Proof strip. Logos, rating, or one hard number. Only with permission and evidence.
- Problem or before/after. Name the current painful way, in customer words.
- How it works. Three steps, concrete verbs.
- Benefits. 3-5 blocks. Each: benefit headline, one line of mechanism, one proof point or screenshot. Translate features: “Role-based permissions” becomes “Give contractors access without giving them your billing”.
- Social proof. Testimonials that state a specific result, with name, role and company (or the most identifying detail the customer approved).
- Objections / FAQ. Price, switching cost, security, time to value, “will it work for my case”. Answer, do not deflect.
- Final CTA. Restate the promise and the risk reducer.
Headline formulas that stay specific
Use them as starting shapes, then replace every generic word with a detail from the inputs.
| Shape | Example |
|---|---|
| Outcome + timeframe | “Close your books in 2 days, not 10” |
| Outcome without the pain | “Ship translated docs without exporting a single CSV” |
| For whom + what | “Payroll for restaurants with tipped staff” |
| Call out the alternative | “Your on-call spreadsheet, replaced by one rotation link” |
| Customer quote as headline | ""We stopped losing leads between the form and the CRM"" |
Reject a headline if a competitor could put their name on it unchanged.
Line-level editing rules
- Specific beats clever: numbers, names, timeframes, nouns from the customer’s world.
- One idea per sentence. Most sentences under 20 words.
- “You” more than “we”. Swap “We offer advanced analytics” for “See which campaign brought each paying customer”.
- Cut hedges and filler: “simply”, “easily”, “powerful”, “cutting-edge”, “solution”, “next-generation”, “world-class”.
- Buttons describe what happens next. Match button text across the page.
- Keep reading level plain (roughly grade 7-9) unless the audience is specialist and the jargon is theirs.
Claims and compliance
- Every number needs a source the user can produce: “cut onboarding time 40%” must come from a dated measurement or named customer study.
- Superlatives (“#1”, “fastest”, “best”) need substantiation; replace with the specific comparison or remove.
- Testimonials must be real, approved by the person quoted, and representative. In the US the FTC’s 2024 rule bans fake or AI-generated reviews and testimonials; disclose any incentive or relationship.
- Pricing claims (“free forever”, “no hidden fees”) must match the actual pricing page and
terms. Hand pricing structure to
pricing-page. - Regulated sectors (health, finance, legal) need the user’s compliance or legal review before publishing.
Mark anything unproven inline as [VERIFY: source?] rather than softening it silently.
Editing copy in the codebase
- Locate copy:
rg -n "<current headline text>"acrossapp/,src/,content/,locales/. - If strings live in i18n files, edit the source locale only and flag other locales for translation; do not machine-translate silently.
- Respect component limits: a hero designed for a 6-word headline will wrap badly at 14. Render the page (dev server or Storybook) at 375 px and 1440 px and read it in place.
- Keep
<title>and meta description aligned with the new hero; hand SEO tuning toon-page-seo.
Variants for testing
Produce variants that test one idea each, not reworded synonyms:
| ID | Angle | Headline | Subhead |
|----|-------|----------|---------|
| A | Control | ... | ... |
| B | Outcome + time | ... | ... |
| C | Alternative callout | ... | ... |
Running and reading the test belongs to ab-testing.
Gotchas
- Writing for the founder, not the visitor: feature lists in internal vocabulary.
- Hero headline and ad headline disagree; message mismatch from ad to page kills conversion. Check the ads that point at the page.
- Five CTAs with different verbs; one primary action, repeated.
- FAQ answers that dodge (“Contact us for details”) on price or security.
- Social proof placed after the fold only; at least one credibility signal belongs near the hero.
Verification
- Five-second test: show only the hero to someone (or reread cold) and write down what it is, who it is for, and what to do. All three must be right.
- Every claim has a source or a
[VERIFY]marker. - Read the page rendered at mobile width; nothing important falls below a 3-line wrap.
- Spellcheck and a final pass for banned filler words.
Output template
## Landing page copy: <page>
**Assumptions:** visitor, awareness level, primary CTA, traffic source
**Message hierarchy:** <5 lines>
### Hero
H1: ...
Subhead: ...
CTA: ... Risk reducer: ...
### <Section> ... (repeat)
### Headline variants for testing
| ID | Angle | Headline |
### Claims to verify
- "<claim>" - needs <source> What the zip contains
SKILL.md plus the interface file below. Nothing runs on install.
agents/openai.yaml
Gives the Codex app a display name, a one-line description and a starter prompt for this skill.
interface:
display_name: "Landing Page Copy"
short_description: "Headlines a competitor could not reuse"
default_prompt: "$landing-page-copy Rewrite the hero on our homepage, it says what we do but nobody gets it" About this skill
Written and maintained by the Codex Skills editors to the same editorial standard as every skill here: a selective description, a real workflow, known pitfalls and a way to verify the work. First published , last updated . MIT licensed. Something wrong or out of date? Tell us.