CategoriesSEO

Next.js SEO checklist: what I actually shipped on my own portfolio site

Simple line sketch of a clipboard checklist next to a small browser window
Summarize with AI
ChatGPTClaudePerplexityGeminiGrok
On this page
  1. 1. Metadata that is specific to every page
  2. 2. A dynamic sitemap
  3. 3. robots.ts
  4. 4. Structured data (JSON-LD)
  5. 5. Content in the HTML
  6. 6. Clean URLs and internal links
  7. 7. llms.txt
  8. 8. Search Console and analytics
  9. 9. What I would still check
  10. A quick pre-launch checklist
  11. When this is the wrong approach
  12. FAQ

Most Next.js SEO guides give a list of features. This one is a list of what I actually shipped on my own portfolio, gauravsah.com.np, and what I would still verify. The site runs on a Next-compatible App Router setup, so the same patterns apply to a standard Next.js project.

I am not going to claim ranking results here. The site is young and I do not have enough data to say what each change did. What I can give you is a clear, tested checklist.

1. Metadata that is specific to every page

  • A unique title and description for each route, written for a person first.
  • A canonical URL on every page through the metadata alternates field, so duplicate paths do not compete.
  • Open Graph and Twitter card tags with a real 1200 by 630 preview image.

Why it matters: titles and descriptions are the first thing a searcher sees, and canonicals prevent split signals.

2. A dynamic sitemap

My sitemap.ts builds the list of URLs in code. It includes the main pages and the case studies, and it now reads every published blog post from the CMS, so a new article appears without a rebuild. I leave out lastModified unless I have a real editorial timestamp, because a deploy date would falsely say every page just changed.

Simple line sketch of a site map tree: home linking to blog and services

3. robots.ts

A small robots.ts allows crawling and points to the sitemap. Check it after every deploy. A stray Disallow: / is one of the most expensive mistakes in SEO.

4. Structured data (JSON-LD)

Simple line sketch of a page with curly braces turning into a search result card
  • `Person` and `WebSite` in the root layout, with my name, location (Kathmandu, Nepal) and profile links.
  • `BlogPosting` on each article, with headline, author and dates.
  • `Service` and `BreadcrumbList` on the startup SEO page.

I render it as JSON-LD in a script tag and escape the output. Validate with Google's Rich Results Test, and remember that structured data supports understanding but does not guarantee a rich result.

5. Content in the HTML

Search engines and AI crawlers read the HTML. I check that headings, text and links are in the server-rendered output, with one clear h1 per page, not injected after load.

  • Short, readable slugs that do not change after publishing.
  • Plain <a> links between pages so crawlers can follow them.
  • Each article links to related articles and to the service pages, which spreads relevance across the site.

7. llms.txt

I added a short llms.txt with a summary, contact links, pages and case studies. It costs almost nothing, but the evidence that it helps is thin, which I explain in llms.txt: does it work?.

8. Search Console and analytics

I verified the site in Google Search Console and submitted the sitemap. This gives real query and indexing data, which is what turns guesses into decisions.

Simple line sketch of a magnifying glass over a line chart going up

9. What I would still check

  • Core Web Vitals on real pages, using PageSpeed Insights and field data once there is enough traffic.
  • Image sizes and alt text across the site.
  • Indexing status of every new article after publication.
  • Internal link gaps, using the Search Console links report.

A quick pre-launch checklist

  1. Unique title and description on every page.
  2. Canonical on every page.
  3. sitemap.xml returns 200 and lists real URLs.
  4. robots.txt allows what you want crawled.
  5. JSON-LD validates.
  6. One h1 per page, content visible in the HTML.
  7. Search Console verified and sitemap submitted.
  8. Analytics installed and tested.

When this is the wrong approach

If you have a small brochure site and no developer, you do not need to hand-build any of this. A good plugin or platform setup can cover the basics. The advantage of building it in code is control and consistency as the site grows.

If you want an audit or a technical SEO setup for a startup site, see my services and SEO for SaaS and AI startups. For how this fits into AI search, read how to get cited by ChatGPT and Perplexity.

Read next
Work with me

Need help with this?

SEO, digital marketing and GTM systems for startups and Nepali businesses.

Start a project
FAQ

Curious about something?

What are the SEO basics for a Next.js site?

A unique title, description and canonical on every page, a sitemap, a robots file, JSON-LD structured data, content in the server-rendered HTML, clean URLs with plain links, and Search Console with the sitemap submitted.

Should the sitemap use the deploy date as lastModified?

No. A deploy date falsely tells search engines every page just changed. Leave lastModified out unless you have a real editorial timestamp.

Does structured data guarantee rich results?

No. JSON-LD helps search engines understand the page, but it does not guarantee a rich result. Validate it with Google's Rich Results Test.