Let me tell you about the dumbest content habit I see at independent hotels, and I say that with love because I did it too for years.
Every spring, somebody on the team writes a blog post called something like “Where To Stay For The 2026 City Marathon.” It’s a decent post. It ranks for a few weeks. Race weekend comes, the rooms fill (or don’t), and then that post sits there rotting with “2026” baked into the URL and the title. Next year, somebody writes a brand new one: “Where To Stay For The 2027 City Marathon.” New URL. New post. Zero memory of the last one.
You just did all that work again from scratch. And you’ll do it again in 2028.
That’s the trap. Dated event content resets to zero every single year. Meanwhile the OTAs have one permanent landing page for that race that’s been accumulating links and authority since 2014. Guess who wins the search result when a runner Googles city marathon weekend hotel in January.
I want to show you the engine I use instead. It’s boring, it’s repeatable, and it compounds. I call it the annual-event anchor page.
The core idea: one URL, forever
Here’s the whole concept in one sentence. For every recurring local event that drives travel to your area, you build exactly one permanent page, and you update that same page every year instead of publishing a new one.
That’s it. The magic is entirely in the not creating a new URL part.
When you keep the same URL year after year:
- Every backlink anyone ever earned to that page keeps pointing at a live, relevant asset.
- Every share, every “we stayed here for the race” mention, every local blogger link stacks up in one place.
- Search engines watch that URL get maintained year after year and learn it’s the canonical answer.
- Your race-weekend booking history, your reviews, your internal links all reinforce one address.
Authority is cumulative. The whole reason OTAs crush independent hotels in search isn’t that they’re smarter writers. It’s that they’ve been pointing all their authority at the same stable pages for a decade while you’ve been starting over every January. I broke down more of that dynamic in how OTAs steal your search traffic, and the anchor-page habit is one of the cleanest counters I know.
A dated post is a sandcastle you rebuild every year before the tide. An anchor page is a seawall you add one course of bricks to. Same effort per year, wildly different result after five.
What counts as an “anchorable” event
Not everything deserves a permanent page. The test is simple: does it repeat on a roughly annual cadence, and do people book rooms around it? If yes, it’s a candidate.
For a typical independent or boutique hotel, the usual suspects are:
- Marathons, half-marathons, and big races. Runners book months out and travel in packs.
- Music and food festivals. Multi-day, room-hungry, and intensely searched.
- Conventions and trade shows. B2B travelers who’d happily skip the OTA if they found you first.
- Fairs, regattas, rodeos, regional sporting events. Whatever your region is weirdly famous for.
- College stuff. Graduation, homecoming, parents’ weekend, big rivalry games.
The naming convention is where most people sabotage themselves. Do not put a year in the URL. Your page should live at something like /city-marathon-hotel or /stay-for-the-jazz-festival, never /2026-city-marathon-hotel. The year lives in the content, which you’ll swap out. The address never moves.
The anatomy of an anchor page that actually ranks
A good anchor page does two jobs at once: it ranks in classic search, and it gives AI assistants a clean, citable source. Those goals overlap more than people think. Here’s what goes on the page.
A title that survives the years. “Where To Stay For The City Marathon: A Local Hotel’s Guide.” No year. It reads true every year.
The single most important logistics block, right up top. When is the event (this year’s dates, clearly labeled as the current edition)? Where’s the start line and finish line? What’s the road-closure situation? How far is your hotel from the action, in walking minutes and driving minutes? This is the stuff people actually search for, and it’s exactly what AI assistants want to extract and cite.
An honest “why stay here for this specific event” section. Not generic hotel marketing. Race-specific. Early breakfast for runners. Late checkout so they can shower after finishing. Walking distance to the start. Foam roller in the lobby, whatever. Specificity is what makes you the obvious answer instead of a commodity room.
A small, scannable facts table. Something like this, which both humans and machines love:
| What runners ask | Your answer |
|---|---|
| Distance to start line | 0.6 miles / 12 min walk |
| Early breakfast available? | Yes, from 5:00 AM race morning |
| Late checkout on race day? | Yes, until 2:00 PM on request |
| Parking during road closures | On-site, accessible via [side street] |
| Group/team room blocks | Yes, ask us directly |
A clear direct-booking path. The entire point is to win this booking yourself instead of paying a commission. With OTA commissions running roughly 15 to 25 percent, a race-weekend booking captured direct is meaningful money kept in the building. If you’ve never run that math, the book-direct commission math post lays it out, and it’s sobering in a good way.
The hotelier who owns the definitive “where to stay for the marathon” page in their town isn’t competing on price with the OTA listing. They’re the trusted local who answered the actual question. That’s a completely different sale.
The yearly refresh ritual (this is the engine part)
Here’s where most teams fall off. Building the page once is easy. The compounding only happens if you actually run the refresh every cycle. So make it a ritual with a checklist, not a vibe.
About 8 to 10 weeks before each year’s event, you sit down and do this, on the same URL:
- Update the dates and “current edition” labeling. New year’s date front and center. Phrases like “the [current year] race” instead of a hardcoded number wherever you can.
- Refresh the logistics. Did the course change? New road closures? New start time? Fix it.
- Add one genuinely new thing. A short recap of last year (great for proving the page is alive), a new nearby restaurant for carb-loading, an updated parking note. AI systems and search engines both reward pages that demonstrably get maintained.
- Re-check your direct-booking link and any room-block offer. Make sure the path to book actually works and points at your booking engine, not a stale promo.
- Re-share it. Push it to your email list and socials as “our updated guide.” You’re earning fresh links and signals against the same accumulating URL.
That’s a 60-to-90-minute job once a year per event. Compare that to writing a brand new 1,200-word post from scratch annually and throwing away all the equity. Same effort, completely different trajectory.
The refresh is the moat. Anyone can copy your page once. Almost nobody has the discipline to maintain the same URL for five straight years, which is exactly why doing so wins.
Why this is secretly an AEO and GEO play
There’s a reason I push this hard on the AI-visibility side of the house. When someone asks ChatGPT or another assistant “where should I stay for the city marathon,” the assistant wants a source that is specific, stable, and clearly structured around that exact question. A throwaway dated post that changes URLs every year is a terrible citation source. A maintained anchor page is a great one.
Answer engine optimization is a genuinely large and growing space, the term aeo alone pulls about 27,100 US searches a month, with generative engine optimization around 5,400. The hotels that get named in AI answers won’t be the ones with the most blog posts. They’ll be the ones with the cleanest, most maintained pages answering real travel questions. I dug into this specifically for hotels in is your hotel invisible to ChatGPT, and event anchor pages are some of the easiest wins to get cited for, because the question is so concrete.
This also stacks neatly with your local presence. A strong Google Business Profile plus an anchor page that earns local links is a one-two punch for both map results and AI answers. None of this is about gaming anything. It’s about being the most genuinely useful, most consistently maintained answer to a question your guests ask every single year.
A realistic picture of how it plays out
Let me paint an illustrative scenario, not a promise, just to show the shape of it. Say you build your marathon anchor page this year. Year one, it ranks modestly, maybe page two, while the OTA page sits comfortably on top. You run the refresh. Year two, you’ve earned a handful of local links, a running club mentions it, and you’ve climbed. Year three, you’re competing for the top organic spots and getting pulled into a few AI answers. Year four, you’re often the local answer people trust.
I can’t promise you any specific ranking or timeline, nobody honest can, and you’ll never escape the OTAs entirely. The realistic and very achievable goal is a healthier mix: more of your event-weekend rooms booked direct, less dependence on paying commission for guests who would happily have booked with you if they’d just found you first. For a high-demand weekend, shifting even a chunk of bookings to direct is real margin.
The engine scales, too. Once the marathon page works, you build one for the jazz festival, one for the convention, one for the county fair. Five or six anchor pages, each compounding, each maintained once a year. That’s a content moat an OTA’s generic city page can’t easily match, because you’re the actual local and you actually know the early-breakfast detail that wins the booking.
If you want help picking which events to anchor first and building pages that get cited by both Google and AI assistants, that’s squarely the work I do on the AI visibility, AEO and GEO side and our content and reputation engine. You can see how we scope it on the pricing page, or just tell me about your hotel and your local events and I’ll tell you straight which ones are worth anchoring and which aren’t. Build the seawall. Add a course of bricks every year. Let it compound.