[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81008":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":10,"openIssues":11,"contributorsCount":11,"subscribersCount":11,"size":11,"stars1d":11,"stars7d":11,"stars30d":11,"stars90d":11,"forks30d":11,"starsTrendScore":11,"compositeScore":11,"rankGlobal":8,"rankLanguage":8,"license":8,"archived":12,"fork":12,"defaultBranch":13,"hasWiki":14,"hasPages":12,"topics":15,"createdAt":8,"pushedAt":8,"updatedAt":16,"readmeContent":17,"aiSummary":18,"trendingCount":11,"starSnapshotCount":11,"syncStatus":19,"lastSyncTime":20,"discoverSource":21},81008,"api_spend_dashboard","pony-maggie\u002Fapi_spend_dashboard","pony-maggie",null,"Python",29,0,false,"main",true,[],"2026-06-12 02:04:09","# API Spend Dashboard\n\nLocal browser dashboard for tracking personal API and infrastructure usage costs.\n\n## 中文说明\n\n这是一个本地浏览器 dashboard，用来监控你自己的 API 和基础设施费用。后端运行在本机，读取 `.env` 里的配置和密钥，定时调用已启用平台的 API，把用量和费用快照写入本地 SQLite，然后在浏览器里展示总览、趋势、平台状态和缺配置提示。\n\n### 配置指南\n\n各平台 API Key、权限和 Google Cloud Billing Export 的开通步骤见 [API Key 与账单导出开通指南](docs\u002Fapi-keys-setup.zh.md)。\n\n### 截图\n\n![API Spend Dashboard 首页](img\u002F1.png)\n\n### 运行\n\n```bash\npython3 -m venv .venv\n.venv\u002Fbin\u002Fpython -m pip install -e \".[dev]\"\ncp .env.example .env\nscripts\u002Frestart-server.sh\n```\n\n打开 http:\u002F\u002F127.0.0.1:18765。\n\n`scripts\u002Frestart-server.sh` 会停止目标端口上已有的本项目 Uvicorn 进程，然后以前台方式启动 dashboard。使用时保持这个终端开着；要停止服务就按 `Ctrl+C`。如果要换端口：\n\n```bash\nPORT=18766 scripts\u002Frestart-server.sh\n```\n\n### 配置方式\n\n所有密钥都放在 `.env`，不会发送到前端浏览器。建议从 `.env.example` 复制一份 `.env`，然后只开启你已经准备好密钥的平台。\n\n`*_ENABLED` 是平台开关：\n\n- `false`：这个平台不参与定时同步，页面显示 `disabled`。\n- `true`：这个平台会参与定时同步；如果必需配置没填，页面显示 `missing_config`。\n\n后台同步间隔由 `SYNC_INTERVAL_HOURS` 控制，默认 6 小时。页面上的 `Sync now` 可以手动立即同步。\n\n### OpenAI API\n\n设置：\n\n```env\nOPENAI_ENABLED=true\nOPENAI_ADMIN_API_KEY=你的 OpenAI Platform key\n```\n\n这个 key 需要有读取 organization usage\u002Fcosts 的权限。如果你的账号需要指定组织 ID，再填写 `OPENAI_ORG_ID`。\n\n### ChatGPT Pro\n\nChatGPT Pro 没有官方 token 用量 API，所以这里只作为手动订阅成本记录。设置：\n\n```env\nCHATGPT_PRO_ENABLED=true\nCHATGPT_PRO_PRICE=你的订阅价格\nCHATGPT_PRO_CURRENCY=USD\n```\n\n还可以填写 `CHATGPT_PRO_PLAN_NAME`、`CHATGPT_PRO_BILLING_PERIOD`、`CHATGPT_PRO_RENEWAL_DATE`、`CHATGPT_PRO_NOTES`。\n\n### MiniMax\n\n设置：\n\n```env\nMINIMAX_ENABLED=true\nMINIMAX_API_KEY=你的 MiniMax key\nMINIMAX_BASE_URL=https:\u002F\u002Fwww.minimax.io\n```\n\n套餐名称、价格、开始日期和到期日期通过 `MINIMAX_PLAN_NAME`、`MINIMAX_PLAN_PRICE`、`MINIMAX_PLAN_START_DATE`、`MINIMAX_PLAN_END_DATE` 手动填写。\n\n### Gemini\n\nGemini 的准确费用通过 Google Cloud Billing Export 到 BigQuery 查询。需要先在 Google Cloud 里开启 Billing Export，然后设置：\n\n```env\nGEMINI_ENABLED=true\nGOOGLE_APPLICATION_CREDENTIALS=\u002Fpath\u002Fto\u002Fservice-account.json\nGCP_BILLING_PROJECT_ID=你的项目 ID\nGCP_BILLING_DATASET=你的 dataset\nGCP_BILLING_TABLE=你的 billing export 表\n```\n\n`GEMINI_SERVICE_FILTER` 用来匹配 billing export 里的服务名称，默认是 `Gemini API`。\n\n### 百度千帆\n\n设置：\n\n```env\nQIANFAN_ENABLED=true\nBAIDU_ACCESS_KEY_ID=你的 AK\nBAIDU_SECRET_ACCESS_KEY=你的 SK\n```\n\n建议使用只读权限的子用户 AK\u002FSK。可选地用 `QIANFAN_SERVICE_IDS` 和 `QIANFAN_APP_IDS` 限定查询范围，多个值用英文逗号分隔。\n\n### Brave Search\n\n设置：\n\n```env\nBRAVE_ENABLED=true\nBRAVE_API_KEY=你的 Brave Search API key\n```\n\nBrave 没有单独的费用查询接口，dashboard 会通过 quota header 估算用量，并用 `BRAVE_PRICE_PER_1000_REQUESTS` 估算费用。\n\n### DigitalOcean\n\n设置：\n\n```env\nDIGITALOCEAN_ENABLED=true\nDIGITALOCEAN_TOKEN=你的 DigitalOcean token\n```\n\n这个 token 需要能读取 billing\u002Fbalance。\n\n### 数据保存\n\n默认 SQLite 数据库路径是：\n\n```env\nDATABASE_URL=sqlite:\u002F\u002F\u002F.\u002Fdata\u002Fapi_spend.sqlite3\n```\n\n`data\u002F` 目录已被 git 忽略，只保存在本地。\n\n## Run\n\n```bash\npython3 -m venv .venv\n.venv\u002Fbin\u002Fpython -m pip install -e \".[dev]\"\ncp .env.example .env\nscripts\u002Frestart-server.sh\n```\n\nOpen http:\u002F\u002F127.0.0.1:18765.\n\nThe restart script stops any existing project Uvicorn process on the target port, then starts the dashboard in the foreground. Keep that terminal open while using the dashboard; press `Ctrl+C` to stop it. Runtime PID data is written under `.run\u002F`. To use a different port:\n\n```bash\nPORT=18766 scripts\u002Frestart-server.sh\n```\n\n## Configuration\n\nAll secrets live in `.env`. The frontend never receives provider credentials.\n\nStart from `.env.example` and enable only the providers you want to sync.\n\n### OpenAI API\n\nSet `OPENAI_ENABLED=true` and `OPENAI_ADMIN_API_KEY`. The key must have permission to read organization usage and costs. If your account requires an organization identifier, set `OPENAI_ORG_ID` too.\n\n### ChatGPT Pro\n\nSet `CHATGPT_PRO_ENABLED=true` and fill the manual plan metadata: `CHATGPT_PRO_PLAN_NAME`, `CHATGPT_PRO_PRICE`, `CHATGPT_PRO_CURRENCY`, `CHATGPT_PRO_BILLING_PERIOD`, `CHATGPT_PRO_RENEWAL_DATE`, and `CHATGPT_PRO_NOTES`.\n\nChatGPT Pro does not provide an official token usage API, so this dashboard tracks it as manually entered subscription metadata.\n\n### MiniMax\n\nSet `MINIMAX_ENABLED=true`, `MINIMAX_API_KEY`, and `MINIMAX_BASE_URL`. Fill the manual plan metadata with `MINIMAX_PLAN_NAME`, `MINIMAX_PLAN_PRICE`, `MINIMAX_PLAN_CURRENCY`, `MINIMAX_PLAN_START_DATE`, and `MINIMAX_PLAN_END_DATE`.\n\n### Gemini\n\nSet up Google Cloud Billing Export to BigQuery. Then set `GEMINI_ENABLED=true`, `GOOGLE_APPLICATION_CREDENTIALS`, `GCP_BILLING_PROJECT_ID`, `GCP_BILLING_DATASET`, and `GCP_BILLING_TABLE`.\n\nUse `GEMINI_SERVICE_FILTER` to control which exported billing rows are counted as Gemini spend.\n\n### Baidu Qianfan\n\nSet `QIANFAN_ENABLED=true`, `BAIDU_ACCESS_KEY_ID`, and `BAIDU_SECRET_ACCESS_KEY`. The AK\u002FSK pair needs Qianfan read permissions. Optional filters are available through `QIANFAN_SERVICE_IDS` and `QIANFAN_APP_IDS`.\n\n### Brave Search\n\nSet `BRAVE_ENABLED=true` and `BRAVE_API_KEY`. Cost is estimated from quota headers and the configured request price in `BRAVE_PRICE_PER_1000_REQUESTS`; set `BRAVE_CURRENCY` to match that price.\n\n### DigitalOcean\n\nSet `DIGITALOCEAN_ENABLED=true` and `DIGITALOCEAN_TOKEN`.\n\n## Data\n\nSQLite data is stored under `data\u002F` by default through `DATABASE_URL=sqlite:\u002F\u002F\u002F.\u002Fdata\u002Fapi_spend.sqlite3`. The `data\u002F` directory is ignored by git.\n","这是一个本地浏览器仪表盘，用于跟踪个人API和基础设施的使用成本。项目后端运行在本地机器上，通过读取`.env`文件中的配置与密钥，定时调用已启用平台的API获取用量和费用数据，并将这些信息存储于本地SQLite数据库中，以便在前端展示总览、趋势分析及平台状态等信息。该解决方案支持多种云服务提供商如OpenAI、MiniMax、百度千帆等，以及特定服务如ChatGPT Pro订阅记录。适合需要监控多来源API调用成本并希望保持敏感信息本地化的开发者或团队使用。",2,"2026-06-11 04:03:10","CREATED_QUERY"]