Skip to content

a920604a/github-learn-log

Repository files navigation

github-learn-log

我的個人 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
Loading

⚠️ 實際狀況(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
Loading

主要組件

1. Claude Code Remote Routine(自動化引擎)

  • Routine IDtrig_01HYQVK4tnG6WhkSPMHNPGcj
  • Cron0 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_URL env

⚠️ 實際狀況:2026-07-23 認清 routine sandbox egress 全封(git pushapi.github.comdiscord.com 全 403)。routine 目前 enabled: true 但每日 fire 後沒有任何實際輸出 — 是一個「等 Anthropic 未來放寬 sandbox」的 placeholder。想更新 wiki 目前只能本地手動用 Claude Code CLI 跑同一個 prompt

2. Ingest Skills(5 支)

Routine 執行時逐一讀取 .claude/skills/github-learn/*/SKILL.md 當作 spec:

Skill 職責 輸出
scan-trending curl GitHub API 找候選 1–2 個 repo shortlist
analyze-repo 拉原料 + 寫 entity 頁 raw/*.mdrepos/*.mdglossary.md
update-concepts 累加式建 / 更新概念頁 concepts/*.md(≥2 repo 觸及才開)
daily-digest 每日彙整 + Discord push daily/YYYY-MM-DD.mdHome.md、webhook POST
weekly-digest 週日產週報 + Discord push weekly/YYYY-Www.mdHome.md、webhook POST

3. Wiki 內容分層

Karpathy llm_wiki 三層:

  • Rawraw/*.md)— 從 GitHub API curl 下來的原始 README / tree / manifest,作為 wiki 生成的證據鏈;不 publish 到 CF Pages
  • Wikirepos/concepts/daily/weekly/Home.mdglossary.md)— LLM 依 schema 寫的整理層;publish
  • SchemaCLAUDE.md.claude/skills/)— 由人維護的寫作規範 / 累加規則 / 觸發條件;publish(讓讀者知道規則)

4. Cloudflare Pages(線上瀏覽)

  • URLhttps://github-learn-log.pages.dev/
  • Build tool:MkDocs + Material(見 mkdocs.ymlrequirements.txt
  • Build commandpip install -r requirements.txt && mkdocs build
  • Outputsite/
  • 內容來源_docs/ 內的 symlink 指向 root 各 wiki 目錄
  • 排版控制:各子目錄的 .pages 檔(awesome-pages plugin)
  • 觸發:每次 main push 自動 build(CF Pages GitHub App webhook)

5. Discord 推播

  • 架構:Discord Webhook(HTTP POST,不透過 bot / MCP)
  • Target channel1529833934354124920
  • Webhook URL不 commit 到 repo,存在 routine prompt 的 DISCORD_WEBHOOK_URL env(透過 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 也讀,避免破壞每日產出格式。


相關文件


已知洞 / 待修

(狀態 2026-07-23)

  • ⚠️ 自動化死路(決定性洞):Claude Code Remote Routine sandbox egress policy 於 2026-07-23 驗證全封所有外部 HTTPS — git pushapi.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 已定義規則)

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors