This document records the launch SEO rules for WendAnswerToday.org.
The canonical production domain is:
https://wendanswertoday.org
The domain is configured in src/lib/site.ts and used by canonical URLs, sitemap URLs, robots, and metadata helpers.
Page metadata should use pageMetadata() from src/lib/seo.ts.
The helper sets:
- Title and description.
- Optional keyword list.
- Canonical URL.
- Open Graph title, description, URL, site name, type, and image.
- Twitter
summary_large_image. - Optional article published and modified times.
- Optional per-page robots settings.
- Optional exact title with
absoluteTitlewhen a page title should not inherit the root title template.
The launch MVP is Wend-first. Other LinkedIn games can be added after the site is live and real data is available, but they should not be promoted from the homepage, related-link modules, sitemap, or llms.txt during the initial Wend validation window.
The desktop header should keep the primary user path short:
TodaySolverArchiveStatisticsPlay Game
The Play Game dropdown should contain:
Official Wend: trusted external link tohttps://www.linkedin.com/games/wend, labeledOfficial, opening in a new tab withnoopener noreferrer. Do not addnofollowto this authoritative game source.Wend Unlimited: internal link to/wend-unlimited.
Do not add FAQ, Find Wend, a mobile bottom-nav game item, or a /wend-game intermediary page during Phase 1. Keep the mobile bottom navigation focused on Today, Solver, and Archive. Keep Find Wend available from the FAQ page, and keep How to Play / Solving Tips in related-resource modules and contextual body links.
Footer navigation should stay limited to Contact, Press, Disclaimer, Privacy Policy, and Terms.
The /press page is indexable as a brand trust page. Keep it factual and limited to external references, creator updates, repository links, brief site context, and contact information. External links should open in a new tab with rel="nofollow noopener".
Social previews use the dynamic image route:
/api/og
The route generates a 1200x630 image with:
- WendAnswerToday.org branding.
- The blue path
Wlogo over yellow-and-white puzzle tiles. - Page-specific title and subtitle.
- Hints, Solver, and Archive labels.
- The display domain
wendanswertoday.org.
When adding a new important page, pass imageTitle and imageSubtitle to pageMetadata().
The canonical site logo is the rounded yellow-and-white puzzle tile mark with a blue winding W path. Keep these generated assets in sync:
public/images/wend-logo.png: original source image.public/images/wend-logo-512.png: Open Graph and large app icon source.public/images/wend-logo-192.png: browser/app icon.public/images/wend-logo-180.png: Apple touch icon.public/images/wend-logo-128.png: header and footer logo source.public/images/wend-logo-64.png: small favicon source.
src/lib/site.ts owns the shared logo path, alt text, and description. Header, Footer, root metadata icons, /icon.svg, and /api/og should use that shared brand definition rather than hard-coded text-only logo blocks.
Use short page titles. The root layout appends the brand name automatically.
Exception: the homepage and statistics page use absoluteTitle: true because their approved SERP titles are already complete.
Recommended intent split:
/: the only indexable daily answer URL, usingLinkedIn Wend Answer Today #{number} — {date}when ready./linkedin-wend-answer-today: permanent301redirect to/; do not include it in internal links or the sitemap./linkedin-wend-solver:LinkedIn Wend Solver for Today's Puzzle/linkedin-wend-archive:LinkedIn Wend Answer Archive/linkedin-wend-statistics:LinkedIn Wend Statistics: Puzzle Sizes, Words & Difficulty/wend-unlimited:Wend Practice Puzzlewithnoindex,followuntil real generated unlimited mode exists./wend-answer-puzzle-{number}-{month-day-year}:LinkedIn Wend Answer #{number} - {date}
The homepage owns both broad LinkedIn Wend discovery and daily-answer intent. Supporting pages target distinct solver, archive, access, and how-to queries instead of competing with the homepage for the same generic answer phrase.
Use LinkedIn Wend and Wend on LinkedIn for natural copy. Keep awkward reverse-order variants such as wend linkedin answer to one FAQ-style placement instead of forcing them into the main title or H1.
Current homepage TDK has separate Ready and Pending templates:
Ready title:
LinkedIn Wend Answer Today #{number} — {date}
Pending title:
LinkedIn Wend Answer Today #{number} — {month day} (Verifying)
Ready description:
Get the verified LinkedIn Wend answer today for {date} (Wend #{number}). Reveal a hint, one letter, one word, or the complete path without unwanted spoilers.
Pending description:
The LinkedIn Wend answer for {date} (Wend #{number}) is being verified. Use the latest verified hints and paths without mistaking them for today’s puzzle.
Keywords:
linkedin wend, linkedin wend answer, wend linkedin, wend linkedin answer, wend answer today, wend answer {date}, wend #{number} answer, wend answers, wend full answer, wend answer for date, wend answer for LinkedIn Games
Homepage Hero copy should use the same source as metadata:
LinkedIn Wend Answer Today #{number} — {date}
The status line above the Hero headline should include:
Wend #{number} answer | {date} | updated daily at midnight Pacific Time
Keep the answer tool above long-form content so users can act immediately. The server-rendered page should also include useful explanations for these intents:
- What the LinkedIn Wend game is and how paths and blocked cells work.
- How to use hints, one-letter reveals, one-word reveals, and the full answer progressively.
- How each LinkedIn Wend answer is verified and why pending content is labeled separately.
- Where to play the official game, find availability help, read the rules, use the solver, and browse dated archives.
- FAQ answers for release time, spoiler controls, verification pending, and older answers.
The current editorial target is approximately 1,200-1,300 visible English words after dynamic puzzle text is rendered. Treat this as a completeness check for this page, not a universal ranking formula. Do not pad the page or force awkward keyword variants merely to hit a density score.
The homepage includes a compact next-puzzle countdown inside the lower half of the Hero, directly after the primary CTA buttons. It targets adjacent search intent such as next wend puzzle, when does linkedin wend update, wend answer tomorrow, and date-based next-puzzle searches without publishing unverified answers or adding a separate mid-page section. When the current puzzle is not yet verified, the same card remains visible in placeholder mode so the Hero never opens with a blank gap.
The countdown must use nextWendDisplay() from src/lib/wend-status.ts, which delegates to the America/Los_Angeles schedule module and follows daylight-saving changes. The server-rendered copy should include:
Next Wend #{number} unlocks in
Expected {date} at midnight Pacific Time
Only the live hours/minutes/seconds values are client-side. The date, puzzle number, and release-time promise should remain visible in the page HTML for users and crawlers. Keep the module visually subordinate to the Hero headline and CTA, but use the centered white-card treatment so it reads as a useful first-screen status signal. The time blocks should stay compact, with each value and unit on one horizontal row to avoid inflating the Hero height. If the current puzzle is not verified, render the same card in placeholder mode with -- time values instead of hiding it.
Structured data is part of the launch SEO baseline:
- Home uses FAQPage where matching visible FAQ content exists.
- Wend how-to pages use HowTo schema through
howToJson(). - Wend archive detail pages use Article, BreadcrumbList, and FAQPage schema.
- Solver uses BreadcrumbList and FAQPage schema.
When adding a new instructional page, add visible steps and howToJson(). When adding a new recurring answer/detail page, add visible FAQ content and faqJson() so structured data matches on-page text.
IndexNow is wired through:
npm run indexnow:submitConfigure these values in GitHub/Vercel:
INDEXNOW_KEY
INDEXNOW_SITE_URL=https://wendanswertoday.org
INDEXNOW_ENDPOINT=https://api.indexnow.org/indexnow
The site serves the verification key at /indexnow-key.txt and submits that URL as keyLocation. The daily workflow first waits for /api/wend-status to report the exact expected date and puzzle number, then runs production smoke, and only then submits IndexNow. If INDEXNOW_KEY is missing, the command skips safely.
Current launch focus is Wend.
Indexable:
- Home.
- Wend Today.
- Wend Solver.
- Wend Archive.
- Wend history detail pages.
- Wend how-to pages.
- FAQ, contact, press, and legal pages.
Temporarily noindex,follow:
/linkedin-patches-answer-today/linkedin-patches-archive/linkedin-zip-answer-today/linkedin-zip-solver/wend-unlimited
Reason: Patches and Zip are not yet part of the verified daily update workflow. Wend Unlimited currently uses verified Wend puzzles as a practice set with query-based previous/next navigation, but it is not yet a true generated unlimited mode. Keeping these routes out of search, sitemap, related-link modules, mobile navigation, and llms.txt prevents thin or stale pages from diluting launch quality. The desktop Play Game dropdown may still link to /wend-unlimited as a controlled high-intent practice entry while the page remains noindex,follow.
Wend Unlimited should keep its public page copy user-facing. Do not describe internal launch status, MVP pauses, or SEO suppression in visible page content. Place the practice switcher directly above the solver with:
PreviousPractice Puzzle {number} of {total}- Puzzle number, difficulty, and letter count
Next
To make Patches or Zip indexable later:
- Add verified daily data.
- Remove
robots: noindexFollowfrom the page metadata. - Add the route back to
src/app/sitemap.ts. - Update
scripts/smoke-local.mjs. - Run the full verification commands.
Use one permanent high-authority daily URL plus canonical dated archives:
- Daily evergreen URL:
/ - Deprecated daily URL:
/linkedin-wend-answer-todayreturns a permanent301to/. - Archive URL pattern:
/wend-answer-puzzle-{puzzleNumber}-{month-day-year} - Example archive URL:
/wend-answer-puzzle-17-june-25-2026
The sitemap should publish only canonical archive URLs. Legacy archive URLs shaped like /linkedin-wend-answer-{number}-{date} should redirect to the matching canonical archive page to avoid duplicate indexed answer pages.
Homepage archive coverage:
- The homepage
Recent LinkedIn Wend Answersblock should render a compact preview from the latest verifiedwendPuzzlesentries and link to/linkedin-wend-archivefor the complete list. /linkedin-wend-archivemust render every verified Wend puzzle fromwendPuzzles.- Keep every canonical detail-page link in the initial server-rendered archive HTML. Client-side filters may narrow the visible cards, but must not move the archive into query-string URLs or create indexable filter combinations.
- Archive search should cover puzzle number, date labels, and verified answer words. Month, difficulty, and grid-size options plus the coverage and month summaries must be derived from
wendPuzzles, not hard-coded. tests/wend-archive-coverage.test.mjsguards that every JSON file indata/puzzles/wendreaches the generated raw index, while only verified puzzles reach the publicwendPuzzlesarchive, sitemap, static archive params, homepage archive preview, and complete archive page.tests/wend-archive-filter.test.mjsguards local filter behavior, reset/empty-state copy, generated summaries, and the absence of query-string navigation code.- Keep unverified captures available only through
allWendPuzzlesfor internal checks and future correction; do not link or index them as public answer pages. - Each canonical detail page derives factual copy from its stored grid and paths: grid size, open/blocked cells, answer count, word-length range, path turns, and longest/most winding answers. Use
deriveWendMetrics()rather than manually writing unverifiable difficulty claims. - Detail-page Meta Descriptions include the puzzle number, date, answer count, and grid size.
tests/wend-statistics.test.mjsguards the calculations and confirms that verified pages retain distinct metric signatures.
Statistics page rules:
/linkedin-wend-statisticsis an indexable, self-canonical supporting page for aggregate-data intent, not daily answer intent.- Derive all totals, averages, longest answers, path turns, grid-size distributions, and monthly coverage from verified
wendPuzzlesthroughaggregateWendStatistics(). - State that difficulty is an editorial label and keep it separate from calculated grid/path facts; do not claim an official or causal difficulty ranking.
- Keep a visible calculation methodology and link back to the relevant permanent puzzle pages, Archive, and Solver.
- Update the page daily through the sitemap timestamp when the latest verified record changes.
tests/wend-statistics-page.test.mjsguards the route, metadata, breadcrumb JSON-LD, sitemap, and internal links.
After midnight in America/Los_Angeles, / must not label yesterday's answer as today's answer. The reset is 07:00 UTC during PDT and 08:00 UTC during PST. The homepage uses 60-second ISR (revalidate = 60) so freshness checks update quickly without forcing every visitor request to render on the server. A puzzle is current only when the latest data is both:
isVerified: true- dated as the expected current Wend date in
America/Los_Angeles
If either check fails, the homepage shows a verification-pending notice with the expected date/number and labels the rendered fallback as Latest verified. It must not describe that fallback as today's answer. The fallback answer module uses data-nosnippet while pending so an older date or word list is less likely to replace the current status description in search snippets.
Homepage consistency rule:
- In the ready state, the homepage Hero and answer reveal use the same
displayWendpuzzle. - In the pending state, calendar-derived
expectedWendDisplay()values may appear only as status/expected metadata; the answer module continues to use and label the latest verified puzzle. - The next-puzzle countdown should always render. If the current expected puzzle is missing, switch the card into placeholder mode instead of hiding it or promoting an unverified puzzle number beside an older game module.
Homepage metadata follows the same readiness rule:
- Ready: include
dateLabelandWend #{puzzleNumber}in the title, description, and social image subtitle. - Pending: keep the expected date and puzzle number, add
(Verifying)to the title, and explicitly state that the answer is still being verified.
Current priorities:
/:1.0/linkedin-wend-solver:0.85/linkedin-wend-archive:0.75/linkedin-wend-statistics:0.70/where-is-linkedin-wend:0.65- Wend how-to pages:
0.65 - Wend history detail pages:
0.65 - FAQ/contact/press:
0.4 - Legal pages:
0.25
Run:
npm run test:seo-metadata
npm run test:seo-routes
npm run test:wend-mvp
npm run typecheck
npm run build
npm run smoke:localLocal spot checks:
- Home HTML includes
og:imageandtwitter:image. /api/og?title=LinkedIn%20Wend%20Answer%20Todayreturns an image response./sitemap.xmldoes not include temporary noindex pages./sitemap.xmlincludes/wend-answer-puzzle-{number}-{date}archive URLs, not legacy/linkedin-wend-answer-{number}-{date}archive URLs./sitemap.xmlincludes/linkedin-wend-statisticswith the latest verified content timestamp./sitemap.xmldoes not include/linkedin-wend-answer-today./linkedin-wend-answer-todayreturns a permanent301redirect to/.- A legacy archive URL such as
/linkedin-wend-answer-18-june-26-2026returns a permanent308redirect to the canonical archive URL. - Patches, Zip, and paused practice pages include
noindex, follow.
Production checks:
npm run monitor:productionThe production monitor verifies that /, /linkedin-wend-archive, and the latest archive detail page are live and indexable; that /linkedin-wend-answer-today returns 301 to / and stays out of the sitemap; and that the latest legacy archive URL returns its expected production 308 redirect.