← All skills
Tencent SkillHub Β· Developer Tools

Astro

Deploy multilingual static websites on Cloudflare with Astro using markdown sources, supporting i18n, free hosting, and Git-based or direct deployment.

skill openclawclawhub Free
0 Downloads
0 Stars
0 Installs
0 Score
High Signal

Deploy multilingual static websites on Cloudflare with Astro using markdown sources, supporting i18n, free hosting, and Git-based or direct deployment.

⬇ 0 downloads β˜… 0 stars Unverified but indexed

Install for OpenClaw

Quick setup
  1. Download the package from Yavira.
  2. Extract the archive and review SKILL.md first.
  3. Import or place the package into your OpenClaw setup.

Requirements

Target platform
OpenClaw
Install method
Manual import
Extraction
Extract archive
Prerequisites
OpenClaw
Primary doc
SKILL.md

Package facts

Download mode
Yavira redirect
Package format
ZIP package
Source platform
Tencent SkillHub
What's included
SKILL.md, _meta.json, scripts/astro-i18n-check.py, scripts/astro-new-post.py

Validation

  • Use the Yavira download entry.
  • Review SKILL.md after the package is downloaded.
  • Confirm the extracted package contains the expected setup assets.

Install with your agent

Agent handoff

Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.

  1. Download the package from Yavira.
  2. Extract it into a folder your agent can access.
  3. Paste one of the prompts below and point your agent at the extracted folder.
New install

I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.

Upgrade existing

I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.

Trust & source

Release facts

Source
Tencent SkillHub
Verification
Indexed source record
Version
1.0.1

Documentation

ClawHub primary doc Primary doc: SKILL.md 22 sections Open source page

Astro Static Site Generator

Deploy multilingual static websites for free on Cloudflare using Astro framework.

Prerequisites

Node.js 20+ installed Cloudflare account (free) Git repository (GitHub, GitLab, or Bitbucket)

1. Create Project

npm create astro@latest my-site -- --template minimal cd my-site npm install

2. Configure for Cloudflare

Static Sites (Recommended for most use cases) No adapter needed. Use default static output: // astro.config.mjs import { defineConfig } from 'astro/config'; export default defineConfig({ site: 'https://your-site.pages.dev', }); SSR/Edge Functions (Optional) If you need server-side rendering or edge functions: npm install @astrojs/cloudflare // astro.config.mjs import { defineConfig } from 'astro/config'; import cloudflare from '@astrojs/cloudflare'; export default defineConfig({ output: 'server', adapter: cloudflare(), site: 'https://your-site.pages.dev', });

3. Deploy to Cloudflare

Git Integration (Recommended) Push to GitHub/GitLab Cloudflare Dashboard β†’ Pages β†’ Create project β†’ Connect to Git Configure: Build command: npm run build Build output: dist Direct Upload # Deploy (authenticate via Cloudflare dashboard or wrangler) npx wrangler pages deploy dist

Astro Config

// astro.config.mjs export default defineConfig({ i18n: { defaultLocale: 'en', locales: ['en', 'es', 'fr', 'de'], routing: { prefixDefaultLocale: false, // /about instead of /en/about }, }, }); Routing Modes: SettingURL StructureBest ForprefixDefaultLocale: false/about, /es/aboutDefault locale at rootprefixDefaultLocale: true/en/about, /es/aboutAll locales prefixed

Content Structure

src/content/ β”œβ”€β”€ config.ts # Content collection schema └── docs/ β”œβ”€β”€ en/ β”‚ β”œβ”€β”€ index.md β”‚ └── guide.md β”œβ”€β”€ es/ β”‚ β”œβ”€β”€ index.md β”‚ └── guide.md └── fr/ β”œβ”€β”€ index.md └── guide.md

Content Collection Schema

// src/content/config.ts import { defineCollection, z } from 'astro:content'; const docs = defineCollection({ type: 'content', schema: z.object({ title: z.string(), description: z.string(), lang: z.enum(['en', 'es', 'fr', 'de']), }), }); export const collections = { docs }; Note: Run npx astro sync after adding content collections to generate types.

Language Switcher Component

--- // src/components/LanguageSwitcher.astro const languages = { en: 'English', es: 'EspaΓ±ol', fr: 'FranΓ§ais', de: 'Deutsch', }; const currentPath = Astro.url.pathname; const currentLang = Astro.currentLocale || 'en'; --- <select onchange="window.location = this.value"> {Object.entries(languages).map(([code, name]) => ( <option value={`/${code}${currentPath}`} selected={code === currentLang} > {name} </option> ))} </select>

File Structure

my-site/ β”œβ”€β”€ astro.config.mjs # Astro configuration β”œβ”€β”€ package.json β”œβ”€β”€ public/ β”‚ β”œβ”€β”€ favicon.svg β”‚ └── _redirects # Cloudflare redirects (optional) β”œβ”€β”€ src/ β”‚ β”œβ”€β”€ components/ β”‚ β”‚ └── LanguageSwitcher.astro β”‚ β”œβ”€β”€ content/ β”‚ β”‚ β”œβ”€β”€ config.ts β”‚ β”‚ └── blog/ β”‚ β”‚ β”œβ”€β”€ en/ β”‚ β”‚ └── es/ β”‚ β”œβ”€β”€ layouts/ β”‚ β”‚ └── BaseLayout.astro β”‚ └── pages/ β”‚ β”œβ”€β”€ index.astro β”‚ β”œβ”€β”€ en/ β”‚ β”‚ └── index.astro β”‚ └── es/ β”‚ └── index.astro

Cloudflare Pages Settings

SettingValueBuild commandnpm run buildBuild outputdistNode version20EnvironmentNODE_VERSION=20

Custom Domain

Cloudflare Dashboard β†’ Pages β†’ your-site β†’ Custom domains β†’ Add domain

Redirects

Create public/_redirects: / /en/ 302 /old-page /new-page 301

Commands Reference

CommandDescriptionnpm run devStart dev servernpm run buildBuild for productionnpm run previewPreview production buildnpx astro syncGenerate content collection typesnpx wrangler loginAuthenticate with Cloudflarenpx wrangler pages deploy distDeploy to Cloudflare

Blog with Content Collections

--- // src/pages/blog/[...slug].astro import { getCollection } from 'astro:content'; export async function getStaticPaths() { const posts = await getCollection('blog'); return posts.map(post => ({ params: { slug: post.slug }, props: { post }, })); } const { post } = Astro.props; const { Content } = await post.render(); --- <article> <h1>{post.data.title}</h1> <Content /> </article>

Build Fails on Cloudflare

Set NODE_VERSION=20 in Cloudflare Pages environment variables.

404 on Nested Routes

// astro.config.mjs export default defineConfig({ trailingSlash: 'always', });

i18n Not Working

Ensure: Locales match folder names exactly Content files have correct lang frontmatter Run npx astro sync after creating content collections

Content Collection Type Errors

Run npx astro sync to generate TypeScript types.

Resources

Astro Docs Cloudflare Pages Docs Astro i18n Guide Cloudflare Adapter

Scripts

ScriptDescriptionastro-new-post.pyCreate multilingual blog postsastro-i18n-check.pyValidate translation coverage

Script Usage

# Create a new post in multiple languages python scripts/astro-new-post.py --title "My Post" --langs en,es,fr # Create with author and tags python scripts/astro-new-post.py --title "Tutorial" --langs en,es --author "John" --tags tutorial,astro # Check translation coverage python scripts/astro-i18n-check.py --langs en,es,fr # Check specific content directory python scripts/astro-i18n-check.py --content-dir src/content/blog --langs en,es # Output as JSON python scripts/astro-i18n-check.py --langs en,es,fr --json All scripts use only Python standard library (no dependencies).

Category context

Code helpers, APIs, CLIs, browser automation, testing, and developer operations.

Source: Tencent SkillHub

Largest current source with strong distribution and engagement signals.

Package contents

Included in package
2 Scripts1 Docs1 Config
  • SKILL.md Primary doc
  • scripts/astro-i18n-check.py Scripts
  • scripts/astro-new-post.py Scripts
  • _meta.json Config