我的個人 wiki:每天由 Claude Code routine 自動掃 GitHub trending,挑 1–2 個「架構深度 + 週末可重造」的專案,寫成鐵人日誌風的 markdown 網絡(entity 頁 × 累加式概念頁 × 日/週報),推到 Discord + 部署到 Cloudflare Pages。
線上瀏覽:https://github-learn-log.pages.dev/
設計哲學:套用 Karpathy 的 llm_wiki 三層 — raw sources 不動 / wiki 由 LLM 寫 / schema (CLAUDE.md) 由人維護。
flowchart TB
subgraph Automation["自動化層(每日 08:02 Asia/Taipei)"]
Cron["Claude Code Remote Routine<br/>trig_01HYQVK4tnG6WhkSPMHNPGcj<br/>cron: 0 0 * * * UTC"]
Agent["Remote CCR Agent<br/>claude-opus-4-8"]
Cron -->|觸發| Agent
end
subgraph Repo["GitHub Repo(source of truth)"]
Schema["CLAUDE.md<br/>(wiki schema)"]
Skills[".claude/skills/github-learn/*/SKILL.md<br/>(5 支 ingest skill)"]
RawDir["raw/*.md<br/>(原料快取,不 publish)"]
Wiki["repos/ concepts/<br/>daily/ weekly/<br/>Home.md glossary.md<br/>(wiki 內容)"]
MkdocsCfg["mkdocs.yml + _docs/<br/>(symlink 給 MkDocs)"]
end
subgraph Publish["發佈層"]
CF["Cloudflare Pages<br/>github-learn-log.pages.dev"]
Discord["Discord Channel<br/>via Webhook"]
end
Agent -->|1. cat CLAUDE.md<br/>2. 讀 5 支 SKILL<br/>3. curl GitHub API| Repo
Agent -->|4. 寫 raw/ + repos/<br/>+ concepts/ + daily/<br/>5. git commit + push| Repo
Repo -->|webhook push 觸發| CF
Agent -->|curl POST| Discord
⚠️ 實際狀況(2026-07-23 驗證):Claude Code Remote Routine sandbox egress 政策封鎖所有外部 HTTPS(git push / api.github.com / discord.com 皆 403),這個架構圖代表理想 flow,實際 routine fire 後全部 403、wiki 不會更新。詳見文末「已知洞」。
flowchart LR
GH["GitHub Search API<br/>stars:>200, topic 命中, 近 90 天"]
Scan["scan-trending<br/>挑 1–2 個候選<br/>排除已在 repos/"]
Analyze["analyze-repo<br/>拉 README + tree + manifest"]
RawFile[("raw/*.md<br/>原料快取")]
RepoFile[("repos/*.md<br/>800-1000 字繁中<br/>含 mermaid 架構圖")]
Glossary[("glossary.md<br/>比喻 ↔ 技術")]
UpdateConcept["update-concepts<br/>掃 concept_tags<br/>≥2 個 repo 觸及才開頁"]
ConceptFile[("concepts/*.md<br/>累加式,不覆寫")]
Daily["daily-digest<br/>寫日報<br/>更新 Home.md"]
DailyFile[("daily/YYYY-MM-DD.md")]
Weekly["weekly-digest(僅週日)<br/>橫向比較"]
WeeklyFile[("weekly/YYYY-Www.md")]
Commit["git commit + push origin main"]
Push["Discord Webhook POST"]
GH --> Scan --> Analyze
Analyze --> RawFile
Analyze --> RepoFile
Analyze --> Glossary
RepoFile --> UpdateConcept --> ConceptFile
RepoFile --> Daily
ConceptFile --> Daily
Daily --> DailyFile
Daily --> Push
DailyFile --> Weekly
ConceptFile --> Weekly
Weekly --> WeeklyFile
Weekly --> Push
DailyFile --> Commit
WeeklyFile --> Commit
RepoFile --> Commit
ConceptFile --> Commit
RawFile --> Commit
- Routine ID:
trig_01HYQVK4tnG6WhkSPMHNPGcj - Cron:
0 0 * * *UTC = 每日 08:02 Asia/Taipei - 執行環境:Anthropic cloud CCR,
claude-opus-4-8 - 管理:https://claude.ai/code/routines/trig_01HYQVK4tnG6WhkSPMHNPGcj
- 權限依賴:
- Push GitHub:透過 fine-grained PAT + REST API git-data endpoint(sources[].authorization_token + prompt env
GITHUB_TOKEN) - Push Discord:透過 webhook URL,注入 routine prompt 的
DISCORD_WEBHOOK_URLenv
- Push GitHub:透過 fine-grained PAT + REST API git-data endpoint(sources[].authorization_token + prompt env
⚠️ 實際狀況:2026-07-23 認清 routine sandbox egress 全封(git push、api.github.com、discord.com全 403)。routine 目前enabled: true但每日 fire 後沒有任何實際輸出 — 是一個「等 Anthropic 未來放寬 sandbox」的 placeholder。想更新 wiki 目前只能本地手動用 Claude Code CLI 跑同一個 prompt。
Routine 執行時逐一讀取 .claude/skills/github-learn/*/SKILL.md 當作 spec:
| Skill | 職責 | 輸出 |
|---|---|---|
scan-trending |
curl GitHub API 找候選 | 1–2 個 repo shortlist |
analyze-repo |
拉原料 + 寫 entity 頁 | raw/*.md、repos/*.md、glossary.md |
update-concepts |
累加式建 / 更新概念頁 | concepts/*.md(≥2 repo 觸及才開) |
daily-digest |
每日彙整 + Discord push | daily/YYYY-MM-DD.md、Home.md、webhook POST |
weekly-digest |
週日產週報 + Discord push | weekly/YYYY-Www.md、Home.md、webhook POST |
依 Karpathy llm_wiki 三層:
- Raw(
raw/*.md)— 從 GitHub API curl 下來的原始 README / tree / manifest,作為 wiki 生成的證據鏈;不 publish 到 CF Pages - Wiki(
repos/、concepts/、daily/、weekly/、Home.md、glossary.md)— LLM 依 schema 寫的整理層;publish - Schema(
CLAUDE.md、.claude/skills/)— 由人維護的寫作規範 / 累加規則 / 觸發條件;publish(讓讀者知道規則)
- URL:https://github-learn-log.pages.dev/
- Build tool:MkDocs + Material(見
mkdocs.yml、requirements.txt) - Build command:
pip install -r requirements.txt && mkdocs build - Output:
site/ - 內容來源:
_docs/內的 symlink 指向 root 各 wiki 目錄 - 排版控制:各子目錄的
.pages檔(awesome-pages plugin) - 觸發:每次
mainpush 自動 build(CF Pages GitHub App webhook)
- 架構:Discord Webhook(HTTP POST,不透過 bot / MCP)
- Target channel:
1529833934354124920 - Webhook URL:不 commit 到 repo,存在 routine prompt 的
DISCORD_WEBHOOK_URLenv(透過RemoteTrigger update) - 內容格式:日報 / 週報卡片 + Pages URL
- 想關:Discord 設定 → delete webhook;或改 routine prompt 拿掉 URL
⚠️ 目前 routine sandbox 也擋discord.com→ 即使 routine 成功寫 wiki,Discord push 也會 403。與 GitHub push 同樣是 placeholder。
github-learn-log/
├── CLAUDE.md # wiki schema(寫作規範、累加規則、觸發條件)
├── Home.md # 首頁索引(自動更新,列所有 repos/concepts/daily/weekly)
├── index.md # CF Pages 站台 landing(歡迎頁)
├── glossary.md # 比喻 ↔ 技術對照
│
├── raw/ # 原料快取,不 publish
│ └── <owner>__<repo>.md
├── repos/ # entity 頁(800–1000 字繁中)
│ └── <owner>__<repo>.md
├── concepts/ # 跨 repo 概念累加頁
│ └── <slug>.md
├── daily/ # 日報
│ └── YYYY-MM-DD.md
├── weekly/ # 週報(週日產)
│ └── YYYY-Www.md
│
├── .claude/skills/github-learn/ # ingest skills
│ ├── scan-trending/SKILL.md
│ ├── analyze-repo/SKILL.md
│ ├── update-concepts/SKILL.md
│ ├── daily-digest/SKILL.md
│ └── weekly-digest/SKILL.md
│
├── mkdocs.yml # MkDocs 設定
├── requirements.txt # Python 相依(mkdocs-material, awesome-pages)
├── _docs/ # symlink 集合,給 mkdocs docs_dir 用
│ ├── index.md -> ../index.md
│ ├── Home.md -> ../Home.md
│ ├── daily -> ../daily
│ └── ... (其他)
├── site/ # mkdocs build 產物(gitignore)
│
└── docs/superpowers/ # 設計文件
├── specs/2026-07-21-github-learn-log-design.md
└── plans/2026-07-21-github-learn-log.md
Routine 每天 08:02 Asia/Taipei 觸發但 sandbox 全封 → 0 push,wiki 不會更新。放在那當紀念。
在本地開 Claude Code CLI(OAuth 免費)貼 routine prompt 進去,agent 有你的本地 gh CLI + git 環境沒 proxy 問題,會照走完 scan → analyze → update-concepts → daily-digest → commit + push → Discord push。
想省事的做法:把 routine prompt 存成本地 ~/bin/github-learn-run.sh(一個 wrapper 呼 claude CLI),想更新的時候一個指令搞定。
改 skills / schema:
git clone https://github.com/a920604a/github-learn-log
cd github-learn-log
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
.venv/bin/mkdocs serve # 本地起 http://127.0.0.1:8000 預覽改動 CLAUDE.md 或 SKILL 檔要考慮 routine 也讀,避免破壞每日產出格式。
- 設計 spec:
docs/superpowers/specs/2026-07-21-github-learn-log-design.md - 實作 plan:
docs/superpowers/plans/2026-07-21-github-learn-log.md - Wiki schema:
CLAUDE.md - 首頁索引:
Home.md
(狀態 2026-07-23)
⚠️ 自動化死路(決定性洞):Claude Code Remote Routine sandbox egress policy 於 2026-07-23 驗證全封所有外部 HTTPS —git push、api.github.com(REST API 繞路也不行)、discord.com皆回 403。routine 每日 fire 但無輸出。曾試過遷 GH Actions 但需要 API key + 用量計費,本人不做,回退 routine 架構等 Anthropic 放寬 sandbox。- Home.md 排版待美化(MkDocs 渲染尚未精修)
- 中文搜尋弱:MkDocs 內建 Lunr 對中文分詞不佳;未來若嫌難用可考慮遷 Astro Starlight (Pagefind)
- Lint routine 尚未做(孤兒 concept / 過期 concept / 斷鏈警告;spec §5 已定義規則)