{
  "components": [
    {
      "details": [
        "最近一次執行心跳：2026-09-17 12:01:24"
      ],
      "id": "pipeline",
      "label": "正常",
      "name": "主排程與輸出",
      "status": "ok",
      "summary": "定期 pipeline 已產生公開資料快照。"
    },
    {
      "details": [
        "已收錄貼文：4703",
        "監看帳號：67"
      ],
      "id": "public-api",
      "label": "正常",
      "name": "公開 API",
      "status": "ok",
      "summary": "candidates.json 有 13 位候選人，sources.json 有 55 個監看帳號。"
    },
    {
      "details": [
        "HTTP：200",
        "耗時：9 ms"
      ],
      "id": "rsshub",
      "label": "正常",
      "name": "RSSHub 服務",
      "status": "ok",
      "summary": "http://127.0.0.1:1200 回應 正常。"
    },
    {
      "details": [
        "最新抓取時間：2026-09-17 12:00:44",
        "IG 節流：每來源至少間隔 12 小時抓取一次，避免消耗 RSSHub 的 IG_COOKIE 額度。"
      ],
      "id": "instagram-threads",
      "label": "部分異常",
      "name": "Instagram / Threads / X RSSHub",
      "status": "degraded",
      "summary": "12 個 Instagram、9 個 Threads、3 個 X 來源；過去 24 小時 1 個錯誤。"
    },
    {
      "details": [
        "最近成功 run：2026-09-16 18:01:07",
        "本月已花費：$2.50 / 目標 $4.75",
        "單次預估花費：$0.21",
        "pacing 判斷：not due yet (pace ~every 30.9h, next at 2026-09-17T16:56:03+00:00; ~$2.50 of $4.75 spent)"
      ],
      "id": "facebook-apify",
      "label": "節流中",
      "name": "Facebook Apify",
      "status": "paused",
      "summary": "14 個 Facebook 來源。 目前依預算 pacing 暫停開 run。"
    },
    {
      "details": [
        "已收錄影片：667"
      ],
      "id": "youtube",
      "label": "正常",
      "name": "YouTube yt-dlp",
      "status": "ok",
      "summary": "10 個 YouTube 來源；過去 24 小時 0 個錯誤。"
    },
    {
      "details": [
        "官網結構各異，每站需要個別撰寫解析邏輯；沒有 adapter 的官網不計入可抓取來源。"
      ],
      "id": "official-site",
      "label": "正常",
      "name": "候選人官網",
      "status": "ok",
      "summary": "6 個候選人官網已列入監看，6 個有逐站 adapter，已收錄 131 篇。"
    },
    {
      "details": [
        "逾期：蔣萬安（chiang-wa-yt，YouTube）：最新內容 2026-07-16（門檻 60 天）",
        "帳號沉寂：蔣萬安（chiang-wa-x，X）：帳號最新發文 2026-01-25，早於收錄視窗",
        "抓不到內容或內容逾期，請查證後在 watchlist_accounts.csv 修正或停用；帳號沉寂只是該帳號久未發文，不需處理。"
      ],
      "id": "source-health",
      "label": "部分異常",
      "name": "來源收錄健康",
      "status": "degraded",
      "summary": "49 個社群來源中，0 個抓不到內容、1 個超過門檻天數沒有新內容、1 個帳號沉寂。"
    }
  ],
  "generatedAt": "2026-09-17T12:01:24+08:00",
  "metrics": {
    "candidates": 13,
    "currentErrors": 1,
    "latestPostAt": "2026-09-17T03:27:45+00:00",
    "postsByPlatform": {
      "facebook": 1409,
      "instagram": 1342,
      "podcast": 7,
      "threads": 1139,
      "website": 131,
      "x": 8,
      "youtube": 667
    },
    "totalPosts": 4703,
    "watchAccounts": 67
  },
  "overall": {
    "label": "部分異常",
    "status": "degraded",
    "summary": "核心 pipeline 有產出；需要注意：Instagram / Threads / X RSSHub、來源收錄健康。 Facebook Apify 目前依排程或預算節流。"
  },
  "recentErrors": [
    {
      "message": "rsshub fetch failed: HTTP 503: FetchError: [POST] &quot;https://www.instagram.com/graphql/query&quot;: 401 Unauthorized",
      "platform": "instagram",
      "recordedAt": "2026-09-11T11:12:22+00:00",
      "sourceId": "lee-sc-ig-main",
      "sourceName": "李四川（lee-sc-ig-main）"
    },
    {
      "message": "rsshub fetch failed: HTTP 503: FetchError: [POST] &quot;https://www.instagram.com/graphql/query&quot;: 401 Unauthorized",
      "platform": "instagram",
      "recordedAt": "2026-09-11T11:12:33+00:00",
      "sourceId": "huang-sj-ig",
      "sourceName": "黃世杰（huang-sj-ig）"
    },
    {
      "message": "rsshub fetch failed: HTTP 503: FetchError: [POST] &quot;https://www.instagram.com/graphql/query&quot;: 401 Unauthorized",
      "platform": "instagram",
      "recordedAt": "2026-09-11T11:12:44+00:00",
      "sourceId": "chang-sc-ig",
      "sourceName": "張善政（chang-sc-ig）"
    },
    {
      "message": "rsshub fetch failed: HTTP 503: FetchError: [POST] &quot;https://www.instagram.com/graphql/query&quot;: 401 Unauthorized",
      "platform": "instagram",
      "recordedAt": "2026-09-11T11:12:52+00:00",
      "sourceId": "ho-hc-ig",
      "sourceName": "何欣純（ho-hc-ig）"
    },
    {
      "message": "rsshub fetch failed: HTTP 503: FetchError: [POST] &quot;https://www.instagram.com/graphql/query&quot;: 401 Unauthorized",
      "platform": "instagram",
      "recordedAt": "2026-09-11T11:13:05+00:00",
      "sourceId": "chiang-cc-ig",
      "sourceName": "江啟臣（chiang-cc-ig）"
    },
    {
      "message": "rsshub fetch failed: HTTP 503: FetchError: [POST] &quot;https://www.instagram.com/graphql/query&quot;: 401 Unauthorized",
      "platform": "instagram",
      "recordedAt": "2026-09-11T11:13:15+00:00",
      "sourceId": "chen-tf-ig",
      "sourceName": "陳亭妃（chen-tf-ig）"
    },
    {
      "message": "rsshub fetch failed: HTTP 503: FetchError: [POST] &quot;https://www.instagram.com/graphql/query&quot;: 401 Unauthorized",
      "platform": "instagram",
      "recordedAt": "2026-09-11T11:13:27+00:00",
      "sourceId": "hsieh-lc-ig",
      "sourceName": "謝龍介（hsieh-lc-ig）"
    },
    {
      "message": "rsshub fetch failed: HTTP 503: FetchError: [POST] &quot;https://www.instagram.com/graphql/query&quot;: 401 Unauthorized",
      "platform": "instagram",
      "recordedAt": "2026-09-11T11:13:38+00:00",
      "sourceId": "lai-jl-ig",
      "sourceName": "賴瑞隆（lai-jl-ig）"
    },
    {
      "message": "rsshub fetch failed: HTTP 503: FetchError: [POST] &quot;https://www.instagram.com/graphql/query&quot;: 401 Unauthorized",
      "platform": "instagram",
      "recordedAt": "2026-09-11T11:13:50+00:00",
      "sourceId": "ko-ce-ig",
      "sourceName": "柯志恩（ko-ce-ig）"
    },
    {
      "message": "rsshub fetch failed: HTTP 503: FetchError: [POST] &quot;https://www.instagram.com/graphql/query&quot;: 401 Unauthorized",
      "platform": "instagram",
      "recordedAt": "2026-09-12T04:00:50+00:00",
      "sourceId": "lee-sc-ig-main",
      "sourceName": "李四川（lee-sc-ig-main）"
    },
    {
      "message": "rsshub fetch failed: HTTP 503: FetchError: [POST] &quot;https://www.instagram.com/graphql/query&quot;: 401 Unauthorized",
      "platform": "instagram",
      "recordedAt": "2026-09-12T04:01:03+00:00",
      "sourceId": "huang-sj-ig",
      "sourceName": "黃世杰（huang-sj-ig）"
    },
    {
      "message": "rsshub fetch failed: HTTP 503: FetchError: [POST] &quot;https://www.instagram.com/graphql/query&quot;: 401 Unauthorized",
      "platform": "instagram",
      "recordedAt": "2026-09-12T04:01:15+00:00",
      "sourceId": "chang-sc-ig",
      "sourceName": "張善政（chang-sc-ig）"
    },
    {
      "message": "rsshub fetch failed: HTTP 503: FetchError: [POST] &quot;https://www.instagram.com/graphql/query&quot;: 401 Unauthorized",
      "platform": "instagram",
      "recordedAt": "2026-09-12T04:01:23+00:00",
      "sourceId": "ho-hc-ig",
      "sourceName": "何欣純（ho-hc-ig）"
    },
    {
      "message": "rsshub fetch failed: HTTP 503: FetchError: [POST] &quot;https://www.instagram.com/graphql/query&quot;: 401 Unauthorized",
      "platform": "instagram",
      "recordedAt": "2026-09-12T04:01:36+00:00",
      "sourceId": "chiang-cc-ig",
      "sourceName": "江啟臣（chiang-cc-ig）"
    },
    {
      "message": "rsshub fetch failed: HTTP 503: FetchError: [POST] &quot;https://www.instagram.com/graphql/query&quot;: 401 Unauthorized",
      "platform": "instagram",
      "recordedAt": "2026-09-12T04:01:46+00:00",
      "sourceId": "chen-tf-ig",
      "sourceName": "陳亭妃（chen-tf-ig）"
    },
    {
      "message": "rsshub fetch failed: HTTP 503: FetchError: [POST] &quot;https://www.instagram.com/graphql/query&quot;: 401 Unauthorized",
      "platform": "instagram",
      "recordedAt": "2026-09-12T04:01:58+00:00",
      "sourceId": "hsieh-lc-ig",
      "sourceName": "謝龍介（hsieh-lc-ig）"
    },
    {
      "message": "rsshub fetch failed: HTTP 503: FetchError: [POST] &quot;https://www.instagram.com/graphql/query&quot;: 401 Unauthorized",
      "platform": "instagram",
      "recordedAt": "2026-09-12T04:02:10+00:00",
      "sourceId": "lai-jl-ig",
      "sourceName": "賴瑞隆（lai-jl-ig）"
    },
    {
      "message": "rsshub fetch failed: HTTP 503: FetchError: [POST] &quot;https://www.instagram.com/graphql/query&quot;: 401 Unauthorized",
      "platform": "instagram",
      "recordedAt": "2026-09-12T04:02:23+00:00",
      "sourceId": "ko-ce-ig",
      "sourceName": "柯志恩（ko-ce-ig）"
    },
    {
      "message": "rsshub fetch failed: HTTP 503: FetchError: [POST] &quot;https://www.instagram.com/graphql/query&quot;: 401 Unauthorized",
      "platform": "instagram",
      "recordedAt": "2026-09-14T10:02:40+00:00",
      "sourceId": "ko-ce-ig",
      "sourceName": "柯志恩（ko-ce-ig）"
    },
    {
      "message": "rsshub fetch failed: HTTP 503: Error: Failed to fetch thread data",
      "platform": "threads",
      "recordedAt": "2026-09-16T10:00:10+00:00",
      "sourceId": "shen-threads-personal",
      "sourceName": "沈伯洋（shen-threads-personal）"
    }
  ],
  "site": "https://mayor2026.observe.tw",
  "version": 1,
  "watchSources": {
    "platformRows": [
      {
        "currentErrors": 0,
        "platform": "facebook",
        "sources": 14,
        "status": "ok"
      },
      {
        "currentErrors": 0,
        "platform": "instagram",
        "sources": 12,
        "status": "ok"
      },
      {
        "currentErrors": 0,
        "platform": "podcast",
        "sources": 1,
        "status": "ok"
      },
      {
        "currentErrors": 1,
        "platform": "threads",
        "sources": 9,
        "status": "degraded"
      },
      {
        "currentErrors": 0,
        "platform": "website",
        "sources": 6,
        "status": "ok"
      },
      {
        "currentErrors": 0,
        "platform": "x",
        "sources": 3,
        "status": "ok"
      },
      {
        "currentErrors": 0,
        "platform": "youtube",
        "sources": 10,
        "status": "ok"
      }
    ],
    "platforms": {
      "facebook": 14,
      "instagram": 12,
      "podcast": 1,
      "threads": 9,
      "website": 6,
      "x": 3,
      "youtube": 10
    }
  }
}
