在博客中添加 Umami 数据展示

ShinX 发布于 2025-08-17
笔记

最近,我在使用 Nuxt 重构我的博客。在 关于 页面上,我参考了 安知鱼 的布局。其中有一个访问数据统计卡片,原本使用的是 51LA。起初我也尝试过在 Nuxt 中添加它,但发现官方挂件在 Nuxt 中不好直接使用。

安知鱼-访问统计

尝试无果后,我想到了自己两年前搭建的 Umami 统计服务。

Umami 搭建

我使用的是 Vercel 部署,搭建步骤如下(你也可以选择其他服务商):

  1. Fork 官方 GitHub 仓库 umami-software/umami

  2. 在 Vercel 中创建数据库:

    • 打开 Storage 选项卡,创建 PostgreSQL 数据库。

    vercel-storage

  3. 新建项目,选择刚 fork 的仓库。

    • 添加环境变量 DATABASE_URL,值为刚创建的数据库地址。例如:
      postgresql://username:password@localhost:5432/mydb
      

到这里,Umami 就部署完成了。本文重点不在部署细节,所以这里只简单说明 😺。

API 简介

Umami 提供了丰富的 API,可参考 官方文档

API 功能
POST /api/auth/login 获取用户信息
GET /api/websites/:websiteId 获取网站信息
GET /api/websites/:websiteId/stats 获取访问量
GET /api/websites/:websiteId/metrics 获取文章阅读量

获取 Token

使用 API 之前,需要先获取账号 Token
通过 POST /api/auth/login 发送账号密码即可获取:

{
  "username": "your-username",
  "password": "your-password"
}

返回示例:

{
  "token": "Mcfd5PaVC4cMDSJw51j...dvM+gvwvuDw==",
  "user": {
    "id": "7d7cf1f3-4d81-4a6b-8257-57a2ee4629a2",
    "username": "visitor",
    "createdAt": "2025-08-17T03:19:58.646Z"
  }
}

这里分享一个简单的 Python 脚本示例,用于获取 Token:

在 Nuxt 页面中使用 API

获取到 Token 后,在需要使用的页面中添加如下代码:

页面中可用变量:

statsToday.visitors.value 今日访问人数
statsToday.pageviews.value 今日访问量
statsYesterday.visitors.value 昨日访问人数
statsYesterday.pageviews.value 昨日访问量
statsTotal.pageviews.value 本月访问总量
statsTotal.pageviews.value 总访问量
评论
© 2025 ShinX. All rights reserved.