Writing
From SEO and AdSense to AI Search: What Digital Publishing Taught Me
There was a time when useful content, a good search ranking and a display ad could make real money. I ran the technology for a publishing business through that era and into AI search. Here is how the business worked, what the engineering had to carry, and what changed.
By Ka Lun Chan · Learning and tools · Leadership / Learning / AI
When content could make a lot of money
I came to digital publishing as a CTO who had already built and sold a company, and it still taught me a different business. As CTO of a media publishing platform, a portfolio of titles competing for audience against much larger companies, I owned the technology and worked with the CEO on business and operations across the partners in our affiliated network. In telecom, revenue arrived one call at a time and the customer paid us directly. In publishing, the reader paid nothing, the advertiser paid for attention, and the engineering had to serve a cost of production, a distribution strategy, an audience, and a way of turning that attention into money, all at once.
The model of that era was simple to state. Create useful content, rank in search, attract visitors, show them advertising, earn. Some publishers ran thousands of pages aimed at specific topics and queries, and a good article could keep bringing readers for years. Evergreen content was an asset that paid out monthly. Search engines were the largest traffic source most publishers had, and the traffic was free at the margin: you paid to produce the article once and nothing per visitor afterwards.
It was never free money, whatever it looked like from outside. Ranking was not guaranteed, and a competitor with better content or better technical hygiene could take a position you had held for a year. Production had real costs: writers, editors, photography, a CMS that worked, hosting that held up on a good day. And not all traffic was worth the same. A reader researching insurance, a mortgage or business software was worth far more to advertisers than a reader passing through an entertainment piece, so category, geography, advertiser demand and the reader’s intent all set the revenue per visitor. Two sites with the same traffic could have very different businesses.
- Content creation to SEO
- Content creation to SMO
- Content creation to AEO / GEO
- SEO to Website visit
- SMO to Website visit
- AEO / GEO to Website visit
- AEO / GEO to Answer without a visit
- Website visit to Display ads
- Website visit to Affiliate
- Website visit to Direct
- Answer without a visit to Direct
- Display ads to Profit
- Affiliate to Profit
- Direct to Profit
That diagram is the whole business on one line, and I will spend the rest of this post on its pieces. One edge deserves attention before we start: answer engines and AI assistants can now serve your expertise to someone who never visits, which is why the Audience column has two boxes. The old model only had one.
How AdSense actually makes money
Google AdSense pays a publisher a share of what advertisers pay to show ads on the publisher’s pages. The publisher builds a site with original content, applies, is reviewed for eligibility and policy, adds Google’s ad code once approved, and ads are served to eligible visitors. Since early 2024 AdSense pays per impression, the display-advertising norm, rather than per click, and the publisher keeps about 68% of what the advertiser pays overall, stated as 80% of the sell-side revenue.
The vocabulary confuses people because half of it describes what advertisers pay and half describes what publishers earn.
| Term | Means | What it tells a publisher |
|---|---|---|
| CPC | Cost per click | What an advertiser pays when someone clicks. Mostly an advertiser-side number now. |
| CPM | Cost per thousand impressions | What an advertiser pays per thousand ad views. The buy side of display. |
| Page RPM | Revenue per thousand page views | Estimated earnings ÷ page views × 1,000. The publisher number that matters most. |
| Impression RPM | Revenue per thousand ad impressions | Same idea per ad unit shown, so it moves with how many units a page carries. |
| CTR | Click-through rate | Clicks ÷ impressions. Still reported; no longer what you are paid on. |
| Viewability | Share of impressions actually seen | An ad below the fold that nobody scrolls to is an impression advertisers pay less for. |
| Fill rate | Ad requests that returned an ad | Unfilled slots earn nothing and still cost the page load. |
Clicks no longer determine earnings directly. An ad that is shown and seen earns; an ad that is clicked earns the advertiser a visit. What a publisher can control is page RPM, and it moves with audience quality, geography, advertiser demand in the category, how much of the page a reader actually sees, and how cleanly the ads are implemented.
A hypothetical example makes the point about volume. A site with 100,000 monthly page views at a page RPM of $5 earns about $500 a month: 100,000 divided by 1,000, times five. The same site at a page RPM of $15 earns $1,500 from the same traffic. Doubling traffic in a low-value category is often harder, and less profitable, than improving the value of the traffic you already have. That is also why a publisher cannot read its own earnings from a traffic chart.
Implementing it is mostly not technical. Build a site with original, useful content and clear navigation. Add a privacy policy and a way to contact you. Make it work on a phone. Check the technical SEO basics below. Apply, and once approved add the verification or ad code, configure where ads appear, and put a consent flow in front of them where consent rules apply, which for visitors in the EEA and UK means a Google-certified consent management platform. Then monitor earnings and policy compliance, because approval can be withdrawn.
The technical part is small and easy to get wrong. On a React or Astro site, load the AdSense script once, asynchronously, from the document head, and render each ad unit as a component that reserves its own space so the page does not jump when the ad arrives. Layout shift is a Core Web Vitals metric and an ad that pushes the article down as it loads is the most common cause of it on publisher sites.
// index.html, once:
// <script async crossorigin="anonymous"
// src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-XXXX">
// </script>
import { useEffect, useRef } from 'react';
export function AdUnit({ slot }) {
const ref = useRef(null);
useEffect(() => {
const el = ref.current;
if (!el || el.dataset.loaded) return;
try {
(window.adsbygoogle = window.adsbygoogle || []).push({});
el.dataset.loaded = '1';
} catch (e) {
// script blocked or not loaded yet; the slot stays empty
}
}, []);
return (
<ins
ref={ref}
className="adsbygoogle"
style={{ display: 'block', minHeight: 280 }}
data-ad-client="ca-pub-XXXX"
data-ad-slot={slot}
data-ad-format="auto"
data-full-width-responsive="true"
/>
);
}Push once per unit, never on every render. Reserve the height. Keep ad units away from navigation and buttons so nobody clicks one by accident, label nothing as “click here”, and do not bury the article under units: accidental clicks, misleading placement and excessive advertising are the policy violations that get accounts limited, and they also make pages people leave. The current implementation rules and the metric definitions are in Google’s AdSense Help, which changes often enough that I would read it rather than any blog post, including this one.
Affiliate marketing: paid for an action
Affiliate marketing pays a publisher when a reader completes a defined action after following the publisher’s link: a purchase, a qualified lead, a subscription, a registration. The chain is advertiser, affiliate network, publisher, visitor, conversion, with the network tracking the link and paying the commission, although some programs run directly between an advertiser and a publisher with no network in between.
The compensation models follow the action. Cost per sale pays a share of a purchase. Cost per lead pays for a form that an advertiser accepts as qualified. Cost per acquisition is the general term for either. Revenue share pays a percentage of what the customer spends, sometimes recurring for as long as they stay a customer, which is why software subscriptions are the affiliate category publishers like best.
The tracking is where the engineering lives. A link carries an identifier for the publisher and often for the specific page. A cookie, or a server-side record, remembers who sent the visitor for an attribution window of days or weeks. When the advertiser records a conversion, the network matches it to the identifier, holds it for validation, and reverses it if the order is refunded or the lead is rejected. Attribution is imperfect by design now: browsers restrict third-party cookies and shorten first-party ones, privacy tools strip identifiers, and two networks will count the same month differently. A publisher that reconciles its own click logs against the network’s reports learns a lot about which half of its traffic is being credited.
Another hypothetical. A product comparison page draws 10,000 visitors. Five percent click an affiliate link, 500 clicks. Three percent of those clicks convert, 15 sales. At an average commission of $40 that page earned $600. Change the conversion rate to one percent and it earned $200 from the same traffic; change the commission to $120 and it earned $1,800. Affiliate revenue is a product of two rates and a price, and the page’s job is to move the rates by being genuinely useful to someone deciding.
Implementing it: pick products your readers actually consider, research programs that carry them, apply to the network or the direct program, and get approved tracking links. Then publish comparisons and tutorials that would be worth reading with the links removed. Disclose clearly. Track outbound clicks yourself, measure conversions where the network reports them, watch commissions and reversals, and improve the pages on what readers needed rather than what paid. On disclosure, the FTC’s Endorsement Guides, updated in 2023, require it to be hard to miss and easy to understand: “paid link” next to the link is adequate, “affiliate link” on its own is not, and a disclosure hidden behind a “more” link does not count. Editorial independence is the whole asset. The moment readers suspect the recommendation is for sale, the rates in that example fall and do not come back.
SEO: the foundation of organic traffic
Search engine optimization is the work of helping search engines discover, understand and evaluate your pages, so that a search with a given intent finds the page that serves it. Publishers built whole content strategies on search demand: research what people ask, write the page that answers it better than the current results, link it into the site so it is found and understood, and earn the position. A well-ranked article could carry an audience for years without paying per visitor, and ranking was never guaranteed. I wrote the long version, from the same CTO seat, in what publishing taught me about SEO, AEO and GEO, so here I will keep to what the engineering team owned.
Technical SEO is a checklist, and the checklist is most of the job. Semantic HTML with one heading hierarchy per page. A title and meta description that say what the page is for. A canonical URL on every page, so syndicated and parameterized copies do not compete with the original. Open Graph metadata, which social platforms read. An XML sitemap that lists what you want indexed and nothing else, and a robots file that does not accidentally block it. JSON-LD structured data describing the article, its author and the organization. Server-side rendering or static generation, because a page whose content only exists after JavaScript runs is a page some crawlers see empty, and the ones that render it do so later and less often. Correct status codes: a missing page returns 404, a moved page redirects once, and nothing returns 200 with an error message in it. On the publishing platform, re-platforming from WordPress to Rails was partly about getting every one of these under engineering control, and organic traffic grew by half.
Google Search Console is where you find out whether any of it worked: which queries show your pages, where they rank, what is indexed and what was excluded and why, and which Core Web Vitals are failing on which templates. It is free, it is the search engine’s own view, and a publisher that does not read it weekly is guessing.
SMO: distribution you don’t own
Social platforms changed distribution because they did not wait for someone to search. Facebook, Instagram, LinkedIn, Reddit, YouTube and smaller communities could put an article in front of people who had not asked for it, and for a while that was a traffic source as large as search for some titles. Social media optimization is the work of making content discoverable, engaging and shareable inside those platforms, and it differs from SEO in one important way: search captures demand that already exists, social has to create interest where there was none.
The implementation starts with the same metadata. Open Graph tags and a preview image sized for each platform decide whether a shared link looks like something or like a grey box. After that it is editorial: a summary written for the platform rather than pasted from the article, participation in the communities where readers actually are, and the restraint to post something because it is useful there rather than because it is new. Posting the same link to every platform at once produces a feed nobody follows. The same article can become a chart, a thread, a short video and a discussion prompt without becoming spam, if each format serves the people on that platform. Measure it with UTM parameters on the links and the platform’s own analytics, and compare referral traffic to what it costs to produce. On the publishing platform, treating social distribution as a product feature rather than an editorial afterthought grew social traffic and social engagement by half each.
AEO and GEO: visibility without the visit
Answer engine optimization (AEO) is the practice of making information clear, accurate and easy to extract into a direct answer, for search features, voice assistants and AI tools that answer a question rather than list links. Generative engine optimization (GEO) is the practice of making your expertise discoverable, accurately represented and cited by AI systems that synthesize answers from many sources. Both are industry terms for ways of working, not ranking systems with guarantees.
AEO in practice is information architecture. Take an article about cloud infrastructure costs. Instead of a broad introduction, give it a section headed with the question people ask, “What is cloud cost optimization?”, followed by a two-sentence answer that stands on its own, then the examples, then the deeper technical material. Add a short FAQ for the questions readers actually ask, in semantic HTML, with sources for any fact that could be checked. That structure serves a person skimming on a phone and a machine extracting an answer equally well, and it is how the posts on this site are built, including this one. FAQ markup does not create rich results or AI citations by itself, whatever anyone selling it says.
GEO adds the question of whether an AI system will trust and credit you. The practices that seem to matter are the ones that would have mattered to a careful human editor: original, experience-based content that says something the generic articles cannot; a clearly identified author and organization, consistently described everywhere; descriptive headings and precise definitions; concrete examples and evidence; links to authoritative sources; information kept current; and pages that relevant crawlers can actually read. Measure AI referral traffic where your analytics can see it, and evaluate visibility knowing that many mentions produce no visit at all. Original experience is the one thing a generated article cannot copy, and it is why a page written by someone who did the work still has a place in a world that can generate ten thousand pages about the same topic by lunch.
How SEO, SMO, AEO and GEO work together
| Strategy | Primary goal | Typical outcome |
|---|---|---|
| SEO | Organic search visibility | Search traffic to your pages |
| SMO | Social visibility and engagement | Reach, shares and referral traffic |
| AEO | Clear, extractable answers | Answer visibility, with or without a click |
| GEO | Being cited by generative AI systems | Mentions, citations and some referrals |
They overlap more than the acronyms suggest, and the mistake is to run them as four disconnected content programs with four owners and four backlogs. One strong, original article, with a clear structure, credible information, correct technical implementation and a thoughtful distribution plan, supports all four. The structure that helps an answer engine extract a definition helps a reader skim. The metadata that makes a search result accurate makes a social preview accurate. The author credibility that earns a citation earns a share. Build the article once, properly, and distribute it on purpose.
The publishing economics have changed
The model I described at the start still exists and it has become a much harder business. Competition for every query is higher, and a growing share of it is generated content. Search algorithms change, and a publisher can lose a third of its traffic in a week without changing a word. AI-generated summaries at the top of results answer the question before the links, and zero-click searches, where the person gets what they need without visiting anyone, are a large and growing share. Advertising rates move with the economy. Privacy restrictions have made both ad targeting and affiliate attribution less precise, so the same audience earns less and gets credited less. Production costs did not fall. Infrastructure costs are still there every month. And the platforms a publisher depends on for distribution are owned by companies with their own priorities, which is the polite way to say the rules change without notice.
The lesson I took from watching that happen is that relying entirely on organic search is a business risk, and a publisher that has never lost traffic has simply not been publishing long enough. The response is diversification, of revenue more than of traffic. Display advertising, affiliate partnerships, direct sponsorships, subscriptions, digital products, software tools, and consulting or services each depend on a different thing going right, and a business with three of them survives a bad quarter in one. The deeper shift is from maximizing traffic to building something people come back to on purpose: an audience you can reach without asking a platform’s permission. A newsletter list, a community, a product people use weekly. Traffic is rented. An audience is owned.
The engineering behind a profitable platform
Running a publishing business is far more than writing articles, and most of the rest landed on the engineering team I led. Content management: WordPress at first, then a Rails platform we built because the portfolio needed shared infrastructure rather than per-title one-offs, with editorial workflows, permissions, publishing automation and the migrations that come with moving a lot of content. Performance: rendering, caching, CDN delivery, image optimization, JavaScript weight and Core Web Vitals, each of which is both a ranking input and a reader-retention input. Advertising technology: script integration, placements, revenue tracking, consent management, and watching ad performance per template. Analytics: Google Analytics and Search Console, traffic acquisition by channel, engagement, conversion tracking and revenue attribution, which is the only way to know what a visitor from each source was worth. And infrastructure economics: hosting, bandwidth, CDN, database capacity, caching and scaling, which I have written about in capacity planning from carrier networks to the cloud.
A website that earns advertising revenue is not necessarily profitable. The simplified test is operating contribution: advertising revenue plus affiliate revenue plus other revenue, minus direct operating costs, where direct costs include hosting, content production, software services and whatever else is attributable to running the site. A page that earns $5 per thousand views and costs $6 per thousand to serve and produce is a page losing money at any scale.
That is why infrastructure optimization and performance are revenue work as well as cost work. On the publishing platform, the move to AWS and the improvements that came with it contributed to about 30% lower AWS costs, which is the cost side of the formula. The faster pages that came with the same work improved rankings, retention and ad viewability, which is the revenue side. The same engineering moved both terms. I have found that to be true of most infrastructure work that is done carefully, and it is the reason I ask what a technical decision costs to run before I ask whether it is elegant, an argument I make in the hidden cost of software architecture.
What I’m applying today
I run four sites now, and each one has a different answer to the question of what content is for, which is the question publishing taught me to ask first.
Useful Little Tools is the closest to a classic publisher: practical calculators with supporting educational content, where I am exploring organic search, engagement, advertising monetization and possibly affiliate partnerships in the way this post describes. It is an experiment in whether the model still works for a small, useful site, and I am applying the lessons rather than reporting results. Yippify publishes educational content and technical insight to reach potential software development clients, so the objective is lead generation and trust, and a display ad on a page meant to win a client would cost more in credibility than it earned. FedPath publishes GovCon education to help small businesses understand federal contracting, where content exists for product discovery, trust and eventually customers. And this site publishes original engineering experience, architecture and leadership lessons for professional credibility and discoverability, with no monetization at all. Four sites, four purposes, four different content and distribution strategies, and one shared technical foundation for metadata, structured data, performance and answers that stand on their own.
What I learned
Search engines changed how people found information. Social media changed how it spread. Advertising networks changed how publishers earned, and affiliate programs connected content to commerce. Now AI is changing how people find and consume information, sometimes without visiting anyone. Through all of it, one principle held: content creates business value only when it reaches the right audience and serves a real purpose for them. Everything else in this post is mechanics for making that happen and getting paid for it.
The lesson I keep is that building a fast, well-architected site is only part of the job, even for a CTO who has built one before. You also need to understand why visitors arrive, what they are looking for, how they behave once they are there, and how the business turns that into revenue that covers its costs. That combination, technology, content, distribution, user experience and economics, is what made digital publishing interesting to me, and it is the same combination I look for when I evaluate any product today. After watching the industry change this much, I am still learning it, and the learning is the part I would not give up.
Short answers
How does Google AdSense make money for a publisher?
A publisher builds a site with original content, applies, is reviewed, and adds Google’s ad code once approved. Ads are served to eligible visitors, advertisers pay through the ad ecosystem, and the publisher keeps a share, about 68% overall. AdSense pays per impression, so earnings depend on page RPM: estimated earnings divided by page views, times a thousand.
What is the difference between CPM, CPC and RPM?
CPM and CPC describe what advertisers pay, per thousand impressions or per click. RPM describes what a publisher earns per thousand: Page RPM per thousand page views, impression RPM per thousand ad impressions. A publisher manages RPM; the advertiser-side numbers are inputs to it.
How does affiliate marketing differ from display advertising?
Display advertising pays for impressions. Affiliate marketing pays for a defined action after a reader follows your link: a sale, a qualified lead, a subscription. A tracking identifier and a cookie or server-side record attribute the conversion within a window, the network validates it, and reversals follow refunds. Disclosures must be clear: the FTC accepts “paid link”; “affiliate link” alone is not enough.
How do SEO, SMO, AEO and GEO differ?
SEO earns organic search visibility and traffic. SMO earns social reach and referral traffic. AEO makes answers clear and extractable for search features and assistants, sometimes without a click. GEO aims at being cited accurately by generative AI systems. One well-structured, original, credible article supports all four.
Why is a site with advertising revenue not necessarily profitable?
Because operating contribution is advertising plus affiliate plus other revenue minus direct operating costs: hosting, content production, software services and other attributable expenses. A page that earns less per thousand views than it costs to produce and serve loses money at any scale, which is why performance and infrastructure work affect both sides of the formula.
Building the technology is half the job
Publishing taught me that a website with good architecture, fast APIs and clean code is not yet a business.
Understanding how the technology makes money, and what it costs to run, is what turns a website into a business.
That is the judgment I bring to engineering leadership: the audience, the distribution, the revenue model and the operating costs are part of the system, and the engineering has to serve all of them.