How to Turn High-Traffic Posts That Don't Sell Into a Clear Next Step
Lots of pageviews but no sales? Build a routing table that picks one next offer per article. Includes copy-paste code and prompts.
Last month, the most-read post on my blog was “Getting Started with Claude Code.” 3,200 pageviews. Not a bad number. But over that whole month, exactly four people downloaded the free PDF from it.
That seemed off, so I scrolled to the bottom of the article. The cause was obvious right away. The final paragraph had five links sitting side by side at the same size: free PDF, paid template pack, setup guide, consultation form, and the full product list.
Readers can’t choose from that. Someone who landed on a beginner article just wants to know “what do I do next,” and instead they get hit with a five-way menu. So they pick nothing, close the tab, and leave.
The article gets read, but it doesn’t lead to revenue. That bottleneck isn’t about the quality of the writing, and it isn’t about how smart Claude Code is. The cause is putting five different offers in one article. Today I’ll turn that into a routing table that decides exactly one “next step” per article.
Key takeaways
- When pageviews are fine but products and consultations don’t move, it’s because you’re offering too many things at the end. Show readers five choices and they choose nothing.
- The fix is to read each article’s search intent and narrow it down to one offer per article in a routing table.
- Beginner posts get the free PDF, people stuck on how to phrase requests get the prompt pack, posts about settings and permissions get the paid guide, team rollout gets a consultation. Split the exit by intent.
- What you hand to Claude Code is the mechanical routing: “which intent maps to which exit.” The final call of “what should this reader be offered” stays with you.
- After publishing, don’t rewrite the whole article. Watch only the early-drop-off rate and the click on the first link, then fix the single weakest spot.
Why narrowing to one “next step” actually works
The more options people have, the harder it gets to decide. In behavioral economics this is the well-known “paradox of choice.” There’s a famous experiment where a display offering 6 jam samples outsold one offering 24.
The links at the bottom of an article work the same way. Free PDF, template pack, setup guide, consultation, product list. You line them all up with good intentions, and a comparison job starts in the reader’s head: “which one is for me?” Comparison is a hassle, so most people drop off right there.
So the exit gets narrowed to one offer per article. But not a fixed “always the free PDF.” What the visitor wants next is different for each article. The person reading a beginner post and the person stuck on permission settings should be offered completely different things. Today we’ll build that “change the exit to match the article’s intent” mechanism with a table and some code.
A routing table that picks the exit by search intent
First, classify your blog’s articles by “what problem brought the reader here.” I’ll call that problem the search intent. I split mine into five.
| Search intent (the reader’s problem) | Example articles | The one offer to show next |
|---|---|---|
| Just want to get started (beginner) | Getting started, install steps | Free PDF |
| Tired of writing the same request every time | Prompt tips, request templates | Prompt pack (paid) |
| Stuck on settings, permissions, safe operation | Permission setup, writing CLAUDE.md | Setup guide (paid) |
| Want to roll it out for real in a team or company | Team operations, production risk, cost estimates | Consultation |
| Doesn’t fit any of these | Notes, news-style posts | Free PDF (default exit) |
The point is the right-hand column. For any one article, exactly one thing goes here. If you feel the urge to write more than one, that’s a sign the article’s reader profile is still blurry.
Say you’re tempted to put “the free PDF, the paid guide, and a consultation, all of them” on a permissions article. Stop there. What someone stuck on permissions wants next is almost certainly “a more detailed setup walkthrough.” Mix a free PDF into that and you’ll let a reader who was perfect for the paid guide slip away to the cheaper option.
Once this table exists, the rest is just deciding “which intent” for each article and dropping in the matching exit. The articles that are hard to call usually have two topics mixed into one. In that case, splitting the article improves both the routing and the readability.
What to hand the AI vs. what you decide yourself
A common failure here is handing the entire routing job to Claude Code. Ask it to “add a nice CTA to each article” and it reads too much into the context and slaps on a weird exit.
Draw the line like this.
- Hand to Claude: the mechanical work that follows the routing table. Take the article’s intent label, drop in the matching exit. Write the closing copy to fit that one chosen exit. Mechanically check that no second CTA is left behind.
- You decide: which search intent the article belongs to, as the final call. Changing pricing or presentation. Adding a new intent category. This is reading the reader’s state of mind, so a human does it.
In other words: you pick “which intent” in one word, and let Claude do “then which exit” plus the “draft of the copy.” With that division, accidents don’t happen. When you hand routine work like this to Claude Code in bulk, the basics are laid out in Anthropic’s official Claude Code documentation.
The prompt template I use to ask for it looks like this. Copy it and replace only what’s inside the brackets with your own article.
Add exactly one exit (the thing to offer next) to the following article.
- Article slug: "claude-code-permissions-guide"
- Search intent: "Stuck on settings, permissions, safe operation"
- Matching exit from the routing table: "Setup guide (paid)"
- Exit link URL: "https://example.com/setup-guide"
Conditions:
1. There must be exactly one exit at the end of the article. Do not add other links.
2. Don't write "please buy this." In 1-2 sentences, explain how that guide
helps the reader reproduce this article's work again tomorrow.
3. Check yourself at the end that no second exit is left behind, and report.
Condition 3 is the important one. Telling Claude to self-check in plain words sharply reduces forgotten-link miscounts.
Copy-paste: a script that counts CTAs and warns you
Rely on your eyes alone and you’ll miss one for sure on a busy day. So I put down a small gatekeeper that mechanically counts “are there two or more exits at the end of the article.” It runs on Node.js with no dependencies.
import { readFile } from "node:fs/promises";
// Link patterns that count as an exit (add your own as your funnel grows)
const offerPatterns = [
{ name: "Free PDF", re: /\/thanks\// },
{ name: "Prompt pack", re: /gumroad\.com\/l\/huqrgo/ },
{ name: "Setup guide", re: /gumroad\.com\/l\/ceyhda/ },
{ name: "Consultation", re: /\/training\// },
];
// Only look at the tail of the article (from the last heading onward)
function tailSection(markdown) {
const idx = markdown.lastIndexOf("\n## ");
return idx === -1 ? markdown : markdown.slice(idx);
}
async function checkOffers(filePath) {
const text = await readFile(filePath, "utf8");
const tail = tailSection(text);
const found = offerPatterns.filter((p) => p.re.test(tail));
if (found.length === 0) {
console.log(`WARN ${filePath}: No exit at all. This article has no next step.`);
} else if (found.length > 1) {
const names = found.map((f) => f.name).join(", ");
console.log(`WARN ${filePath}: ${found.length} exits found (${names}). Narrow to one.`);
} else {
console.log(`OK ${filePath}: exactly one exit: "${found[0].name}".`);
}
}
// Usage: node check-offers.mjs path/to/article
const target = process.argv[2];
if (!target) {
console.error("Usage: node check-offers.mjs <article file>");
process.exit(1);
}
checkOffers(target);
Save it as check-offers.mjs and run it like this.
node check-offers.mjs ./content/blog/claude-code-permissions-guide.mdx
If two or more exits are left, you get a warning on the spot. Run it across all articles before publishing and “oops, published with five links still lined up” becomes physically impossible. I wedge this one line in at the end of my publish flow, and it stopped exactly the accident I opened with.
Three times I actually used this
1. Made the beginner article’s only exit the free PDF On that 3,200-pageview beginner post, I removed the paid template and consultation link and kept only the free PDF. The reason is simple: someone who landed on a beginner article isn’t at the paying stage yet. As a result, PDF downloads went from 4 a month to 31. Getting them onto the list for free, then introducing paid material in follow-up emails, beats selling from the first touch.
2. Wired the prompt article straight to the paid template pack Someone who searched their way here because they struggle to write requests can already use Claude Code itself. So they don’t need the free PDF. For that group, I made the only exit on the advanced prompting guide the paid template pack. Just adding one line, “this helps you reproduce the same quality of request tomorrow,” lifted the click rate.
3. Connected permission and settings articles to a consultation Articles that touch team rollout and production risk aren’t covered by self-serve material alone. What the reader wants to know is the individual judgment of “is this safe in our environment?” For posts like the permissions guide, I made the consultation form the sole exit. Mix a free PDF in here and you satisfy a company contact who should be heading to a consultation with a free booklet, and you lose them.
Common pitfalls and how to fix them
Pitfall 1: spotting a weak funnel and rewriting the whole article When you notice “the PDF clicks are low,” you immediately want to rewrite the whole article. But that’s slow and unlikely to land. Fix only the single weak spot. If the PDF is weak, just add one or two sentences at the end about “how the PDF lets you review the work covered in the body.” That’s usually enough.
Pitfall 2: assuming it’s published because the local build passed Even if the build passes on your machine, the live URL can be showing a different article or the homepage. An HTTP 200 isn’t enough. After publishing, open the actual URL and confirm with your eyes that the heading, hero image, opening lines, and exit link all belong to that article.
Pitfall 3: not recording what you tried If you don’t keep a note of how clicks moved after you changed the exit, you’ll repeat the same trial and error next month. Leave one line: “Fixed this article’s intent to X, set the exit to Y, result was Z clicks.” That one line is how judgment accumulates.
The basic fix rule is always the same. When you see a failure, don’t rewrite the whole article. Gather the evidence near the first failure, cut the number of exits, and put the next action in a form you can measure. Just keeping that order changes how fast you improve.
FAQ
Q. Should it really be exactly one exit per article? I want to put both a free and a paid option. A. Keep the primary exit at the end to one. If you absolutely must keep a free safety net, make the paid exit prominent and add the free one as a single small line beneath it. Line up two at the same size and readers almost always drift to the cheaper one or to doing nothing.
Q. Can I have more than five intent categories in the routing table? A. You can, but I recommend starting with five. The more categories there are, the more time you spend agonizing over which article goes where. Once you’re running it and a group of articles clearly won’t fit in five, that’s the time to add one.
Q. Is it okay to have Claude Code add CTAs to all articles at once? A. All at once is dangerous. Decide the article’s intent label yourself, one article at a time, then hand the copy generation and the check to Claude. Hand over the intent judgment too and it sometimes reads too far into the context and adds an off-target exit. Try it on a few articles first, then widen.
Q. I have no way to measure clicks. How do I start?
A. Don’t aim for perfect measurement at first. Just adding a marker parameter to the link (e.g. ?from=intro-article) tells you which article a click came from. You can introduce the basics of analytics with the same thinking covered in getting started with Claude Code.
Q. Can I leave the exits on low-traffic articles for later? A. Yes. Start with your top 10 articles by pageviews. Funnel improvements pay off in proportion to traffic, so fixing low-traffic articles is hard to see results from. Tidy up the entrance on your breadwinners first.
What I confirmed by actually trying it
I applied this routing table to all 23 articles on my blog, and the thing that worked best was the “exit-counting gatekeeper script.” When I ran it, a surprising 8 articles still had two or more exits left, and 3 articles had zero exits. I thought I’d narrowed each to one, but old template links had been left behind, never deleted.
For the work of relabeling intent, I didn’t dump it on Claude Code. I decided each article myself, one at a time: “this one’s for beginners,” “this one’s for people stuck on permissions.” About 30 minutes for 23 articles. After that I let Claude handle only the copy drafting and the final count check, and within half a day every article’s exit was down to one.
A month later, the numbers I confirmed were that the beginner article’s PDF downloads went from 4 to 31, and that overall pageviews barely changed. I hadn’t increased traffic. I’d just stopped losing the readers who were already coming. Fixing the exit before adding more articles is faster, and that was the point I was most convinced of this time.
If you want to get the article itself in shape before the funnel, I recommend starting with getting started with Claude Code. If you’re at a company blog or owned media and want to design the revenue funnel as a team, I help build it together in a one-on-one training and consultation.
Free PDF: Claude Code Cheatsheet
Enter your email and download the one-page Claude Code cheatsheet for commands, review habits, and safe workflows.
We handle your data with care and never send spam.
Level up your Claude Code workflow
Start with the free PDF, use Gumroad guides when you need repeatable workflows, and book consultation when rollout or revenue paths need human judgment.
About the Author
Masa
Engineer focused on practical Claude Code workflows. Runs claudecode-lab.com, a 10-language technical media site.
Related Posts
The Agency Permission Checklist Before Claude Code Edits a Client Site
A client-work permission checklist for safe AI-assisted edits on landing pages and websites.
Turn SaaS Support Bug Reports Into Repro Steps With Claude Code
A support-team workflow for converting vague tickets into safe, reproducible bug reports.
Turn Stale Obsidian Notes Into a Claude Code Brief in 10 Minutes
Obsidian notes that turn to mush when pasted? Sort them into facts, decisions, and unknowns so Claude Code can act on them right away.
Related Products
50 Battle-Tested Claude Code Prompt Templates
Copy, paste, ship. 50 production-ready prompts.
Use proven prompts for code review, refactoring, testing, documentation, debugging, architecture, and incident response.
The Complete Claude Code Setup & Configuration Guide
From install to team-ready workflow.
A practical guide to installation, CLAUDE.md, hooks, MCP servers, permissions, IDE setup, and CI/CD workflows.