Astro SEO Guide 2026: 12 Essential Steps to Optimize Your Website for Google
Building a website with Astro is relatively straightforward. Getting that website discovered, indexed, and understood by search engines requires a different set of skills.
Astro is an excellent foundation for content-focused websites because it can generate static HTML and minimize unnecessary client-side JavaScript. However, a fast website is not automatically an SEO-optimized website.
You still need to consider metadata, URL structure, sitemaps, canonical URLs, structured data, internal linking, content quality, and search engine indexing.
In this practical tutorial, you’ll learn how to implement 12 essential Astro SEO improvements, understand why they matter, and verify that they work.
The examples focus on a static Astro blog deployed to Cloudflare Pages, but most principles also apply to other hosting platforms.
Last reviewed: October 21, 2026.
What You’ll Learn
By the end of this guide, you’ll understand how to:
- Configure your Astro website’s production URL.
- Create reusable SEO metadata.
- Implement canonical URLs correctly.
- Generate an XML sitemap.
- Configure robots.txt.
- Add structured data using JSON-LD.
- Optimize images for performance and accessibility.
- Improve Core Web Vitals.
- Build effective internal links.
- Set up Google Search Console.
- Optimize individual articles for search intent.
- Audit and monitor your technical SEO.
You don’t need a paid SEO tool to implement these fundamentals.
Prerequisites
This tutorial assumes you already have:
- A working Astro project.
- Node.js and npm installed.
- A domain name or deployed website.
- Basic knowledge of HTML and JavaScript.
- Access to your website’s source code.
If you haven’t built your website yet, start with our guide to building an Astro blog using Decap CMS and Cloudflare Pages.
That tutorial covers the publishing foundation. This article focuses on making the resulting website easier for search engines and readers to discover.
Step 1: Configure Your Website URL in Astro
Before working on individual pages, configure the canonical origin of your website.
Open astro.config.mjs:
import { defineConfig } from 'astro/config';
export default defineConfig({
site: 'https://example.com',
trailingSlash: 'always',
});
Replace https://example.com with your actual production domain.
The site setting tells Astro the public URL of your website and is used by integrations that need to generate absolute URLs.
The trailingSlash setting controls Astro’s URL conventions. In this example, we prefer URLs such as:
https://example.com/blog/my-article/
instead of:
https://example.com/blog/my-article
Neither format is inherently better for SEO.
The important requirement is consistency.
Why URL Consistency Matters
Consider a blog post accessible from multiple addresses:
https://example.com/blog/astro-seo
https://example.com/blog/astro-seo/
https://www.example.com/blog/astro-seo/
If these URLs serve equivalent content without clear canonical signals, search engines must determine which version represents the page.
Choose a preferred format and configure your redirects, internal links, canonical URLs, and sitemap consistently.
Important: Setting trailingSlash in Astro does not automatically guarantee that every hosting platform redirects duplicate URLs to your preferred version.
Verify the actual response behavior after deployment.
Step 2: Create Reusable SEO Metadata
Every important page should have a descriptive title and meta description.
A common mistake is manually copying metadata into every Astro page. This introduces inconsistencies as the website grows.
A reusable SEO component makes the implementation easier to maintain.
Create:
src/components/SEO.astro
Add:
---
interface Props {
title: string;
description: string;
image?: string;
noindex?: boolean;
}
const {
title,
description,
image = '/images/default-og.jpg',
noindex = false,
} = Astro.props;
const site = Astro.site
?? new URL('https://example.com');
const canonical = new URL(
Astro.url.pathname,
site
).toString();
const imageUrl = new URL(image, site).toString();
---
<title>{title}</title>
<meta name="description" content={description} />
<link rel="canonical" href={canonical} />
<meta
name="robots"
content={noindex ? 'noindex, follow' : 'index, follow'}
/>
<meta property="og:type" content="website" />
<meta property="og:title" content={title} />
<meta property="og:description" content={description} />
<meta property="og:url" content={canonical} />
<meta property="og:image" content={imageUrl} />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content={title} />
<meta name="twitter:description" content={description} />
<meta name="twitter:image" content={imageUrl} />
The example assumes that:
- Your production
sitesetting is correct. - Your generated page paths already follow your preferred URL convention.
- Your default social sharing image exists.
- You render this component only once per page.
The Open Graph tags help social platforms understand page previews. They are useful, but should not be confused with guaranteed improvements in Google rankings.
Use the Component in a Layout
For example:
---
import SEO from '../components/SEO.astro';
const {
title = 'My Website',
description = 'Practical technology tutorials.',
} = Astro.props;
---
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1"
/>
<SEO
title={title}
description={description}
/>
</head>
<body>
<slot />
</body>
</html>
Your individual pages can now pass their own title and description to the layout.
Writing Effective Titles
Compare these examples.
Weak title:
Astro Tutorial
Better title:
Astro SEO Guide 2026: Metadata, Sitemaps & Google Indexing
The second title gives readers a clearer understanding of the page’s contents.
Avoid repeating the same keywords unnaturally.
Google may generate its own title link or search snippet based on other page content, so your metadata is a recommendation rather than an absolute instruction.
Step 3: Implement Canonical URLs Correctly
Canonical URLs help search engines identify the preferred version of substantially similar pages.
In the previous step, we added:
<link rel="canonical" href={canonical} />
For a page at:
https://example.com/blog/astro-seo/
the generated HTML should contain:
<link
rel="canonical"
href="https://example.com/blog/astro-seo/"
/>
Common Canonical Mistakes
Mistake 1: Every page points to the homepage.
Each unique, indexable blog post should normally reference its own canonical URL.
Mistake 2: Canonical URLs use the preview domain.
If your production website runs on a custom domain, make sure its canonical URLs don’t accidentally reference your Cloudflare Pages preview deployment.
Mistake 3: Canonical URLs conflict with redirects or the sitemap.
Consistency matters across your technical SEO configuration.
Mistake 4: Treating canonical as a guaranteed directive.
Google considers canonical annotations alongside other signals and can select a different canonical URL.
Canonical tags are signals, not commands.
If you need to remove an outdated URL permanently, a proper redirect may be more appropriate than simply adding a canonical tag.
Step 4: Generate an XML Sitemap
A sitemap helps search engines discover important URLs on your website.
Instead of manually maintaining an XML document, Astro provides an official sitemap integration.
Install the Integration
Run:
npx astro add sitemap
Then check your Astro configuration:
import { defineConfig } from 'astro/config';
import sitemap from '@astrojs/sitemap';
export default defineConfig({
site: 'https://example.com',
integrations: [
sitemap(),
],
});
If your configuration already includes other integrations, preserve them.
Build Your Website
Run:
npm run build
For a standard static build using the sitemap integration, Astro generates files such as:
dist/
sitemap-index.xml
sitemap-0.xml
After deployment, visit:
https://example.com/sitemap-index.xml
Confirm that the sitemap loads and contains the correct production URLs.
Exclude Pages That Shouldn’t Be Indexed
You might not want certain pages included in your sitemap.
For example, an administrative interface or a standalone search results page may not belong in it.
You can configure a filter:
sitemap({
filter: (page) => {
const path = new URL(page).pathname;
return ![
'/admin/',
'/search/',
].includes(path);
},
})
This is only a sitemap filter.
It does not prevent search engines from discovering those URLs through links or other sources.
To keep a public page out of Google Search, use an appropriate noindex directive.
Also remember that the sitemap integration covers statically generated routes. Server-rendered dynamic routes require additional consideration.
Does a Sitemap Guarantee Indexing?
No.
Submitting a sitemap helps Google discover URLs, but Google independently determines whether to crawl and index a page.
A sitemap is an important discovery tool, not a ranking shortcut.
Step 5: Configure robots.txt
The robots.txt file provides crawling instructions to compatible search engine robots.
For a simple Astro website, create:
public/robots.txt
Add:
User-agent: *
Allow: /
Sitemap: https://example.com/sitemap-index.xml
Replace the example domain.
Files inside Astro’s public/ directory are copied into the built website without requiring you to import them into a component.
After deployment, the file should be available at:
https://example.com/robots.txt
What Not to Do
Avoid this configuration on your public website:
User-agent: *
Disallow: /
It tells compliant crawlers not to crawl any path on the site.
That can prevent Google from discovering or refreshing your content.
robots.txt vs noindex
These controls solve different problems.
| Control | Primary purpose |
|---|---|
| robots.txt | Manage crawler access |
noindex |
Request exclusion from search results |
| Canonical | Signal preferred URL |
| Sitemap | Help discovery |
A particularly important distinction: if a URL is blocked by robots.txt, Google may be unable to crawl the page and see its noindex tag.
Also, robots.txt is not a security feature.
Do not rely on it to protect private documents, credentials, or unpublished content.
Step 6: Add Structured Data With JSON-LD
Structured data helps search engines understand entities and relationships on a page.
For blog articles, Schema.org’s BlogPosting type is a useful option.
Google supports Article-related structured data that can clarify details such as the author, headline, images, and publication date.
However, adding structured data does not guarantee a rich result.
Example: BlogPosting Schema
Suppose your article has these metadata fields:
title
description
date
updatedDate
author
image
You can generate structured data in an Astro article layout:
---
const { post } = Astro.props;
const site = Astro.site
?? new URL('https://example.com');
const url = new URL(
Astro.url.pathname,
site
).toString();
const schema = {
'@context': 'https://schema.org',
'@type': 'BlogPosting',
headline: post.data.title,
description: post.data.description,
datePublished: post.data.date.toISOString(),
...(post.data.updatedDate && {
dateModified:
post.data.updatedDate.toISOString(),
}),
author: {
'@type': 'Person',
name: post.data.author,
},
mainEntityOfPage: {
'@type': 'WebPage',
'@id': url,
},
...(post.data.image && {
image: [
new URL(post.data.image, site).toString(),
],
}),
};
---
<script
type="application/ld+json"
set:html={JSON.stringify(schema).replace(/</g, '\\u003c')}
/>
This example expects date and updatedDate to be JavaScript Date objects and image paths to be usable public URLs.
The example escapes < in serialized data to reduce the risk of HTML script-element parsing problems. If your schema includes untrusted data or a more complex content source, review JSON serialization and escaping carefully.
For a production project, centralize structured data generation and validate it against your actual content schema.
Validate the Structured Data
Use:
You can also use:
These tools serve slightly different purposes.
A structured data block can be valid according to Schema.org without qualifying for a particular Google Search appearance.
Only describe content that is genuinely present on the page.
Never invent author credentials, customer ratings, review scores, or publication dates simply to make structured data look more complete.
Step 7: Optimize Images for SEO and Performance
Images influence several aspects of website quality:
- Perceived loading speed.
- Accessibility.
- Visual readability.
- Search engine understanding.
- Social sharing previews.
Astro includes built-in image optimization capabilities through astro:assets.
Use Astro’s Image Component
For local images stored in your source directory:
---
import { Image } from 'astro:assets';
import coverImage from '../assets/astro-seo-cover.jpg';
---
<Image
src={coverImage}
alt="Astro SEO tutorial showing metadata, sitemap and search indexing"
width={1200}
height={675}
format="webp"
/>
Astro can process local images and help generate optimized output.
Specifying dimensions also helps the browser reserve layout space.
Use Descriptive Alt Text
Avoid:
<img src="image.webp" alt="SEO image" />
Prefer:
<img
src="astro-seo-guide.webp"
alt="Illustration of an Astro website with SEO metadata and an XML sitemap"
/>
Alt text should describe the image meaningfully.
It is not a place to stuff keywords.
Decorative images that convey no useful information may appropriately use an empty alt attribute.
Optimize the Main Image Carefully
An article’s main image may become the Largest Contentful Paint element.
For an important above-the-fold image:
- Avoid unnecessary lazy loading.
- Provide appropriate dimensions.
- Use responsive image sizes when possible.
- Compress the image.
- Avoid loading an unnecessarily large source file.
For below-the-fold images, lazy loading often makes sense.
Do not apply the same loading strategy blindly to every image.
What About WebP and AVIF?
Both can offer useful compression.
However, newer formats are not automatically better in every situation.
Compare actual file size, image quality, compatibility, and encoding requirements.
The goal is to deliver an appropriate image—not merely to use the newest format.
Step 8: Improve Core Web Vitals
Core Web Vitals measure important aspects of real-world user experience.
Google’s three current Core Web Vitals are:
| Metric | Good threshold | Measures |
|---|---|---|
| LCP | ≤ 2.5 seconds | Loading performance |
| INP | ≤ 200 milliseconds | Responsiveness |
| CLS | ≤ 0.1 | Visual stability |
These thresholds are evaluated at the 75th percentile of relevant page visits.
Largest Contentful Paint (LCP)
LCP measures when the largest eligible visible content element finishes rendering.
Common causes of poor LCP include:
- Oversized hero images.
- Slow server responses.
- Render-blocking assets.
- Excessive JavaScript.
- Inefficient resource loading.
Astro’s static HTML output can provide a useful starting point, but large images and poorly configured resources can still slow down the page.
Interaction to Next Paint (INP)
INP evaluates responsiveness to user interactions.
Examples include:
- Opening the navigation menu.
- Clicking a search button.
- Interacting with forms.
- Using an embedded widget.
A static site can still have poor responsiveness when heavy JavaScript runs on the main thread.
Use client-side hydration selectively and avoid unnecessary scripts.
Cumulative Layout Shift (CLS)
CLS measures unexpected visual movement.
For example, imagine reading an article and suddenly seeing the paragraph jump downward because an advertisement loaded above it.
To reduce layout shifts:
- Reserve space for images.
- Avoid injecting large components above existing content.
- Account for font loading behavior.
- Reserve reasonable space for advertising placements.
This last point becomes especially important when monetizing your website with display advertising.
How to Measure Performance
Use:
Test both mobile and desktop experiences.
Remember that lab scores and real-user field data are different.
A Lighthouse performance score of 100 is not a guarantee of high search rankings.
Likewise, a page with excellent Core Web Vitals can still perform poorly in search if its content is unhelpful.
Step 9: Build an Effective Internal Linking Strategy
Internal links help readers discover related content and help search engines understand the structure of a website.
Imagine you publish these articles:
Article A: How to Build an Astro Blog
Article B: Astro SEO Guide 2026
Article C: How to Add Google Analytics to Astro
Article D: How to Monetize a Developer Blog
These topics naturally connect.
A visitor reading about building an Astro blog may also want to know how to optimize it for search engines.
A visitor learning technical SEO may next want to measure search performance.
Use Contextual Links
Instead of:
Click here to learn more.
Prefer:
Follow our guide to building an Astro blog with Decap CMS and Cloudflare Pages before implementing advanced SEO features.
Descriptive anchor text helps users understand the destination.
Example in Astro
<p>
New to Astro?
<a href="/blog/how-to-build-an-astro-blog-with-decap-cms-and-cloudflare-pages/">
Learn how to build an Astro blog
</a>
before configuring advanced SEO features.
</p>
Astro outputs an ordinary HTML anchor element.
This is important because Google recommends crawlable links using the standard <a href="..."> structure.
Avoid Internal Linking Mistakes
Don’t:
- Add unrelated links simply to increase link count.
- Use the same generic anchor text everywhere.
- Link to deleted or redirected articles unnecessarily.
- Leave important articles isolated with no incoming internal links.
A smaller number of relevant links is more useful than a large block of unrelated recommendations.
Step 10: Connect Your Website to Google Search Console
Google Search Console helps website owners understand how Google discovers, crawls, indexes, and displays their pages.
It is free and should be one of the first tools you configure.
Set Up Search Console
Visit:
Then:
- Add your website as a property.
- Verify ownership using an available verification method.
- Open the Sitemaps section.
- Submit your sitemap URL.
- Inspect important pages using URL Inspection.
- Monitor indexing reports.
For the sitemap integration used in this tutorial, the submitted URL will typically be:
https://example.com/sitemap-index.xml
Verify a Newly Published Article
After publishing an article, use URL Inspection.
Check whether:
- Google can access the URL.
- Crawling is allowed.
- The page is eligible for indexing.
- The canonical URL is correct.
- Google has indexed the page.
If Google has not indexed a page, examine the reported reason before making changes.
What If Google Doesn’t Index the Page?
Possible reasons include:
- The page is newly published.
- Google hasn’t discovered it yet.
- A noindex directive is present.
- The canonical URL points elsewhere.
- The page returns an error.
- Google considers another page to be a more appropriate canonical.
- The content does not yet warrant indexing.
Do not assume that every unindexed URL has a technical bug.
And don’t repeatedly resubmit unchanged pages expecting instant indexing.
Google controls its own crawling and indexing schedules.
Step 11: Optimize Content for Search Intent
Technical SEO helps make content accessible and understandable.
It cannot compensate for an article that fails to answer the reader’s question.
Before writing, identify what the searcher actually wants.
Understand Search Intent
Consider these queries:
| Search query | Likely intent |
|---|---|
| What is Astro? | Learn a concept |
| Astro SEO tutorial | Follow instructions |
| Astro vs Next.js | Compare frameworks |
| Best Astro hosting | Evaluate options |
| Cloudflare Pages pricing | Research cost |
Each query deserves a different content structure.
A tutorial should prioritize reproducible steps.
A comparison should explain criteria, tradeoffs, and limitations.
A pricing article should use current, verifiable information.
Structure Articles for Readability
A useful technical article should normally include:
- A clear explanation of the problem.
- Prerequisites.
- Numbered implementation steps.
- Working code examples.
- Expected results.
- Common failure scenarios.
- Verification instructions.
- Relevant official documentation.
Do not use headings simply to repeat keywords.
Demonstrate Experience Where Possible
If you’re writing about code you have actually implemented, consider including:
- Screenshots of the real application.
- Code from a minimal reproducible example.
- Relevant error messages.
- A GitHub repository with working examples.
- Explanations of decisions and tradeoffs.
For software engineering content, these details can make an article substantially more useful than a generic summary of documentation.
However, do not describe code as personally tested unless it has actually been executed and verified.
Keep Evergreen Content Updated
A guide written in 2026 may become inaccurate when libraries, APIs, or hosting platforms change.
Periodically review:
- Installation commands.
- Dependencies.
- Configuration settings.
- External documentation.
- Pricing information.
- Deprecated features.
Update the modification date only when the content has been meaningfully revised.
Changing a date without improving the article does not create additional value for readers.
Step 12: Audit and Monitor Your Astro SEO
SEO isn’t a one-time configuration task.
Every new component, content workflow, and deployment change can introduce problems.
Run a Local Production Build
Start with:
npm run build
Confirm the build succeeds.
Then inspect the generated output.
For example:
dist/
index.html
robots.txt
sitemap-index.xml
sitemap-0.xml
blog/
astro-seo-guide/
index.html
The exact output structure depends on your Astro configuration and routing.
Verify Production URLs
After deploying to Cloudflare Pages, check that your important pages return successful HTTP responses.
You can inspect response headers with:
curl -I https://example.com/
Then check the sitemap:
curl -I https://example.com/sitemap-index.xml
For a standard static deployment, these resources should normally return successful responses.
A successful HTTP response alone doesn’t prove the document is valid, so open or parse the returned content as well.
Inspect SEO Metadata
Open a deployed article and use your browser’s View Page Source feature.
Verify that the HTML includes:
<title>Astro SEO Guide 2026</title>
<meta name="description" content="..." />
<link rel="canonical" href="https://example.com/blog/astro-seo-guide-2026/" />
The canonical URL should match the actual preferred page URL.
Also confirm that only one canonical link is present.
Check for Broken Internal Links
Broken links frustrate users and waste crawler requests.
You can detect them through a site crawler, automated tests, or link-checking tools.
Pay particular attention to links affected by:
- Changed article slugs.
- Renamed Markdown files.
- Deleted content.
- Changes to trailing-slash conventions.
- Incorrect relative paths.
Review Search Performance Monthly
In Google Search Console, monitor:
- Search impressions.
- Organic clicks.
- Search queries.
- Click-through rate.
- Indexing coverage.
- Pages gaining or losing visibility.
These metrics answer different questions.
High impressions with low clicks may suggest a search-result presentation or relevance problem.
A page with almost no impressions may need better discovery, greater topical relevance, stronger content, or simply more time.
Do not assume that every performance change results from one SEO modification.
Search demand, competition, seasonality, and Google’s systems also influence visibility.
Common Astro SEO Problems and Their Solutions
Problem: The Sitemap Contains the Wrong Domain
Likely cause: Incorrect site configuration.
Solution: Verify the production URL in astro.config.mjs and rebuild the website.
Problem: A Page Has Two Canonical Tags
Likely cause: Multiple components independently generate canonical metadata.
Solution: Keep canonical generation in one shared layout or SEO component.
Problem: Draft Articles Appear Publicly
Likely cause: The content collection includes drafts when generating routes.
Solution: Filter unpublished entries in getStaticPaths() and ensure drafts do not accidentally appear in listings or sitemaps.
Problem: Search Results Show an Unexpected Title
Possible cause: Google chose another title source or interpreted the page differently.
Solution: Review the HTML title, visible H1, prominent headings, internal anchor text, and page content.
Google does not always display the title element exactly as written.
Problem: The Website Is Fast Locally but Slow in Production
Possible causes: Large images, third-party scripts, fonts, advertising code, or environment differences.
Solution: Measure the production website and inspect real-user performance when data becomes available.
Problem: Social Sharing Displays the Wrong Image
Likely cause: An incorrect Open Graph image URL or outdated cached preview.
Solution: Verify the absolute og:image URL, image accessibility, and the relevant platform’s preview debugger.
This is primarily a social sharing issue, not necessarily a Google indexing problem.
Astro SEO Checklist
Before publishing your next article, review this checklist.
Technical Foundation
- Production domain configured in Astro.
- Preferred URL format established.
- Canonical URLs generated correctly.
- XML sitemap accessible.
- robots.txt configured.
- Important pages return successful HTTP responses.
- No accidental noindex directives.
Page-Level SEO
- Unique, descriptive title.
- Helpful meta description.
- One clear main heading.
- Logical heading hierarchy.
- Descriptive image alt text.
- Relevant internal links.
- Valid structured data where appropriate.
Performance
- Images appropriately compressed.
- Layout space reserved for visual elements.
- Important above-the-fold resources prioritized.
- Unnecessary JavaScript minimized.
- Mobile experience tested.
- Core Web Vitals reviewed.
Content Quality
- Search intent answered directly.
- Code examples checked for accuracy.
- Important limitations explained.
- Official sources linked when appropriate.
- No unsupported performance or ranking claims.
- Publication and update dates are accurate.
This checklist does not guarantee rankings. It helps reduce avoidable technical and editorial problems.
Frequently Asked Questions
Is Astro good for SEO?
Yes. Astro is well suited to content-focused websites because it can generate HTML at build time and minimize unnecessary client-side JavaScript.
However, SEO success still depends on your implementation, content, website structure, performance, and competition.
Does Astro Automatically Generate a Sitemap?
Not by default in every project.
You can use the official @astrojs/sitemap integration to generate XML sitemap files for statically generated routes.
Do I Need an SEO Plugin for Astro?
Not necessarily.
Astro provides the building blocks for metadata, URLs, HTML output, and other SEO features.
You can implement many requirements with a shared layout and a small set of components.
The sitemap integration is particularly convenient because it removes the need to manually maintain an XML file.
How Long Does Google Take to Index an Astro Website?
There is no guaranteed timeline.
Indexing depends on discovery, crawl scheduling, content evaluation, technical accessibility, and other factors.
Use Google Search Console to investigate whether Google has discovered and indexed your URLs.
Can an Astro Blog Use Google AdSense?
Yes, an Astro website can integrate advertising code where the advertising platform’s requirements are satisfied.
However, using Astro does not guarantee approval for Google AdSense.
Ad eligibility also depends on account requirements, website quality, policy compliance, and other review factors.
Keep advertising placements from interfering with the reading experience, and pay attention to Core Web Vitals.
Will Perfect SEO Metadata Guarantee First-Page Rankings?
No.
Metadata helps describe your page, but search rankings involve many factors.
Useful content, relevance, website quality, competition, and searcher needs remain important.
Final Thoughts
Astro gives developers a strong technical foundation for building content-focused websites.
But the real advantage comes from combining that foundation with good engineering practices and useful content.
Start with the essentials:
- Make your pages crawlable.
- Use consistent, descriptive URLs.
- Provide accurate metadata.
- Generate an XML sitemap.
- Help search engines understand your content.
- Optimize real-world performance.
- Build meaningful internal links.
- Monitor indexing and search visibility.
Most importantly, focus on solving actual problems for your readers.
Technical SEO makes your content accessible. High-quality content gives people a reason to visit, read, and return.
The combination is far more valuable than optimizing either one in isolation.
Continue Learning
Build your website first:
How to Build an Astro Blog with Decap CMS and Cloudflare Pages
Learn how to create the publishing foundation, manage Markdown articles with Decap CMS, and deploy your website to Cloudflare Pages.
Official Documentation and Resources
- Astro Documentation
- Astro Sitemap Integration
- Astro Image and Assets API
- Google Search Central — Crawling and Indexing
- Google Search Central — Canonical URLs
- Google Search Central — Article Structured Data
- Google Search Central — Link Best Practices
- Core Web Vitals
- Cloudflare Pages — Astro Deployment
Disclosure: This tutorial includes references to third-party services and official documentation. It contains no paid endorsements or affiliate tracking links at publication.



