with one click
meridian
// Meridian 项目集成助手。当用户提到 Meridian、导航面板、看板配置、分析模块时触发。帮助用户通过 Claude Code 为 Meridian 仪表盘生成左侧导航、自定义面板和可视化模块。
// Meridian 项目集成助手。当用户提到 Meridian、导航面板、看板配置、分析模块时触发。帮助用户通过 Claude Code 为 Meridian 仪表盘生成左侧导航、自定义面板和可视化模块。
| name | meridian |
| description | Meridian 项目集成助手。当用户提到 Meridian、导航面板、看板配置、分析模块时触发。帮助用户通过 Claude Code 为 Meridian 仪表盘生成左侧导航、自定义面板和可视化模块。 |
一次只创建一个面板。 用户的每条指令只请求创建一个导航面板。绝对不要一次性为所有文件夹批量生成导航。每次只创建一个组件 + 注册到 page.tsx。
Meridian 是一个基于 Next.js 的本地 Web 应用,作为 Obsidian 知识库的可视化驾驶舱。
如果用户的 Obsidian Vault 中还没有 Meridian 项目代码(即找不到 05 工具箱/vault-pilot/ 目录),你需要从 GitHub 获取官方代码为你完成初次安装部署:
# 进入工具箱目录拉取代码
cd "05 工具箱"
git clone https://github.com/zephyrwang6/VaultPilot.git vault-pilot
cd vault-pilot
npm install
项目位置:05 工具箱/vault-pilot/(目录名为 vault-pilot,产品名为 Meridian)
启动方式:cd "05 工具箱/vault-pilot" && npm run dev -- --port 3001
访问地址:http://localhost:3001
vault-pilot/
├── app/
│ ├── page.tsx # 主页面(侧边栏 + 内容区)
│ ├── layout.tsx # 布局 + Inter 字体
│ ├── globals.css # 暗/浅双主题 + 玻璃态
│ ├── components/
│ │ ├── AgentPanel.tsx # Agent 面板(CLI + .claude.md + Skills)
│ │ ├── FoldersPanel.tsx # 文件夹面板(文件夹树 + 快捷指令)
│ │ ├── FolderAnalysisModal.tsx # 文件夹分析弹窗(4种视图)
│ │ ├── UsagePanel.tsx # Claude Code 用量统计
│ │ ├── DynamicPanel.tsx # 动态面板渲染器
│ │ └── Onboarding.tsx # 首次引导绑定
│ └── api/
│ ├── config/route.ts # 配置读写 + .claude.md
│ ├── vault/route.ts # 文件夹结构扫描
│ ├── skills/route.ts # Skills 库扫描
│ ├── claude/route.ts # 打开终端执行
│ ├── pick-folder/route.ts # 原生文件夹选择器
│ ├── folder-analysis/route.ts # 文件夹深度分析
│ └── usage/route.ts # Claude Code 用量数据
└── lib/types.ts # 核心类型定义
面板设计参考 05 工具箱/obsidian-dashboard/my-app/app/components/desktop/ 下的组件:
| 面板 | 参考文件 | 功能 |
|---|---|---|
| 总览 | OverviewPanel.tsx | 数据概况、最近文档、日程、任务 |
| 创作 | ContentPanel.tsx | 独立文章列表、专栏章节列表 |
| 计划 | GoalsPanel.tsx | 年度目标、周计划进度 |
| 复盘 | ReviewPanel.tsx | 本周产出统计进度条、完成任务 |
注意: 参考的是设计风格和功能布局。Meridian 使用自己的 CSS 类(glass-card 等),不用 shadcn/ui。数据必须从本地文件系统动态读取,不要硬编码。
| 类名 | 用途 |
|---|---|
glass-card | 玻璃态卡片容器 |
rounded-2xl p-5 | 标准卡片内边距 |
stat-value | 大号数字 |
text-violet-400 | 主色调图标 |
text-muted-foreground | 次要文字 |
bg-secondary/30 | 悬停/背景 |
stagger-children | 子元素交错动画 |
gradient-text | 渐变文字 |
| 端点 | 方法 | 说明 |
|---|---|---|
/api/config | GET | 读取配置 + .claude.md |
/api/vault | GET | 扫描 Vault 文件夹结构 |
/api/folder-analysis?path=... | GET | 深度分析指定文件夹 |
/api/skills | GET | 读取 Skills 列表 |
/api/usage | GET | Claude Code 用量统计 |
每次创建一个面板,按以下步骤:
# 读取 obsidian-dashboard 对应面板的设计
cat "05 工具箱/obsidian-dashboard/my-app/app/components/desktop/OverviewPanel.tsx"
在 05 工具箱/vault-pilot/app/components/ 下创建 XxxPanel.tsx:
/api/folder-analysis)或读文件获取组件模板:
'use client';
import { useState, useEffect } from 'react';
import { Loader2, SomeIcon } from 'lucide-react';
interface PanelProps {
vaultPath: string;
}
export function XxxPanel({ vaultPath }: PanelProps) {
const [data, setData] = useState<any>(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
fetch(`/api/folder-analysis?path=${encodeURIComponent(vaultPath + '/目标文件夹')}`)
.then(r => r.json())
.then(d => { setData(d); setLoading(false); })
.catch(() => setLoading(false));
}, [vaultPath]);
if (loading) return <div className="flex justify-center py-16"><Loader2 className="h-6 w-6 animate-spin text-muted-foreground" /></div>;
return (
<div className="space-y-5 stagger-children">
<div className="grid grid-cols-3 gap-3">
<div className="glass-card rounded-xl p-4">
<div className="stat-value text-2xl">数值</div>
<div className="text-[10px] text-muted-foreground">标签</div>
</div>
</div>
<div className="glass-card rounded-2xl p-5">
<div className="text-sm font-medium mb-3">标题</div>
<div className="space-y-1.5">{/* 列表项 */}</div>
</div>
</div>
);
}
修改 05 工具箱/vault-pilot/app/page.tsx,需要改 3 处:
// 1. 导入(在文件顶部 import 区域)
import { XxxPanel } from './components/XxxPanel';
// 2. 在 defaultNavItems 数组添加(约第 22 行)
{ id: 'xxx', label: '面板名', icon: SomeIcon },
// 3. 在 renderPanel() 的 switch 中添加 case(约第 107 行)
case 'xxx':
return <XxxPanel vaultPath={config.vaultPath} />;
完成后告知用户:已创建「XXX」面板,请刷新 http://localhost:3001 查看。
分析 Skill 使用日志,输出频率排行、满意度趋势、低频 Skill 清单。每周运行一次。 触发词:"分析 Skill 使用情况"、"Skill 周报"、"哪些 Skill 用得多"、"看看 Skill 数据"。 依赖 skill-logger 写入的 skill_usage_log.jsonl 日志文件。
记录一次 Skill 使用情况到日志文件。每次用完某个 Skill 后调用,追加一条使用记录。 触发词:"记录这次使用"、"记录用了 xxx"、"log skill"、"记录一下"(在使用完某个 Skill 之后)。 用于追踪 Skill 使用频率和满意度,为 skill-analyzer 提供数据。
飞书知识库文档管理工具。支持查看知识库目录结构、创建和保存文档、读取多维表格内容。当用户说"保存到飞书"、"写入飞书知识库"、"发布到飞书"、"查看飞书目录"、"读取飞书表格"时触发。适用于将 Obsidian 文档同步到飞书知识库,或读取飞书多维表格数据。
将零散的想法或原始文章转化为指定风格的公众号文章。
商单/甲方内容撰写助手。当用户提到"商单"、"甲方"、"brief"、"品牌合作"、"推广内容"、"恰饭"、"广告文"时触发此 Skill。也适用于用户发送了一段产品介绍/传播需求并要求据此创作内容的场景。覆盖小红书、公众号等平台的商业内容创作全流程:从 brief 分析、方案选型、大纲确认到正文撰写和审稿自查。
商单内容制作助手。根据品牌/产品的商业 brief,策划文章角度、整合素材、最终输出成品文章。当用户说"商单"、"brief"、"品牌合作"、"推广文章"、"恰饭"、"商业合作内容"时触发。支持:(1) 接收商单 brief 并分析传播要点,(2) 提供多种写作角度/方案供选择,(3) 整合用户提供的产品测试素材完善方案,(4) 学习用户提供的参考内容风格,(5) 调用 doc-coauthoring skill 输出最终文章。