300Hours Content strategy and handover Prepared by Dino · August 2026

Writing for a web where the reader is often a machine

Where the site stands with AI assistants right now, what they actually come here for, how I would approach every new article from here, and what has been built underneath it all.

Now that the technical work is finished, this is the part that decides how far it carries. I pulled two weeks of raw server logs to see who is really reading the site, not estimates from a tool but every request the server answered. What came back changed what I would recommend, so I want to show you the evidence before the advice.

Where you standThe AI assistants are already here, in volume

This is every AI related crawler that touched the site over the past two weeks, alongside the traditional search engines for scale.

WhoWhat it doesRequestsAccess
BingbotBing search and Copilot120,462Allowed
GooglebotGoogle Search and AI Overviews61,559Allowed
ChatGPT-UserChatGPT fetching a page to answer someone33,541Allowed
ApplebotSiri and Spotlight25,958Allowed
OAI-SearchBotChatGPT's own search index5,004Allowed
DuckAssistBotDuckDuckGo's AI answers4,464Allowed
Claude-SearchBotClaude's search index3,691Allowed
Claude-UserClaude fetching a page to answer someone214Allowed
PerplexityBotPerplexity's index212Allowed
ClaudeBotAnthropic model training580Blocked
GPTBotOpenAI model training168Blocked
Google-ExtendedGemini training4Blocked
CCBot, Bytespider, Amazonbot, MetaBulk scrapers and training168Blocked

The important thing here is the split, and it is working the way we want it to. Every crawler that can cite you is allowed in. Every crawler that only wants to train on you is turned away. ChatGPT, Claude, Perplexity, Copilot, DuckDuckGo and Google can all read and quote the site. What they cannot do is absorb it wholesale into a model that then never sends anyone back.

That distinction is the whole game, and it is worth being clear about because the two are easily confused. Blocking GPTBot does not remove you from ChatGPT. ChatGPT-User and OAI-SearchBot are the ones that matter there, and between them they made over 38,000 requests. The same is true for Claude: the training crawler is blocked, and Claude's search index still pulled 3,691 pages.

The demand signalWhat AI assistants actually come here for

This is the part I found genuinely useful. Because ChatGPT fetches a page live when a user asks something, the pages it requests are a direct readout of what people are asking it about your subject. Here are the most fetched:

CFA exam dates
141
CFA deferral and reschedule
137
CFA curriculum changes 2027
130
CFA exam cost
128
CFA refund and withdrawal policy
120
CFA curriculum changes 2026
109
CFA results date
103
Hedge fund career path
94
CPA exam dates and score release
83
CFA pass rates
79

There is a clear pattern in that list, and it is not the one I expected. Almost none of it is study advice or motivation. It is dated, factual, administrative information: when is the exam, what does it cost, can I defer, what changed this year, when do results land. The second cluster, further down, is career paths.

In other words, AI assistants are treating 300Hours as a reference source for facts that change every year. That is a strong position to hold, because those facts go stale annually and whoever maintains them most reliably becomes the default answer. It is fragile for exactly the same reason: the moment those pages drift out of date, the citation moves to whoever updated theirs.

The honest caveat

Being read is not the same as being visited. Over the same period, only around 50 people arrived here by clicking a link inside ChatGPT, Claude, Perplexity or Gemini, against roughly 12,000 from Google. The assistants are reading thousands of pages and answering in place.

I do not think that makes it worthless. Being named as the source in an answer builds the brand, and these tools increasingly show citations that people do click. But I would not plan on AI referral traffic replacing search traffic any time soon. Treat it as brand presence that is cheap to win because you are already most of the way there, not as a traffic channel to chase.

The current libraryWhat the existing 312 articles look like

I ran the whole published library through a check to see how well it already fits what these systems reward. Most of it is in good shape:

Two groups need attention, and I have listed every article in both below so they can be worked through directly.

Fix list one48 articles that bury the answer

These run more than 250 words before their first subheading. If someone asks what the CFA exam costs and the page opens with three paragraphs on the value of the charter, both the reader and the assistant have to dig for it. This is the highest value fix on the site and the cheapest.

Worth knowing before you start

30 of these 48 are CPA state requirement guides, which all share one template and one opening. That is not 30 problems, it is one template with 30 copies. Fixing the intro pattern once and applying it across the series clears nearly two thirds of this list in a single pass.

Read this before clicking that button

That button opens 48 separate browser tabs, one editor screen per article. It will slow the browser down noticeably and on some machines it will struggle. Your browser will almost certainly ask permission to open multiple tabs the first time, and you need to allow it or only the first tab appears.

Unless you are genuinely about to edit all of them in one sitting, use the individual Edit links in the table instead. You need to be logged in to WordPress for any of them to open properly.

Fix list two7 articles with no subheadings at all

These have no subheadings anywhere in the body. To a machine they are an undifferentiated wall of text, so nothing specific can be pulled from them, and to a reader on a phone they are equally hard going. All seven are provider reviews, so again there is a shared template underneath rather than seven unrelated problems.

A third item, worth noting but not worth a list: only 62 of 312 articles carry FAQ markup. That is the structured summary that lets a machine lift a clean question and answer pair without having to interpret your prose. On the fact heavy pages above it is close to free visibility.

Going forwardHow I would approach every new article

This is the part I would turn into a house rule. None of it is exotic and none of it means writing for machines at the expense of people. What makes an article easy for an assistant to quote is also what makes it easy for a stressed candidate to skim.

  1. One article, one question

    Resist the omnibus guide. A page that answers one question precisely gets cited. A page that answers nine gets skipped for all nine. If a piece needs to cover several things, they are several articles that link to each other.

  2. Answer in the first forty words

    Before context, before caveats, before why it matters. State the answer, then elaborate. The fix list above says this is where you are most often losing.

    Not this: "Deciding to defer your CFA exam is never easy, and there are many factors..."
    This: "You can defer your CFA exam once, to the next available window, for a $250 fee. Requests must be made before the registration deadline."
  3. Date every fact that can expire

    Write "as of August 2026" into the sentence itself, not just on the page. An assistant reading two conflicting sources favours the one that says when it was true. It also makes your annual refresh trivial, because you can search for the year.

  4. Put the numbers in a table

    Fees, dates, pass rates, weightings. Prose describing five numbers is far harder to quote accurately than five rows. You already do this on most pages, so make it the default.

  5. Write subheadings as the question, in the reader's words

    "How much does the CFA exam cost in 2026?" rather than "Costs". Use the phrasing candidates actually type, not the tidy editorial version.

  6. Make every section stand alone

    Assume each section will be read in isolation, because that is precisely what happens. The assistant takes the relevant chunk, not the article. Avoid "as mentioned above" and pronouns that reach back to an earlier section.

  7. Say who says so, and link to them

    Attribute to CFA Institute, GARP or AICPA by name and link the source page. It costs a click you might have kept and it buys the thing that makes an assistant willing to repeat you.

  8. Add the FAQ block

    Three to five real questions at the end of the fact heavy pieces. It takes minutes and it is the most directly machine readable thing on the page.

  9. Publish something no one else has

    This is the one that compounds. Your own candidate surveys, salary figures and study hour data are the reason an assistant names a source at all. Aggregated advice gets absorbed anonymously. Proprietary data gets attributed. If there is budget for one new content initiative a year, I would spend it here.

Where I would focusThe gaps worth filling

Under the bonnetWhat has been built

Quite a lot has changed underneath the site over this engagement. This is what is now in place and what each piece actually does, so you know what you are working with.

The advertising system

Sponsor banners used to be written directly into the theme and into widgets, which meant every change to an advert was a developer job. They are now managed from a single Global Ads screen in the WordPress back end, and the team can run it without me.

The video player

There is now a video that travels down the left hand column with the reader instead of scrolling away at the top of the page.

The automatic left hand navigation

The left column builds itself. Nothing has to be maintained by hand, and it adapts to what kind of page the reader is on.

Cloudflare

Cloudflare was originally put in front of the site for protection and speed, and that remains its main job. It sits between visitors and the server, so it absorbs spam traffic, bot attacks and abusive requests before they ever reach the site, and it serves your images and files from locations near the reader rather than from the single server. A forum the size of yours attracts a constant stream of automated registration and posting attempts, and this is what keeps that away from the server.

On top of that original setup, three things were added:

Search engine groundwork

Still outstandingWhat should be cleaned up next

None of this is urgent and none of it is breaking anything today, but it is all worth doing and it is the kind of thing that only gets more awkward the longer it waits.

ItemDetailPriority
Orphaned user accounts There are 54,897 user accounts on the site, of which 44,519 have no role assigned at all and 51,897 have never posted anything. They are almost entirely automated registrations from before the sign up button was removed: the registration count runs at 15,808 in 2022 and 14,673 in 2024, then collapses to 301 in 2025 and 1 so far in 2026. High
Plugin updates 14 plugins have updates waiting. The block editor plugin, GenerateBlocks, is on 2.1.0 against a current 2.4.0. Two others matter more: Gravity Forms is a full major version behind at 2.9.11 against 3.0.1, and Wordfence, which is your security plugin and the one that most needs to be current, is on 8.1.0 against 8.2.2. High
Unused themes Five WordPress default themes are installed and inactive (Twenty Twenty-One through Twenty Twenty-Five), all with updates pending. Inactive themes still need patching, so they are pure maintenance overhead. Standard practice is to keep one as a fallback and remove the rest. Medium
Forum data The forum still holds 3,696 topics and 21,105 replies, including 563 marked as spam, pending or trashed. If the forum is being retired, this needs a deliberate plan for redirects and archiving rather than a straight deletion. Medium
On removing those 44,519 accounts

This one needs saying clearly, because the obvious approach will not work. Deleting them through the Users screen in WordPress is not enough and should not be attempted.

Every account carries a set of associated records behind it, and the site is currently holding 870,866 of them. Removing accounts through the admin screen is extremely slow at this volume, it will time out long before it finishes, and depending on how it fails it can leave the associated records behind entirely, so the database ends up no smaller while the accounts are gone.

It needs to be done directly against the database, in batches, with a full backup taken first and a check afterwards that no genuine account with real activity has been caught up in it. It is not a difficult job, but it is not a click in the admin either. Happy to handle it.

Living with itWhat to look out for

The site is stable. Everything described here has been tested on the live site and checked in a browser rather than just assumed to work. But a lot changed in a short space of time, and I would rather tell you where the edges are than have you discover them. If you see any of the following, it is very likely one of these causes rather than anything serious:

None of these are likely, and I would expect a quiet few weeks. If anything does look wrong, the most useful thing you can send me is the page address and a screenshot, and I will take a look and get a fix applied.

The bigger pictureThe rebuild proposal

Everything above is about getting the most out of the site as it stands today. Separately, I put together a proposal covering the larger rebuild: the custom theme, reducing the plugin load, the forum question, the advertising system and the reporting dashboard, along with what each phase would involve and what it would cost.

Read the rebuild proposal. It is open for comments, so please add anything you want raised directly against the relevant section rather than collecting it up separately.

In shortThe checklist

If nothing else here survives, this is what I would pin above the desk for every new piece:

Happy to go through any of this properly. I am glad to take the first pass at the 48 articles that bury the answer, since 30 of them share a template and it is largely mechanical, and to handle the account cleanup safely against the database.

Dino