WendAnswerToday is a Next.js App Router site for publishing daily LinkedIn Wend answer pages, solver pages, archive pages, and SEO-friendly supporting pages.
npm install
npm run devOpen http://127.0.0.1:3000.
npm run generate:wend
npm run latest:wend
npm run publish:wend
npm run test:latest-date
npm run test:wend-archive-url
npm run test:wend-mvp
npm run test:wend-publish
npm run test:seo-metadata
npm run test:seo-routes
npm run typecheck
npm run build
npm run smoke:local- Daily Update Runbook: how to add daily puzzle data, update imports, and verify the local site.
- SEO Runbook: TDK rules, index strategy, OG image behavior, and sitemap priorities.
- Changelog: feature and operational changes that affect launch, SEO, data freshness, or troubleshooting.
The MVP homepage is intentionally Wend-first and answer-first:
- The desktop header includes
Today,Solver,Archive, and a compactPlay Gamedropdown. - The
Play Gamedropdown links toOfficial Wendand the internal/wend-unlimitedpractice page;/wend-unlimitedstaysnoindex,followuntil it becomes a true unlimited generator. - Mobile bottom navigation stays limited to
Today,Solver, andArchive. - The footer stays limited to
Contact,Press,Disclaimer,Privacy Policy, andTerms. /presslists trusted external links, including Ko-fi updates, Linktree, and the public GitHub repository.- FAQ remains available through page FAQ blocks and contextual links instead of the primary navigation.
/wend-unlimiteduses verified Wend puzzles as a practice set withPrevious/Nextnavigation, current puzzle position, difficulty, and letter-count metadata.- Centered hero with
Get Today's AnswerandStart with a Hintanchor CTAs. - Full-width
Today's LinkedIn Wend Answercard immediately after the hero. - Left side of the answer card renders the Wend grid; right side handles
Reveal all,Clear all, and row-levelGet Word. - Supporting sections follow the answer card: spoiler-safe hints, step-by-step explanation, FAQ, solving notes, and recent Wend answers.
- Do not add a separate right-side plan, snapshot, or fake preview card to the hero. If extra daily metadata is needed, keep it inside the real answer card.
Wend's target release time is treated as 8:00 UTC. The production goal is to publish verified daily data inside five minutes:
npm run publish:wendreadsWEND_DAILY_INPUT_FILE,WEND_DAILY_SOURCE_URL, or the publicWEND_DAILY_FALLBACK_SOURCE_URL, validates the normalized Wend JSON or HTML cell-coordinate extraction, writesdata/puzzles/wend/YYYY-MM-DD.json, regenerates the puzzle index, and optionally runsWEND_DEPLOY_COMMAND..github/workflows/publish-wend-daily.ymlretries during the launch window at0,1,3,5 8 * * *UTC and also supports manualworkflow_dispatch.- The script refuses to publish
isVerified: falsedata unlessALLOW_UNVERIFIED_WEND_PUBLISH=trueis explicitly set for private dry runs. - The script validates Wend geometry before publishing: coordinates must be in-grid, adjacent, and spell each answer word.
- In CI,
WEND_PERSIST_TO_GIT=truecommits generated daily JSON and the generated puzzle index back to the repository before deployment. WEND_ALERT_WEBHOOK_URLcan point at one Discord-compatible webhook for publish failure alerts./linkedin-wend-answer-todayremains the permanent daily entry. Archive pages use/wend-answer-puzzle-{number}-{month-day-year}, for example/wend-answer-puzzle-17-june-25-2026.
The source URL can be a normalized, verified Wend JSON source, a page with a wend-puzzle-data JSON script tag, or an HTML page whose puzzle cells expose data-row, data-col, data-word-index, and data-letter-index attributes. Do not assume LinkedIn's official game page is crawlable without a logged-in session; test that separately before treating official scraping as the primary path.
Wend pages should mirror LinkedIn's real board, not placeholder examples:
- Use the actual LinkedIn grid dimensions for that day. Recent captured boards include June 25's 6x6 board and June 26's 7x7 board.
- Represent blocked gray wall cells as
nullingrid. - Keep open letter cells as one-letter strings.
- Do not publish answer words or paths unless they are verified against the official puzzle.
- A verified solution must use every open cell exactly once, never pass through
nullcells, and connect letters orthogonally.
Any functional change should update Markdown documentation in the same pass when it affects one of these areas:
- Daily puzzle data, import paths, archive routes, or sitemap entries.
- Dependency version pins or package-lock changes.
- SEO metadata, canonical URLs, redirects, robots, sitemap, or social sharing previews.
- Analytics, event tracking, launch checks, smoke tests, or build scripts.
- User-facing game pages, solver behavior, archive behavior, or error pages.
For small code-only fixes, add one short entry to docs/CHANGELOG.md. For changes that alter the daily workflow, also update docs/DAILY_UPDATE_RUNBOOK.md.