Astro 站点管理 —— 代理知识
能力
你可以通过以下操作管理 Astro 静态站点:
- 创建、编辑和删除博客文章(内容集合中的 Markdown/MDX)
- 导入文档(.docx,.pdf)并将其转换为 Markdown
- 在
src/assets/中上传和组织图片 - 编辑组件(.astro)、布局和页面
- 编辑带有交互式组件的 MDX 文件
- 修改全局和组件级样式
- 将更改推送到 Git 以自动部署 Cloudflare Workers(或运行
npx wrangler deploy) - 运行 npm 命令(build,dev,add packages)
内容集合
内容集合使用 src/content/,并在 src/content/config.ts 中定义 schema。
博客文章
位置:src/content/blog/*.md 或 *.mdx
必需的 frontmatter:
---
title: "文章标题"
description: "SEO 描述"
pubDate: 2024-01-15
---
可选字段:updatedDate,heroImage,draft,tags
创建文章
- 将带有 frontmatter 的 Markdown 文件写入
src/content/blog/<slug>.md - 将图片放入
src/assets/<slug>/ - 引用图片:
 - Git add,commit,push 以部署
查询内容集合
在 .astro 页面中:
---
import { getCollection } from "astro:content";
const posts = await getCollection("blog");
const sorted = posts.sort((a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf());
---
组件模式
基本 .astro 组件
---
const { title, class: className } = Astro.props;
---
<section class:list={["section", className]}>
<h2>{title}</h2>
<slot />
</section>
<style>
.section { padding: 2rem; }
</style>
布局模式
---
import BaseHead from "../components/BaseHead.astro";
import Header from "../components/Header.astro";
import Footer from "../components/Footer.astro";
const { title, description } = Astro.props;
---
<html lang="en">
<head><BaseHead title={title} description={description} /></head>
<body>
<Header />
<main><slot /></main>
<Footer />
</body>
</html>
动态路由
文件: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();
---
<Content />
安全规则
- 绝不删除
.git目录 - 除非重新安装,否则绝不删除
node_modules/或package-lock.json - 绝不强制推送(
git push --force) - 绝不推送到配置的部署分支以外的其他分支
- 未经用户明确要求,不得修改
astro.config.mjs或wrangler.toml - 绝不在项目根目录运行
rm -rf - 删除任何组件或页面文件前需请求确认
常见任务
添加一篇博客文章
write_file创建src/content/blog/<slug>.md,包含 frontmatter 和内容git_operationsstatus → add → commit → push
导入文档
convert_document使用上传的文件路径read_file读取生成的 Markdown 以审查- 如有需要,使用
write_file编辑 frontmatter git_operationsadd → commit → push
编辑组件
read_file读取组件以理解当前代码write_file写入更新后的组件git_operationsadd → commit → push
修改站点样式
read_file读取相关的 CSS 文件或组件write_file写入更新后的样式git_operationsadd → commit → push
上传图片
- 使用
write_file或run_command将图片保存到src/assets/<folder>/ - 在 Markdown 中引用:
 - 或在 .astro 中:
import img from "~/assets/<folder>/image.jpg"

