Hướng dẫn dùng Claude Code (hoặc Cursor/Windsurf/coding chatbot khác) làm Co-creator để build 1 Gemini Gem ghostwriter đúng giọng bạn. Không phải copy 1 template có sẵn — mà học quy trình interact với AI coding assistant để iterate ra Gem của riêng mình.
Triết lý: "Người Cộng Sự" — AI không phải tool output 1 chiều, mà là co-thinker. Bạn mang domain + giọng văn + judgement. Claude Code mang cấu trúc prompt engineering + kỹ năng debug. Hai bên ping-pong 5-10 vòng → ra Gem chất.
Output cuối: 1 Gemini Gem của bạn (paid Gemini Advanced) — chạy workflow multi-step, viết đúng giọng bạn, export Substack được.
Paste 1 prompt v0.5 của người khác cho bạn 1 Gem "chạy được". Co-create với Claude Code cho bạn:
Nếu bạn chỉ cần Gem chạy nhanh → fork thẳng v0.5 của H3 (folder gemprompt/ghostwriter_v0.5/). Nếu muốn Gem của bạn — đọc tiếp.
~/my_ghostwriter/..md hoặc .txt.ghostwriter_v0.5/ của H3 làm starting template (optional nhưng recommend).Trước khi bắt đầu, nội hoá 4 nguyên tắc:
Claude Code không đọc được ý bạn. Mỗi request nên có 3 thành phần:
Ví dụ tệ: "Viết prompt cho Gem ghostwriter"
Ví dụ tốt: "Viết system prompt cho Gemini Gem. Goal: coach người bận 40+ viết bài Substack 500 chữ. Constraint: không invent trải nghiệm user, luôn tiếng Việt có dấu, workflow phải có WAIT sau mỗi step để user reply."
Đừng tin prompt Claude Code viết lần đầu. Flow đúng:
Claude Code draft prompt → bạn paste vào Gem → chạy thật 1 bài →
gặp fail → report fail cho Claude Code → Claude Code fix → lặp lại
H3 đã chạy vòng này 5 lần (v0.1 → v0.5). Bạn sẽ chạy 3-5 vòng tối thiểu.
Mỗi lần Gem sai, bạn có 1 data point thật về giới hạn của prompt. Ghi lại chính xác:
Feed nguyên block này cho Claude Code — nó debug tốt hơn hẳn lời kể mơ hồ.
Gemini Gem có hard limit system prompt ~4000 chars. Quá thì cắt rules → đưa sang file .md trong Knowledge. Claude Code sẽ gợi ý chỗ nào nên tách — nếu không, bạn chủ động ask: "Phần này dài quá, tách sang knowledge file nào?"
Làm theo thứ tự. Mỗi phase end bằng 1 artifact concrete trước khi sang phase sau.
Goal của phase: ra được 1 skeleton system prompt cho Gem + danh sách Knowledge files cần tạo.
Cách interact với Claude Code:
~/my_ghostwriter/.Tôi muốn build 1 Gemini Gem ghostwriter cho [mô tả target audience
của bạn, ví dụ: "người Việt 35-50 tuổi bận rộn muốn viết Substack
tiếng Việt"]. Pain points chính tôi muốn giải quyết:
1. [pain 1]
2. [pain 2]
3. [pain 3]
Output của Gem: 1 bài blog [độ dài, format].
Reference: H3 đã build v0.5 ở folder `[path tới ghostwriter_v0.5]`.
Đọc folder đó hiểu approach, rồi propose skeleton cho Gem của tôi.
Đừng copy nguyên — scope lại cho use case của tôi.
system_prompt_v0.1.md trong folder.Exit criteria phase 1: có system_prompt_v0.1.md + danh sách 5-8 Knowledge files (chưa cần content, chỉ cần tên + chức năng).
Goal: mỗi Knowledge file có content concrete đủ cho Gem consult.
Pattern interact:
Làm từng file một. Với mỗi file:
Viết content cho file `tone_rules.md`. Chức năng: liệt kê từ/cụm
cấm + voice rules cho Gem. Context: tôi muốn giọng [description],
không muốn [anti-patterns]. Format: mỗi rule 1 dòng, có ví dụ
tốt/xấu khi cần. Tham khảo file `tone_rules.md` của H3 (ở
ghostwriter_v0.5/) nhưng adapt cho giọng tôi.
tone_rules.md — quan trọng nhất (guardrail giọng)few_shot_good.md — 2-3 sample giọng bạn (paste từ bài cũ)few_shot_bad.md — sample AI-slop bạn muốn tránh (Claude Code tự sinh được)framework.md — outline framework (Hook-Insight-Example-CTA hoặc custom)tone_guide.md — hướng dẫn Step tone extraction (xem Phase 3)export_reminders.md — disclaimers cuối bàiplatform_tips.md — tips publish (Substack/FB/Medium)Exit criteria phase 2: có folder my_knowledge/ với 5-8 file .md, mỗi file <2000 chars, content concrete.
Goal: Gem viết ra giọng bạn, không giọng AI generic.
Đây là phase fail nhất. 3 options từ dễ → mạnh:
| Option | Effort | Reusable? | Độ match |
|---|---|---|---|
| A. Sample paste | 5 phút/session | Không | 60-70% |
| B. Tone extractor prompt ⭐ | 15 phút × 1 lần | Có | 85-90% |
| C. Few-shot heavy | 1-2 giờ setup | Có | 90-95% |
Recommend Option B lần đầu. Cách co-create với Claude Code:
Tôi muốn build 1 "tone extractor prompt" — 1 prompt bằng tiếng Anh
mà user chạy ở 1 chatbot phụ (ChatGPT/Claude web) với sample văn
của họ, output ra TONE PROFILE structured. Sau đó paste TONE
PROFILE vào Gem để calibrate voice.
Tham khảo `tone_guide.md` của H3 ở ghostwriter_v0.5/. Adapt cho
use case của tôi. Yêu cầu:
1. Prompt phải chạy được trên ChatGPT free / Claude web free
2. Output TONE PROFILE structured theo [N] dimensions tôi care nhất
3. Mỗi dimension phải có evidence quote lấy từ sample user upload
4. Có fallback [NEED MORE DATA] nếu sample không đủ
Propose N dimensions nào fit use case của tôi nhất, không cần giữ
nguyên 7 dim của H3.
tone_guide.md (section "prompt cho user copy").Exit criteria phase 3: tone_guide.md có tone extractor prompt test được.
Goal: Gem chạy end-to-end 1 bài thật mà không cần intervene.
Setup Gem:
my_knowledge/ lên Google Drive → link vào Gem Knowledge.Smoke test scripts (ask Claude Code draft 4-5 test case trước đó):
Debug loop với Claude Code:
Mỗi test fail, quay lại Claude Code:
Test [N] fail.
Paste lại full conversation với Gem:
[paste]
Expected: [...]
Actual: [...]
Hypothesis của tôi: [nếu có]
Fix prompt hay fix knowledge file?
Claude Code debug → propose fix (có thể edit system prompt hoặc Knowledge file cụ thể) → bạn apply → test lại.
Version bump: mỗi lần fix xong 1 batch, đổi v0.1 → v0.2, keep v0.1 backup.
Exit criteria phase 4: 5 test pass liên tiếp → Gem v1 ready cho bài thật.
Copy + paste, thay phần [...]:
Start fresh:
Đọc folder `[path tới ghostwriter_v0.5]` hiểu approach H3 đã dùng.
Sau đó đừng hỏi gì, hỏi tôi 5 câu quan trọng nhất để scope Gem
cho use case của tôi.
Debug fail cụ thể:
Gem v0.2 của tôi fail ở Step 4. Paste conversation:
[...]
Expected: [...]
Actual: [...]
Hypothesis 3 nguyên nhân ranked likelihood. Đừng fix vội, diagnose
trước.
Review Knowledge file:
Đọc `my_knowledge/tone_rules.md`. Tìm 3 weakness: rule trừu tượng,
thiếu ví dụ, redundancy với system prompt. Suggest fix inline.
Merge/split decision:
System prompt v0.3 đang 4800 chars — vượt limit. Đọc prompt, đề
xuất phần nào tách sang knowledge file và phần nào keep inline.
Criteria: Gem phải đọc mỗi turn → keep inline. Consult theo step
→ tách ra.
Tune sau feedback beta:
5 beta tester feedback:
1. [...]
2. [...]
...
Gom cluster root cause. Rank fix theo impact × effort. Đừng fix
từng cái riêng — fix root cause.
| Pitfall | Triệu chứng | Fix |
|---|---|---|
| Over-engineering phase 1 | Skeleton 12 steps, prompt 6000 chars | Scope lại: MVP = 6 steps. Cut phase 2/3 features trước khi test baseline. |
| Prompt trừu tượng | Gem skip rule, output generic | Thêm ví dụ cụ thể + counter-example. "Đừng dùng em-dash (—)" < "Đừng dùng —, thay bằng phẩy hoặc chấm. Ví dụ: 'X — Y' → 'X, Y'." |
| Bỏ qua Knowledge files | System prompt dồn hết rules → vượt limit | Split từ đầu: system prompt = workflow + guardrails; Knowledge = reference data. |
| Tune giữa lúc viết bài thật | Mất focus cả 2 bên | Tune ở session riêng. Viết bài thật = freeze version. |
| Test quá ít | Gem fail bất ngờ trên user beta | Min 5 test case × 2 modes trước release. |
| Không version control | Mất version tốt sau khi fix 1 cái lại break cái khác | Mỗi batch fix = version bump. Backup folder theo version. Git tốt hơn. |
| Paste fail không đủ context | Claude Code propose fix sai | Luôn paste full conversation + expected vs actual, không chỉ "Gem sai". |
Sau khi Gem v1 chạy ổn, 3 hướng tune:
Short loop (mỗi bài): note 1-2 điểm fail → fix next session.
Medium loop (mỗi 5-10 bài): cluster fail theo root cause → version bump (v1.1, v1.2).
Long loop (mỗi 30-50 bài): rethink architecture. Có thể merge/split step, thay framework outline, đổi mode structure. Đây là lúc v0.5 → v0.6 của H3 — full redesign.
Mỗi loop đều interact với Claude Code: bạn mang data, nó mang structure.
Stuck chỗ nào, ping group AIMM kèm paste conversation với Claude Code. Debug bằng context thật hiệu quả hơn hỏi chung.