Skip to content

Jeffrey0117/EverNote

Repository files navigation

Evernote

一個用 Astro 建的技術筆記部落格

Astro TypeScript

線上預覽


這專案有什麼

  • 文章分類過濾(技術 / 觀念 / 專案 / 工具)
  • 技術筆記 (/notes) 和正式文章 (/posts) 分離
  • 分頁
  • Pagefind 全站搜尋
  • RSS feed
  • GitHub Actions 自動部署
  • AI 寫作工具 — 用 Claude + Gemini 分工寫技術筆記
  • Git Hook 自動筆記 — 跨專案 commit 後自動產生技術筆記

AI 寫作工具

這套工具讓你用 AI 高效產出技術筆記,核心概念是 分工省 token

角色 任務 成本
Claude 從對話抽出原料(背景、踩坑、解法) ~200 tokens
Gemini 讀完整規範,寫出文章 免費

Claude 有對話 context 所以抽原料很快;Gemini 讀長文免費所以負責寫文章。

三個工具

C:\DEV\Evernote\
├── find-topics.bat    # 從 git commits 找新題材
├── write-article.bat  # 叫 Gemini 寫文章
└── move-articles.bat  # 搬文章到 posts/

找題材:

find-topics "C:\path\to\your\repo"
# Gemini 會看 commits 和現有文章,建議不重複的新題材

寫文章:

write-article "React useEffect 清理函數踩坑"
# Gemini 讀 project-guide.md 規範,產出符合風格的文章

搬文章:

move-articles
# 把 cloudpipe 裡寫好的 .md 搬到 posts/

相關規範檔

檔案 用途
src/pages/posts/project-guide.md 完整寫作規範(給 Gemini 讀)
src/pages/posts/context-spec.md 原料清單(給 Claude 讀)

工作流程

  1. 開發專案時用 Claude 解決問題
  2. 想寫筆記時,貼 context-spec.md 給 Claude
  3. Claude 輸出原料清單
  4. 執行 write-article 把原料丟給 Gemini
  5. 執行 move-articles 搬到 posts/
  6. 完成

Git Hook 自動筆記

跨專案開發時,自動把技術細節記錄成筆記。

原理

任何專案的 git commit 後 → 觸發 hook → 分析 diff → 呼叫 Claude API → 產生筆記 → commit 到 Evernote repo 的 notes/ 資料夾。

設定

1. 設定 API Key

# Windows (System Environment Variables)
# 或在 ~/.bashrc 加入:
export ANTHROPIC_API_KEY="sk-ant-..."

2. 在其他專案安裝 hook

cd C:/Users/jeffb/Desktop/code/Evernote
node scripts/install-hook.cjs --target C:/path/to/your/project

實際範例(安裝到 CloudPipe):

node scripts/install-hook.cjs --target C:/Users/jeffb/Desktop/code/CloudPipe

裝完後,該專案每次 commit 都會自動產生技術筆記並 push 到這個 repo 的 notes/ 資料夾。

手動產生筆記

# Dry run (不寫檔案,只預覽)
node scripts/generate-note.cjs --repo C:/path/to/project --dry-run

# 產生筆記(不 commit)
node scripts/generate-note.cjs --repo C:/path/to/project

# 產生筆記並自動 commit
node scripts/generate-note.cjs --repo C:/path/to/project --auto-commit

實際範例(從 CloudPipe 產生筆記):

node scripts/generate-note.cjs --repo C:/Users/jeffb/Desktop/code/CloudPipe --dry-run

筆記 vs 文章

類型 路徑 產生方式 用途
筆記 /notes Git hook 自動 / Telegram /write-note / 手動 技術細節、debug 紀錄、踩坑經驗
文章 /posts Telegram /write / AI 寫作工具 / 手動 整理過的、有觀點的文章

Telegram Bot 快速寫文

透過 ClaudeBot 的 /write/write-note 指令,直接在 Telegram 產生文章。

生成正式文章:

/write React useEffect 清理函數踩坑

Bot 會產生文章預覽,確認後自動 commit 並 push 到 /posts

生成技術筆記:

/write-note Electron IPC timeout 問題

Bot 會產生筆記,確認後自動 commit 並 push 到 /notes

優點:

  • 隨時隨地用手機寫文章
  • AI 自動生成,省時間
  • 預覽確認後再發布
  • 自動 commit & push

技術棧

Astro          靜態網站框架,載入極快
Pagefind       全站搜尋
@astrojs/rss   RSS feed 生成
@astrojs/sitemap   Sitemap 生成

快速開始

# Clone
git clone https://github.com/Jeffrey0117/Evernote.git
cd Evernote

# 安裝
npm install

# 開發
npm run dev

# 建置(含搜尋索引)
npm run build

# 預覽
npm run preview

專案結構

src/
├── layouts/
│   ├── BaseLayout.astro      # 基礎版型(SEO、搜尋)
│   ├── PostLayout.astro      # 文章版型
│   └── NoteLayout.astro      # 筆記版型(有「筆記」badge)
├── pages/
│   ├── index.astro           # 首頁(文章列表、分頁、過濾)
│   ├── about.astro           # 關於
│   ├── rss.xml.ts            # RSS feed(包含 posts + notes)
│   ├── posts/                # Markdown 文章
│   └── notes/                # Markdown 筆記(git hook 自動產生)
│       └── index.astro       # 筆記列表頁
├── styles/
│   └── global.css            # 全域樣式(CSS 變數)
scripts/
├── generate-note.js          # 產生技術筆記
└── install-hook.js           # 安裝 git hook
public/
├── favicon.svg
├── robots.txt
└── og-default.png            # 預設 OG 圖片

新增文章 / 筆記

新增文章

src/pages/posts/ 新增 .md 檔:

---
layout: ../../layouts/PostLayout.astro
title: 文章標題
date: 2026-01-13T12:00
description: 一句話描述
tags:
  - Electron
  - React
pinned: false
---

文章內容...

新增筆記

通常由 git hook 自動產生,也可以手動建立在 src/pages/notes/

---
layout: ../../layouts/NoteLayout.astro
title: 筆記標題
date: 2026-02-27T12:00
tags:
  - React
  - Debug
source: CloudPipe
autoGenerated: false
---

筆記內容...

Frontmatter 參數

文章 (PostLayout):

參數 必填 說明
layout ../../layouts/PostLayout.astro
title 文章標題
date 發布日期時間 YYYY-MM-DDTHH:mm
description 文章描述(顯示在列表)
tags 標籤陣列
pinned 是否置頂,預設 false

筆記 (NoteLayout):

參數 必填 說明
layout ../../layouts/NoteLayout.astro
title 筆記標題
date 發布日期時間 YYYY-MM-DDTHH:mm
tags 標籤陣列
source 來源專案名稱(例如 CloudPipe
autoGenerated 是否自動產生,預設 false

分類對應

文章會根據 tags 自動歸類:

分類 標籤
技術 Electron, React, Python, Node.js, CSS, TypeScript, Astro...
觀念 開發觀念, 專案管理, 寫作, Vibe Coding...
專案 專案心得, 專案文件
工具 CLI, VSCode, 開發工具, DX, Windows...

自訂樣式

編輯 src/styles/global.css

:root {
  --bg-primary: #F9F7F4;      /* 背景 */
  --text-primary: #2C2C2C;    /* 文字 */
  --accent: #9C8B7A;          /* 強調色 */
  --font-mono: 'IBM Plex Mono', monospace;
  --font-sans: 'Noto Sans TC', sans-serif;
}

部署

已設定 GitHub Actions 自動部署到 GitHub Pages。

Push 到 main 分支即自動部署。

手動部署到其他平台:

npm run build
# dist/ 目錄即為靜態檔案

支援:Vercel、Netlify、Cloudflare Pages、任何靜態空間


Built with Astro

About

📝 Evernote - Developer blog platform that converts markdown to web for knowledge sharing and vibe coding notes

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors