Skip to Content
LaunchfastDocs

Blog and SEO

Write posts in MDX. The blog index, sitemap, share images and structured data update themselves.

Write a post

Create src/content/blog/<slug>.mdx. The file name becomes the URL: how-we-price.mdx → /blog/how-we-price.

src/content/blog/how-we-price.mdx
export const metadata = {
  title: 'How we picked our pricing',
  description: 'The three prices we tried, and why we kept the middle one.',
  date: '2026-11-10',
  author: 'Your Name',
};

Write the post in **Markdown**. Headings, lists, links, images and code blocks all work.

## A heading

You can also use React components in MDX.

All four metadata fields are required. date is YYYY-MM-DD; posts are listed newest first.

Images go in public/, for example public/blog/pricing-chart.png, used as ![Pricing chart](/blog/pricing-chart.png).

Picked up automatically

WhatWhere
Blog index/blog
Sitemap/sitemap.xml
Share imageGenerated for each post (shown when a link is shared on X, LinkedIn, WhatsApp…)
Structured dataBlogPosting on posts; SoftwareApplication and FAQPage on the home page
robots.txt/robots.txt. Dashboard, admin and API routes are excluded from search

Only slugs that match a real file are served; any other /blog/… URL returns a 404.

The example post

src/content/blog/welcome.mdx is an example. Delete it before launch. The "Make it yours" task deletes it and offers to draft your first post.

SEO basics already handled

  • Page titles and descriptions from siteConfig in src/config.ts. Keep the description under about 155 characters.
  • Canonical URLs and share images use NEXT_PUBLIC_APP_URL, so set it to your real domain in production. A wrong value makes share previews and the sitemap point to the wrong site.

Submitting to Google

After you launch, add your domain in Google Search Console and submit https://yourdomain.com/sitemap.xml.

On this page