Domain specification for a personal daily monitoring dashboard. Defines all target panels (email, Feishu, Office, social, news, Twitter, code status, schedule,
复制下面这句话,粘贴给 Claude Code、Codex、Cursor 等 AI 编程工具,它会读取安装说明并在你确认后完成安装。
请阅读 https://ai.atlankj.com/install/asset/gh-personal-monitor-domain-856013cb39bc ,按照其中的说明把「personal-monitor-domain」安装到你(当前 AI 工具)中。执行前先告诉我将运行的命令和写入的位置,等我确认。
查看 AI 将读取的安装说明正在读取 GitHub 原文…
内容来自 GitHub 原始文件,由原作者维护。在 GitHub 查看
This skill defines WHAT the my-daily-monitor dashboard should do — the panels, data sources, APIs, and features that make up a personal daily monitoring system. Use this as a reference when creating new panels or deciding what to build next.
| # | Panel | Data Source | Priority | Status |
|---|---|---|---|---|
| 1 | Schedule / Calendar | Google Calendar API | P0 — Core | Implemented |
| 2 | Email Inbox | Gmail API (OAuth) | P0 — Core | Implemented |
| 3 | Feishu Messages | Feishu/Lark Open API | P0 — Core | Implemented |
| 4 | Stock Market | Finnhub API | P0 — Core | Implemented |
| 5 | News Feed | GNews / HackerNews | P0 — Core | Implemented |
| 6 | Code Status (CI/CD) | GitHub Actions API | P1 — Important | Implemented |
| 7 | Office Documents | Microsoft Graph API | P1 — Important | Implemented |
| 8 | Social Feed (Twitter) | Twitter API v2 | P1 — Important | Implemented |
| 9 | Daily Finance | Manual / Spreadsheet | P1 — Important | Implemented |
| 10 | Weather | OpenWeatherMap / wttr.in | P1 — Important | Implemented |
| 11 | World Clock | Built-in (no API) | P2 — Nice to Have | Implemented |
| 12 | Map | MapLibre GL | P2 — Nice to Have | Implemented |
| 13 | AI Insights | LLM API (Groq/Ollama) | P2 — Nice to Have | Implemented |
| 14 | Xiaohongshu | Web scraping / API | P2 — Nice to Have | Partial |
| 15 | DevOps | Server probes | P2 — Nice to Have | Implemented |
| 16 | Quick Links | Static config | P3 — Extra | Implemented |
| 17 | Live News | YouTube embed | P3 — Extra | Implemented |
| 18 | My Monitors | Custom keywords | P3 — Extra | Implemented |
Purpose: Show today's meetings, upcoming events, and agenda
API: Google Calendar API v3
GET /api/calendar?calendarId=primaryX-Gmail-Client-Id, X-Gmail-Client-Secret, X-Gmail-TokenData shape:
interface CalendarEvent {
id: string;
title: string;
startTime: string; // ISO 8601
endTime: string;
location?: string;
isAllDay?: boolean;
color?: string;
meetingLink?: string; // Zoom/Meet URL
}
Refresh interval: 5 minutes
Purpose: Show unread emails, sender, subject, snippet
API: Gmail API v1
GET /api/emails?maxResults=15&q=is:unreadX-Gmail-Client-Id, X-Gmail-Client-Secret, X-Gmail-TokenData shape:
interface EmailMessage {
id: string;
from: string;
subject: string;
snippet: string;
receivedAt: string;
unread: boolean;
labels?: string[];
}
Refresh interval: 2 minutes
Purpose: Show recent Feishu/Lark chat messages across all conversations
API: Feishu Open Platform API
GET /api/feishuX-Feishu-App-Id, X-Feishu-App-SecretData shape:
interface FeishuMessage {
id: string;
chatName: string;
chatType: string; // 'group' | 'p2p'
avatar: string;
senderName: string;
content: string;
imageUrl: string;
timestamp: string;
unread: boolean;
chatId: string;
recentMessages: FeishuRecentMsg[];
}
Refresh interval: 1 minute
Purpose: Track personal stock watchlist with prices, changes, sparklines
API: Finnhub Stock API
token=API_KEYGET /api/stocks?symbols=AAPL,MSFT,...Data shape:
interface StockQuote {
symbol: string;
name: string;
price: number | null;
change: number | null;
changePercent: number | null;
high: number | null;
low: number | null;
sparkline?: number[];
}
Default watchlist: AAPL, MSFT, GOOGL, AMZN, TSLA, NVDA, META
Refresh interval: 1 minute
Purpose: Aggregated headlines from multiple sources with threat classification
APIs:
https://gnews.io/api/v4 — 100 req/day freehttps://hacker-news.firebaseio.com/v0/ — unlimited, no keyData shape:
interface NewsArticle {
title: string;
description: string;
url: string;
source: string;
publishedAt: string;
image?: string;
threatLevel?: 'critical' | 'high' | 'medium' | 'low';
}
Refresh interval: 5 minutes
Purpose: Show GitHub Actions workflow runs — passed, failed, in-progress
API: GitHub REST API v3
GITHUB_TOKENGET /api/github?action=runs&owner=...&repo=.../repos/{owner}/{repo}/actions/runsData shape:
interface WorkflowRun {
id: number;
name: string;
status: string;
conclusion: string | null; // 'success' | 'failure' | 'cancelled'
branch: string;
createdAt: string;
url: string;
}
Refresh interval: 2 minutes
Purpose: Recent Office document activity (PPT, DOC, XLSX, PDF)
API: Microsoft Graph API
GET /api/office/me/drive/recentData shape:
interface OfficeDocument {
id: string;
name: string;
type: 'doc' | 'xlsx' | 'ppt' | 'pdf';
modifiedAt: string;
modifiedBy: string;
url?: string;
}
Refresh interval: 5 minutes
Note: Currently uses demo data. Full implementation requires Azure AD app registration with Files.Read permission.
Purpose: Twitter timeline + Xiaohongshu content
Twitter API v2:
GET /api/social?action=search&q=... or action=list&listId=...Xiaohongshu:
Data shape:
interface SocialPost {
id: string;
platform: 'twitter' | 'xiaohongshu';
author: string;
username?: string;
content: string;
timestamp: string;
likes?: number;
retweets?: number;
comments?: number;
url?: string;
}
Refresh interval: 3 minutes
Purpose: Track daily income and expenses, show balance
Data source options:
Data shape:
interface DailySummary {
totalIncome: number;
totalExpense: number;
balance: number;
transactions: FinanceTransaction[];
}
interface FinanceTransaction {
id: string;
description: string;
amount: number;
type: 'income' | 'expense';
category: string;
date: string;
}
Refresh interval: 10 minutes
The sidebar aggregates highlights from multiple panels into a single glanceable view:
interface TodayFocusData {
nextEvent?: { title: string; startTime: string; minutesUntil: number };
unreadEmails: number;
unreadFeishu: number;
stockAlerts: Array<{ symbol: string; changePercent: number }>;
ciFailures: number;
dailyBriefing?: string; // AI-generated summary
}
Dependencies: schedule, email, feishu, stock-market, code-status, ai-summary
Uses an LLM to synthesize a morning briefing from all data sources:
Input: Unread emails, today's events, top news headlines, stock movers Output: 2-3 paragraph natural language summary API: Groq (free, fast) or local Ollama
All API keys are stored in browser localStorage via a Settings modal:
| Key | Required For | How to Get |
|---|---|---|
FINNHUB_API_KEY | Stock Market | https://finnhub.io/ (free) |
GNEWS_API_KEY | News | https://gnews.io/ (free, 100/day) |
GMAIL_CLIENT_ID | Email + Calendar | Google Cloud Console OAuth |
GMAIL_CLIENT_SECRET | Email + Calendar | Google Cloud Console OAuth |
GMAIL_REFRESH_TOKEN | Email + Calendar | OAuth flow |
FEISHU_APP_ID | Feishu | Feishu Open Platform |
FEISHU_APP_SECRET | Feishu | Feishu Open Platform |
GITHUB_TOKEN | Code Status | GitHub → Settings → PAT |
TWITTER_BEARER_TOKEN | Social Feed | Twitter Developer Portal |
GROQ_API_KEY | AI Insights | https://console.groq.com/ |
Keys are passed to the server via request headers (never in query params), and the server-side proxy uses them to call external APIs.
This dashboard handles personal data. Key considerations:
Phase 1 (MVP): Schedule + Email + Feishu + Stock + News — the daily essentials Phase 2 (Complete): Code Status + Office + Social + Finance + Weather Phase 3 (Enhanced): Map + AI Insights + World Clock + Xiaohongshu Phase 4 (Polish): DevOps + Live News + Quick Links + My Monitors + Command Palette