On this page
Long articles lose most readers in the first 30 seconds. Not because the content is bad. Because nobody showed them where to start. The discovery system adds an interactive guided layer above your article content. Readers make choices. The content comes to them.
How it works
Every article can have a companion steps file. If the file exists, Wire renders a discovery layer above the full article. If it does not exist, the page renders normally. No errors, no empty containers, no layout shift.
docs/guides/getting-started/
index.md <- full article (unchanged)
steps.md <- discovery layer (optional)
The full article is always in the DOM. Google indexes everything. The discovery layer is a progressive enhancement. It works without JavaScript.
Writing a steps file
The steps file uses :::hook, :::step, and :::choices blocks:
:::hook
Most websites lose 80% of readers in the first 30 seconds.
Not because the content is bad. Because nobody showed them where to start.
:::
:::step id="start"
You published the article. Traffic arrived. But users left immediately.
Average time on page: 18 seconds. Something is wrong.
:::choices
- My content does not match what they expected -> intent
- My page might be too slow or broken -> technical
:::
:::step id="intent"
Search intent mismatch is the most common reason for high bounce rates.
Users searched for one thing and landed on something slightly different.
:::choices
- How do I check my intent -> intent-check
- I think my intent is right -> technical
:::
Rules for steps
Each step is 50 to 70 words. No more. Each step ends on something slightly unresolved, not a cliffhanger, just not a clean resolution. The next step resolves it.
Each choice reflects a reader situation, not a topic label.
Bad choice: "Keywords or backlinks?" Good choice: "My traffic never grew" vs "My traffic dropped suddenly"
The hook is one to two sentences. It is the only thing visible above the fold before the reader makes their first decision.
Step IDs should match heading anchor IDs in the full article. When the reader clicks "Read the full article on this", the page scrolls to the matching section.
For a complete reference to Wire's content components, see the components reference.
What the reader sees
On arrival: Hook text and two buttons: "Guide me through this" and "Read the full article."
Guide me: Hook fades out, first step card fades in. Progress dots appear.
Choice click: Current step fades out, next step fades in. No page reload, no scroll.
Read full article on this: Discovery layer collapses. Page scrolls to the matching section in the full article with a brief highlight.
Technical details
Wire's build system handles everything automatically:
wire.builddetectssteps.mdnext to eachindex.mdwire.discovery.parse_steps()converts the syntax to JSONwire.discovery.render_discovery_html()generates DOM elements withdata-*attributesdiscovery.jshandles transitions and navigation (loaded via<script defer>)
All step content is in the DOM on page load. Hidden steps use CSS opacity and visibility transitions, revealed by JavaScript adding an .active class. The full article below is never hidden or removed.
Labels (non-English sites)
For non-English sites, Wire requires you to translate the discovery button labels. Add to wire.yml:
extra:
wire:
labels:
discovery_start: "Führe mich durch"
discovery_read: "Ganzen Artikel lesen"
Wire refuses to build non-English sites with discovery steps if these labels are missing. English sites use the defaults automatically.
When to add discovery
Start with pages that have meaningful GSC impressions but low average time on page. These are pages where users arrive and leave too fast. The discovery layer attacks exactly that gap.
Run wire.chief audit to identify underperforming pages, then write steps files for the highest-impression ones first.
Auto-regeneration
When Wire rewrites a page (refine, seo, merge, differentiate, improve), it checks whether the H2 headings changed. If they did and a steps.md already exists, Wire automatically regenerates the steps file using Claude. Pages without an existing steps.md file are not affected. Wire does not create steps.md from scratch during content operations.
This means steps stay in sync with the article. You do not need to manually update step IDs after a rewrite. The regeneration uses the same prompt and validation as the manual discover command.
Pages that Wire has never touched still need a manual first pass:
python -m wire.content steps guides/getting-started
RULE-53: stale step IDs
Wire's build-time linter includes RULE-53, which checks that every discovery step ID matches an H2 anchor in the rendered article. If a step references a section that no longer exists, the build reports it. This catches cases where auto-regeneration was skipped or where steps were written by hand and the article changed.
Generating steps with Claude
You can use Wire's prompt system to draft steps:
python -m wire.content steps guides/getting-started
Total time per article with practice: 15 to 20 minutes.
The Dwell Time Evidence
The discovery system exists because of a specific finding in the 2024 Google API leak. NavBoost (Google's click-based ranking system, confirmed during the DOJ antitrust trial) uses lastLongestClicks as a ranking signal. This measures the maximum time a user spends on a page before returning to search results. Longer engagement sends a stronger positive signal.
The discovery layer targets this signal directly. Instead of presenting a 2,000-word article and hoping the reader scrolls, it breaks the reading experience into decision points. Each decision requires the reader to engage with the content before choosing what to read next. The full article remains in the DOM. Google indexes every word. But the reading experience keeps users engaged longer.
This is not speculation about what Google values. NavBoost has been in production since 2005. Google's VP of Search testified about it under oath. The API leak showed the exact feature names: goodClicks, badClicks, lastLongestClicks. A user who reads for 3 minutes and does not return to search results is a goodClick. A user who bounces in 5 seconds is a badClick.
Seer Interactive's research shows AI Overviews reduce organic CTR by 34-61%. In this environment, the users who do click through to your page are the most valuable signal source. They chose your page over an AI-generated answer. Keeping them engaged, measured in seconds, tracked by NavBoost, directly feeds your ranking for the next user who searches the same query.
The discovery system is a dwell time strategy disguised as a UX feature. The user gets a better reading experience. Google gets a stronger engagement signal. Both benefit from the same mechanism.
Why Not Just Write Better Headlines
Better headlines improve click-through rate. They do not improve dwell time. A user who clicks a compelling headline and finds unfocused content bounces just as fast. The discovery system solves the post-click problem: once the user arrives, guide them to the content that matches their situation.
The step syntax enforces this. Each choice describes a reader situation ("My traffic never grew" vs "My traffic dropped suddenly"), not a topic label ("Keywords" vs "Backlinks"). Situation-based choices create identification. The reader sees their own problem reflected in the option. Topic-based choices create cognitive load. The reader has to evaluate which topic is more relevant to their unnamed problem.
This distinction comes from journalism training methodology. The Trainingshandbuch Recherche from netzwerk recherche describes reader engagement as a function of relevance perception, not content quality alone. Readers assess relevance in the first 10-15 seconds. The discovery hook gives them a relevance signal immediately, before they decide whether to stay or leave.
Start with the Guides overview for all Wire documentation.