TEMPLATE

Bilingual editorial Astro blog theme, migration-ready SEO

Editorial Astro blog theme in French and English, with configurable permalinks, redirects and a coverage check to move an existing blog without losing its URLs.

€89
One-time payment

Your free account is created with your email and a code sent by email, no password needed. You then pay on the Stripe page.

Sold only in the 27 EU member states, excluding overseas and special tax territories (terms of sale, art. 2): billing address and payment method from this area.

Digital file delivered as soon as you pay: by ticking the box above, you waive your right of withdrawal (see the terms of sale).

Final price · VAT not applicable, art. 293 B of the French Tax Code

Commercial licence · Read the licence

BUYTRY

Overview

Description

This theme is for bloggers, editorial teams and agencies who want to move an existing blog to Astro while keeping its addresses, for example to migrate from Webflow or WordPress. It gives you a complete editorial blog in French and English, and the machinery that protects URLs during a migration: permalinks you set to match the shape of your old addresses, redirects kept in a single file, and a check that lists, before the switch, every old URL that would end up as a 404. A migration guide, in English and French, walks through the method in order.

The theme helps you migrate without losing your URLs; it guarantees no ranking. It has no automatic importer: you convert your old content to Markdown by following the guide. And in the weeks after the switch, search engines need a stable site to settle, even when every address is kept.

Specifications

Page templates7
Languages2
Demo posts8 in French, 6 in English
Client-side JavaScript0 KB
FormatsAstro 7, Markdown, TypeScript, CSS
Licensecommercial (page in French)
Version1.0.0 of November 10, 2026

Contents

  • 7 page templates, in French and English: home, paginated article list, article, category, author, simple page and 404 page, plus an RSS feed per language. The article page includes a breadcrumb, a table of contents built from the headings, reading time, an author block, an optional FAQ, related articles from the same category and links to the previous and next articles.
  • 2 languages out of the box: the default language at the root, the other under a prefix (/en). The code accepts more: add the language to the configuration and translate its dictionary.
  • A single configuration file, theme.config.ts: site URL, languages, site name per language, publisher for structured data, articles per page and the permalink pattern of each page type.
  • Configurable permalinks, with the tokens :slug, :year, :month, :day, :category and :page. The guide gives presets to keep the addresses of an old site (/post/:slug, /:slug, /:year/:month/:day/:slug, /:category/:slug). The build fails, naming both files, if two pages land on the same address or a permalink clashes with a fixed page.
  • A required, frozen slug in each article’s frontmatter: the URL never depends on the file name, and an accented slug stays valid.
  • Search engine machinery, produced by a single route table: canonical URLs, hreflang pairs (only between published translations), noindex, a sitemap that leaves out pages not meant to be indexed, robots.txt and JSON-LD structured data (BlogPosting, BreadcrumbList, FAQPage, CollectionPage, ProfilePage, WebSite).
  • Redirects in a single file, redirects.json, written as 301 rules to dist/_redirects for your host. The build rejects a chain, a loop, a missing destination or a source that hides a page.
  • URLs without a trailing slash, everywhere: internal links, canonicals, hreflang and sitemap.
  • Two checks to run before the switch: npm run check:coverage compares your old URLs (CSV export of the Pages report from Google Search Console, a URL list or the old site’s sitemap) with the built site and lists the orphans sorted by clicks; npm run check:seo checks canonicals, hreflang pairs, the sitemap, JSON-LD, internal links and redirects.
  • A migration guide in 7 parts, in English and French: inventory of old URLs, content export from Webflow or WordPress, mapping fields to frontmatter, slugs copied exactly, permalinks and redirects, coverage check, switch day and the weeks after.
  • A demo magazine, made up, about the book trades: 8 articles in French and 6 in English, 14 articles in all, including 6 translation pairs. The French articles without a translation show the case of a standalone page and of a noindex page. The built demo has 36 pages, and its redirects.json holds 3 sample redirects, from an old /post/... permalink to /blog/....
  • 8 demo covers as 1,600 × 900 px WebP files, to replace with your own images.
  • Version 1.0.0, with its changelog.

Theme files:

README.md, README.fr.md, CHANGELOG.md
package.json, package-lock.json, .nvmrc
theme.config.ts, astro.config.mjs, tsconfig.json
redirects.json
src/content/      (articles, authors, categories and pages, one folder per language)
src/components/, src/layouts/, src/lib/, src/pages/, src/styles/
src/assets/demo/  (demo covers)
integrations/     (writes _redirects and _headers)
scripts/          (check-seo.mjs, check-coverage.mjs)
docs/             (migration guide in English and French, sample export)

The license text, LICENCE.txt, sits at the root of the downloaded archive.

Production and AI

The theme’s code (Astro, TypeScript, CSS) and demo texts were produced with an AI assistant (anthropic-claude), then reviewed and checked: build, type check, SEO checks, accessibility, contrast and spacing grid were run again before release. The 8 demo covers are AI-generated illustrations (krea-2 model), colour-graded, cropped to 16:9 and upscaled to 1,600 × 900 px; they ship under the same license as the theme and are meant to be replaced with your own images. The demo content is made up.

Formats and compatibility

  • Astro 7, static output, no JavaScript sent to the browser (0 KB client-side): AVIF and WebP images, hero image loaded with priority, body font preloaded.
  • Node 22.23.4 or later. The .nvmrc file pins Node 24, the version the theme was built and tested on.
  • Markdown for content, with a strict frontmatter: an unknown field or a duplicate slug within a language fails the build.
  • TypeScript for the configuration and the theme code.
  • CSS with no framework: every spacing, size and colour comes from src/styles/tokens.css, in multiples of 4 px. Light and dark colours follow the visitor’s system setting, with no toggle.
  • Fonts: Newsreader and Instrument Sans, under the SIL Open Font License 1.1, referenced from npm (@fontsource-variable/newsreader and @fontsource-variable/instrument-sans) and installed with the dependencies. No font file in the archive, no request to an external font service.
  • Hosting: any static host that serves blog/my-article.html at /blog/my-article and reads _redirects and _headers, or lets you copy those rules into its settings. Optionally, Astro’s Node adapter serves the 301 redirects from the application, from the same redirects.json.

What was checked on the demo:

  • lab performance, accessibility, best practices and SEO, on mobile, median of 3 runs on 4 pages: performance from 98 to 100, the other three scores at 100;
  • no violation found by an automated accessibility test, at 4 widths, in light and dark;
  • contrast of at least 6.28:1, muted text included;
  • no horizontal scroll at 320, 375, 768 and 1,440 px wide;
  • reciprocal hreflang pairs, canonicals, sitemap and redirects checked by check:seo.

Good to know before you buy:

  • The theme does not convert your old content: the guide covers the export, the conversion to Markdown and the field mapping.
  • Remove the demo content before changing permalinks: its articles link to each other through hard-coded paths, which check:seo reports as errors as soon as the pattern changes.
  • The coverage check compares paths without trailing slash or host. The /my-article/ to /my-article redirect and the host redirect (with or without www) are set at your host: test them on a preview URL before the switch.
  • Page titles matter as much as URLs: copy the old title into seoTitle when it differs from the theme’s format. No check reports it.
  • Change the technology, not the content: no redesign, no rewriting, no renamed slug during the migration, and keep your redirects for the long term, including once traffic is back.
  • A navigation longer than the demo’s may overflow at tablet width: check it with your own links.
  • Not included: MDX, search, comments, newsletter form, light or dark toggle, share buttons, wildcard redirects.

License

The theme is sold with the commercial license (in French): you may use and modify it for your personal and professional sites, including for clients, but you may not resell, share or redistribute its files, even modified, or publish them as a reusable theme or template, public repositories included.

Version history

1.0.0 (10 November 2026): first release.

About the author

Frequently asked questions

Does the theme guarantee that a site keeps its rankings?
No. It helps you keep your URLs: permalinks set to the old addresses, redirects listed one by one in redirects.json, and check:coverage, which lists every old URL that would end up as a 404. No tool guarantees a ranking: search engines need a few weeks of a stable site to settle, and the guide describes the precautions to take before, during and after the switch.
Does the theme import the old content automatically?
No, version 1.0.0 has no importer. The migration guide shows how to export your articles, convert their HTML to Markdown, map the fields to the frontmatter and copy each slug exactly, accents and capitals included.
Can I use a single language, or add one?
Yes. For a single language, remove the other one from locales in theme.config.ts and delete its content folders. To add a language, add it to the configuration, translate a copy of the dictionary in src/lib/i18n.ts and create its folders: a language without a dictionary fails the build.