NuxtVue博客

blogTemplate — Nuxt 博客模板

作者 Mitch-Coding

基于 Nuxt 3 的作品集与技术博客模板,包含漫画风格首页、@nuxt/content 驱动的 Markdown 博客、RSS/sitemap/robots 路由、主题切换与可选的服务端 AI 助手接口。

看看你的网站会是什么样

浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。

3 个预览视图
桌面端首页1 / 3
桌面端截图首屏预览

由服务器浏览器实际访问页面后截取。

全部页面与视图 3

截图用于了解视觉与布局,交互效果请以实际项目为准。

采集于 2026-10-13查看来源

值得关注的模板亮点

从已有项目资料中,快速了解它的特点。

01

漫画风格首页,区块文案与导航集中在 content/site/home.config.ts 配置

02

基于 @nuxt/content 的 Markdown 博客,支持分类、标签、RSS、sitemap 与 canonical URL

03

深色/浅色主题切换,首页文案支持 zh/en 语言状态

04

可选 AI 助手通过 Nitro 服务端路由调用 DeepSeek,避免前端暴露密钥

05

示例 CI workflow 覆盖 typecheck、build 与 Playwright smoke tests

模板详细介绍

这是一个基于 Nuxt 3 的开源作品集与技术博客模板,采用 MIT 许可。首页为漫画风格,包含 Hero 首屏、姓名拆解、About、技能、项目与联系等区块,文案与区块内容集中在 content/site/home.config.ts 中配置。博客部分由 @nuxt/content 驱动,文章以 Markdown 文件存放在 content/blog/,支持分类、标签、RSS、sitemap 与 canonical URL。模板提供深色/浅色主题切换,首页文案支持 zh/en 语言状态。AI 助手为可选功能,通过服务端 API 调用 DeepSeek,未配置密钥时实时回复不可用。项目包含示例 CI workflow,覆盖 typecheck、build 和 Playwright smoke tests,当前没有单元测试套件。

Nuxt博客

适合你的项目吗?

适用场景

  • 搭建个人作品集与技术博客,用 Markdown 撰写文章并输出 RSS 与 sitemap
  • 需要一个漫画风格首页、可配置区块文案与项目展示的站点
  • 在服务端安全接入 AI 助手,由后端持有 API 密钥
  • 部署到 Cloudflare Pages、Vercel 或 Netlify 等支持 Node.js 20+ 的平台

适合人群

  • 熟悉 Nuxt 3 与 Vue 3、愿意通过配置文件调整站点内容的开发者
  • 需要作品集与技术博客结合的个人站点作者
  • 希望用 Markdown 管理博客内容并保留 RSS/sitemap 输出的用户
  • 需要主题切换与中英双语首页文案的站点

上手与定制指南

结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。

  1. 1

    本地开发:npm install 后运行 npm run dev,默认地址为 http://127.0.0.1:3000

  2. 2

    复制 .env.example 为 .env,不要提交 .env;真实密钥配置在部署平台的 Secrets / Environment Variables

  3. 3

    推荐配置 NUXT_PUBLIC_SITE_URL,用于 RSS、sitemap、robots、canonical 和 Open Graph URL

  4. 4

    启用 AI 助手需配置 DEEPSEEK_API_KEY,不配置时实时 AI 回复不可用

  5. 5

    构建与验证:npm run lint、npm run typecheck、npm run build、npm run test;部署构建命令为 npm run build,Node.js 20 或更高版本

查看仓库使用说明

授权与来源资料

使用条件与限制

免费使用 · 保留许可声明

本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。

使用时需要遵守

  • 允许免费使用、修改、商用和分发该版本代码。
  • 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
  • 代码按现状提供;担保与责任限制以原许可证及适用法律为准。

额外费用与待核对事项

  • 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
  • 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
  • AI 助手为可选功能;只有配置 DEEPSEEK_API_KEY 后才能获得真实 AI 回复,未配置时实时 AI 回复不可用。
  • 使用 AI 助手需自行提供 DeepSeek API 密钥,并须将其配置在部署平台的 Secrets/环境变量中,不得写入代码。
  • 若在 public/ 放置简历 PDF,须确认其为可公开发布版本,避免提交含隐私信息的简历。
  • 替换图片资源时不得提交个人身份证件、后台截图、二维码、私有域名截图或含 token 的截图。
  • 使用第三方图片前须自行确认其许可证允许公开使用。
  • 公开仓库前需运行 secret scan 检查密钥泄露。
  • 若 git 历史含真实密钥、隐私或不可公开内容,须先用 git filter-repo/BFG 重写历史并轮换已暴露密钥。
查看原文依据

Permission is hereby granted, free of charge

许可证原文

如果要启用真实 AI 回复,需要配置: ```text DEEPSEEK_API_KEY=your_deepseek_api_key_here ```

README 原文

部署时请把真实 key 放到部署平台的 Secrets / Environment Variables,不要写进代码。

README 原文

不要提交包含隐私信息的简历,除非你确认它就是要公开发布的版本。

README 原文

不要提交个人身份证件、后台截图、二维码、私有域名截图、含 token 的截图

README 原文

第三方图片要确认 license 允许公开使用

README 原文

公开仓库前请运行 secret scan。

README 原文

如果历史提交里出现过真实密钥、个人隐私、私有截图或不可公开内容,需要先使用 `git filter-repo`、BFG Repo-Cleaner 等工具重写历史,并轮换已经暴露的密钥。

README 原文
https://github.com/Mitch-Coding/blogTemplate/blob/main/LICENSEhttps://github.com/Mitch-Coding/blogTemplate/blob/main/README.md

DeepSeek 根据仓库许可证和 README 整理 ·2026-10-13。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。

项目核对记录与介绍依据

模板资料

来源平台
GitHub
资料与维护参考分
资料较完整 · 83 / 100
技术栈
Nuxt · Vue
网站类型
博客
这个分数如何计算

本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。

这个项目需要核对什么

记录的仓库更新时间
2026-04-28
截图检查日期
2026-10-13

已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。

目录记录的主要技术栈是 Nuxt。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。

查看具体选型方法 →

介绍的制作与核对状态

介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。

审核声明: [email protected] · 2026-10-13

查看当时使用的来源资料

SHA-256: 85ca40aaf90c5ffa9c77376031bccb0d18ce83032ce78d5b271310a7b012fb15

2026-10-13T08:52:40.152Z

来源文件 / 仓库

[MITCH](https://xiaomaizhi.me/)  

模板效果: [example.dev](https://blogtemplate-67j.pages.dev/)  

# Nuxt Content Portfolio Blog

一个基于 Nuxt 3 的开源作品集与技术博客模板。项目包含漫画风格首页、`@nuxt/content` 驱动的 Markdown 博客、RSS / sitemap / robots 路由、主题切换、语言状态,以及可选的服务端 AI 助手接口。

## 技术栈

- Nuxt 3
- Vue 3
- TypeScript
- `@nuxt/content`
- SCSS
- Nitro server routes
- Playwright smoke tests
- 可选 DeepSeek API 集成

## 功能特性

- 可配置的作品集首页
- Markdown 博客文章,支持分类、标签、RSS、sitemap 和 canonical URL
- 深色 / 浅色主题切换
- 首页文案支持 zh / en 语言状态
- 可选 AI 助手,通过服务端 API 调用,避免前端暴露密钥
- 示例 CI workflow,覆盖 typecheck、build 和 smoke tests

## 本地开发

```bash
npm install
npm run dev
```

开发服务器默认运行在:

```text
http://127.0.0.1:3000
```

## 环境变量

本地开发时可以复制 `.env.example` 为 `.env`。不要提交 `.env`。

| 变量名 | 是否必需 | 说明 |
| --- | --- | --- |
| `NUXT_PUBLIC_SITE_URL` | 推荐配置 | 站点公开地址,用于 RSS、sitemap、robots、canonical 和 Open Graph URL。 |
| `DEEPSEEK_API_KEY` | 可选 | 启用 AI 助手接口。不配置时实时 AI 回复不可用。 |
| `PORTFOLIO_SYSTEM_PROMPT` | 可选 | 覆盖默认示例 AI 助手提示词。 |

`.env.example` 只应保留安全示例值。真实密钥请配置在部署平台的 Secrets / Environment Variables 中。

## 构建与验证

```bash
npm run lint
npm run typecheck
npm run build
npm run test
```

当前没有单元测试套件。现有 Playwright 测试主要用于 smoke check,覆盖首页、博客页、RSS、sitemap 和 robots 路由。

## 部署说明

生产构建:

```bash
npm run build
```

本地预览生产构建:

```bash
npm run preview
```

部署到 Cloudflare Pages、Vercel、Netlify 等平台时,通常配置:

- Build command:`npm run build`
- Node.js:20 或更高版本
- 环境变量:参考 `.env.example`

## 目录结构

```text
assets/styles/          SCSS 设计令牌、基础样式和功能样式
components/             按功能分组的 Vue 组件
composables/            共享 Vue 组合式逻辑
content/blog/           Markdown 博客文章
content/site/           站点配置和首页配置
layouts/                Nuxt layouts
pages/                  Nuxt 页面和路由
public/                 静态资源
server/                 Nitro API 和 feed 路由
tests/                  Playwright smoke tests
types/                  共享 TypeScript 类型
utils/                  共享常量和工具函数
```

## 自定义站点

这一节按“小白也能改”的方式说明:想改哪里,就去哪个文件改。

### 1. 修改站点基础信息

文件:

```text
content/site/site.config.ts
```

常用字段:

```ts
export const SITE_CONFIG = {
  name: "Portfolio Blog Starter",
  title: "Portfolio Blog Starter",
  author: "Example Author",
  locale: "zh-CN",
  description: "一个基于 Nuxt 3 和 @nuxt/content 的开源作品集与技术博客模板。",
  blogTitle: "Portfolio Blog Starter | Blog",
  blogDescription: "Example technical notes for a Nuxt 3 portfolio blog starter.",
  keywords: [
    "portfolio blog",
    "Java backend",
    "AI application",
    "Nuxt 3",
  ],
}
```

你可以这样改:

- `name`:站点名称
- `title`:首页默认标题
- `author`:作者名
- `locale`:站点语言,例如 `zh-CN` 或 `en`
- `description`:站点描述,会影响 SEO
- `blogTitle`:博客页标题
- `blogDescription`:博客页描述
- `keywords`:SEO 关键词

### 2. 修改首页顶部导航

文件:

```text
content/site/home.config.ts
```

位置:

```ts
topbar: {
  brand: "AUTHOR",
  blogHref: "/blog.html",
  blogLabel: "Writing",
  issuesLabel: "Issues",
  navItems: [
    { href: "#about", label: "About" },
    { href: "#skills", label: "Skill Universe" },
    { href: "#projects", label: "Projects" },
    { href: "#contact", label: "Contact" },
  ],
}
```

可以改:

- `brand`:左上角品牌文字
- `blogLabel`:博客入口文字
- `issuesLabel`:移动端菜单按钮文字
- `navItems`:首页导航项

`href` 对应页面里的区块 id,例如 `#about`、`#skills`、`#projects`、`#contact`。

### 3. 修改 Hero 首页首屏

文件:

```text
content/site/home.config.ts
assets/styles/home/_hero.scss
public/your_name.png
```

文案位置:

```ts
meta: {
  title: "Example Author",
  description: "A comic-inspired portfolio and technical blog starter for a full-stack developer.",
},
hero: {
  stickerAriaLabel: "HELLO my name is Example Author",
  scrollLabel: {
    zh: "向下滑动",
    en: "Scroll Down",
  },
},
```

图片位置:

```text
public/your_name.png
```

Hero 贴纸背景图在这里引用:

```scss
/* assets/styles/home/_hero.scss */
url("/your_name.png");
```

如果你想换成自己的图片:

1. 把图片放到 `public/` 目录下,例如 `public/my-avatar.png`
2. 修改 `assets/styles/home/_hero.scss`

```scss
url("/my-avatar.png");
```

### 4. 修改姓名拆解区域

文件:

```text
content/site/home.config.ts
```

位置:

```ts
name: {
  eyebrow: "Issue 02 / Name Deconstruction",
  headingPrefix: "AUTHOR",
  summary: "FULL-STACK DEVELOPER TEMPLATE. Replace this section with your own positioning, skills, and story.",
  rows: [
    { letter: "A", keyword: "Architecture", translation: "系统架构" },
    { letter: "U", keyword: "Usability", translation: "用户体验" },
  ],
},
```

可以改:

- `eyebrow`:小标题
- `headingPrefix`:用于辅助说明的名称文本
- `summary`:这一栏右侧简介
- `rows`:每个字母对应的关键词和中文解释

如果你的名字不是 6 个字母,也可以增减 `rows`。页面会按 `rows` 渲染。

### 5. 修改 About Me 区域

文件:

```text
content/site/home.config.ts
```

位置:

```ts
about: {
  eyebrow: "Issue 03 / About Me",
  title: "ABOUT ME",
  promptLines: ["ASK ME", "SOMETHING"],
  facts: [
    {
      label: "What I do",
      body: {
        zh: "Java 后端开发与 AI 应用集成,从接口设计到生产部署全链路参与。",
        en: "Java backend development and AI application integration, end-to-end from API design to production deployment.",
      },
    },
  ],
}
```

可以改:

- `title`:区块标题
- `promptLines`:小蜘蛛提示气泡里的文字
- `facts`:个人介绍卡片
- `body.zh` / `body.en`:中英文介绍

### 6. 修改首页 AI 助手预设问题

文件:

```text
content/site/home.config.ts
```

位置:

```ts
about: {
  assistant: {
    defaultAnswer: { ... },
    defaultStatus: { ... },
    placeholder: { ... },
    questions: [
      {
        label: {
          zh: "你做过哪些 AI 应用项目?",
          en: "What AI application projects have you worked on?",
        },
        answer: {
          zh: "这是模板示例回答。",
          en: "This is a sample answer.",
        },
      },
    ],
  },
}
```

可以改:

- `defaultAnswer`:默认显示的回答
- `defaultStatus`:默认状态文字
- `emptyQuestion`:用户没输入问题时的提示
- `loadingStatus`:AI 请求中显示的提示
- `requestError`:请求失败时显示的提示
- `placeholder`:输入框 placeholder
- `questions`:页面上的快捷问题和预设回答

如果要启用真实 AI 回复,需要配置:

```text
DEEPSEEK_API_KEY=your_deepseek_api_key_here
```

部署时请把真实 key 放到部署平台的 Secrets / Environment Variables,不要写进代码。

### 7. 修改技能区标题

文件:

```text
content/site/home.config.ts
```

位置:

```ts
skills: {
  eyebrow: "Issue 04 / Skill Universe",
  title: "SKILL UNIVERSE",
},
```

可以改:

- `eyebrow`:小标题
- `title`:技能区主标题

### 8. 修改技能勋章

文件:

```text
utils/skills.ts
public/skill-icons/
```

当前模板把所有技能勋章统一轮为 3 个示例图标:

```ts
const OPEN_SOURCE_SKILL_ICONS = [
  "/skill-icons/git.svg",
  "/skill-icons/github.svg",
  "/skill-icons/simpleicons.svg",
] as const

const OPEN_SOURCE_SKILL_LABELS = [
  "Git",
  "GitHub",
  "Simple Icons",
] as const
```

如果你想换成自己的技能:

1. 把图标放到 `public/skill-icons/`
2. 修改 `OPEN_SOURCE_SKILL_ICONS`
3. 修改 `OPEN_SOURCE_SKILL_LABELS`

例如:

```ts
const OPEN_SOURCE_SKILL_ICONS = [
  "/skill-icons/vue.svg",
  "/skill-icons/typescript.svg",
  "/skill-icons/nodejs.svg",
] as const

const OPEN_SOURCE_SKILL_LABELS = [
  "Vue",
  "TypeScript",
  "Node.js",
] as const
```

注意:

- 图标路径必须以 `/skill-icons/` 开头
- 文件必须真实存在于 `public/skill-icons/`
- `OPEN_SOURCE_SKILL_ICONS` 和 `OPEN_SOURCE_SKILL_LABELS` 数量建议一致
- 当前勋章数量由 `SKILL_BADGES` 数组决定;一般只改图标和名称就够了

如果你要彻底增减技能数量,可以继续修改 `SKILL_BADGES`,但不建议初学者一开始就改,因为动画顺序和 CSS 定位也依赖 badge 编号。

如果不知道哪里找自己的技能图标,可以访问simple icons,里面又基本所有开发软件的图标  
链接 :  [](https://simpleicons.org/)  

### 9. 修改项目展示区

文件:

```text
content/site/home.config.ts
```

位置:

```ts
projects: {
  eyebrow: "Issue 05 / Selected Projects",
  title: "SELECTED PROJECTS",
  items: [
    {
      id: "content-starter",
      index: "01",
      title: "Content Starter",
      type: "Nuxt Content Blog",
      summary: "A markdown-powered blog with tags, RSS, sitemap, and SEO defaults.",
      impact: "SHIP",
      href: "https://example.com/projects/content-starter",
      variant: "pow",
    },
  ],
},
```

字段说明:

| 字段 | 说明 |
| --- | --- |
| `id` | 项目唯一标识,建议小写英文加连字符 |
| `index` | 卡片编号,例如 `01` |
| `title` | 项目名称 |
| `type` | 项目类型 |
| `summary` | 项目一句话介绍 |
| `impact` | 卡片上的漫画风格短词,例如 `SHIP`、`LIVE` |
| `href` | 点击卡片跳转地址 |
| `variant` | 卡片视觉样式,可用 `pow`、`bang`、`crash`、`wham` |

### 10. 修改联系区域

文件:

```text
content/site/home.config.ts
```

位置:

```ts
contact: {
  eyebrow: "Issue 06 / Contact",
  titleLines: ["LET’S", "BUILD", "SOMETHING"],
  copy: {
    zh: "这是开源模板的示例联系区域。",
    en: "This is a sample contact area.",
  },
  email: "[email protected]",
  githubUrl: "https://github.com/your-name",
  githubLabel: "github.com/your-name",
  linkedinUrl: "https://www.linkedin.com/in/your-name",
  linkedinLabel: "linkedin.com/in/your-name",
  resumePath: "https://example.com/resume.pdf",
}
```

可以改:

- `titleLines`:联系区大标题,每个字符串是一行
- `copy.zh` / `copy.en`:联系区介绍
- `statusItems`:当前可合作事项
- `statusMeta`:回复时间等补充信息
- `email`:公开邮箱
- `githubUrl` / `githubLabel`:GitHub 链接和展示文字
- `linkedinUrl` / `linkedinLabel`:LinkedIn 链接和展示文字
- `resumePath`:简历链接,可以是站外地址,也可以是 `public/` 下的 PDF

如果你想放本地 PDF:

1. 把 PDF 放到 `public/resume.pdf`
2. 设置:

```ts
resumePath: "/resume.pdf"
```

不要提交包含隐私信息的简历,除非你确认它就是要公开发布的版本。

### 11. 修改首页图片资源

常见图片位置:

```text
public/your_name.png                 Hero 贴纸背景图
public/about-spider-prompt.png       About 区提示图
public/about-spider.svg              About 区蜘蛛图
public/contact-megaphone.jpg         Contact 区装饰图
public/issue4-user-vector.svg        Skills 区背景图
public/skill-icons/                  技能图标
```

替换图片时注意:

- 新图片放到 `public/`
- 引用路径从 `/` 开始,例如 `/your_name.png`
- 不要提交个人身份证件、后台截图、二维码、私有域名截图、含 token 的截图
- 第三方图片要确认 license 允许公开使用

### 12. 修改博客文章

文件夹:

```text
content/blog/
```

每篇文章是一个 Markdown 文件,例如:

```text
content/blog/blog-writing-template.md
```

文章格式说明见:

```text
content/blog/blog-writing-template.md
```

新建文章时,复制里面的 frontmatter 模板即可。

### 13. 修改导航对应页面结构

首页区块对应组件:

```text
components/home/HomeHero.vue              Hero 首屏
components/home/HomeNameSection.vue       姓名拆解
components/home/HomeAboutSection.vue      About 和 AI 助手
components/home/HomeSkillsSection.vue     技能区
components/home/HomeProjectsSection.vue   项目区
components/home/HomeContactSection.vue    联系区
components/home/HomeTopbar.vue            首页导航
```

大多数情况下,只改 `content/site/home.config.ts` 就够了。

如果你想改结构、按钮、布局或交互,再改对应组件。

### 14. 修改样式

首页样式在:

```text
assets/styles/home/
```

常见文件:

```text
_hero.scss       Hero 首屏样式
_name.scss       姓名拆解样式
_about.scss      About 区样式
_skills.scss     技能区样式
_projects.scss   项目区样式
_contact.scss    联系区样式
_responsive.scss 响应式样式
```

全局样式和主题变量:

```text
assets/styles/tokens.scss
assets/styles/base.scss
```

如果只是改文字和链接,不需要动样式文件。

### 15. 修改 SEO 和部署域名

本地 `.env` 或部署平台环境变量:

```text
NUXT_PUBLIC_SITE_URL=https://example.com
```

上线前必须改成你的正式域名,例如:

```text
NUXT_PUBLIC_SITE_URL=https://your-site.com
```

这个值会影响:

- canonical URL
- RSS 链接
- sitemap 链接
- robots.txt
- Open Graph URL

## 博客写作

`content/blog/blog-writing-template.md` 是文章写作模板,说明了每个 frontmatter 字段的含义,以及正文 Markdown 推荐格式。

新增文章时建议检查:

- `slug` 是否唯一
- `date` 是否使用 `YYYY-MM-DD`
- `pinned` 是否为 `true` 或 `false`
- 图片路径是否存在
- 内容是否包含不应公开的个人信息、密钥、私有域名或后台截图

## 安全说明

公开仓库前请运行 secret scan。

普通文件修改不会清理 git 历史。如果历史提交里出现过真实密钥、个人隐私、私有截图或不可公开内容,需要先使用 `git filter-repo`、BFG Repo-Cleaner 等工具重写历史,并轮换已经暴露的密钥。

## License

MIT License。详见 `LICENSE`。
反馈内容错误

看看同类模板

对比同技术栈与用途的模板,找到更适合的视觉与内容结构。