# CHO CLAUDE ĐỌC: Bước 11. Lead magnet: sách 0đ, bìa, trang thu

> Tài liệu này viết cho Claude Code của học viên. Người học chỉ cần dán câu lệnh bên dưới vào Claude, Claude đọc file này rồi làm.
> Thuộc hệ thống triển khai AI 20 bước của Trương Minh Kiên. Trang bước này: https://trienkhaileadmagnet.truongminhkien.vn

## Việc cần làm

Viết quà tặng từ nỗi đau khách, làm bìa mockup, dựng trang thu nối vào Lark Base, thư giao quà tự đi.

Câu lệnh học viên dán vào Claude:

```
Tải gói https://trienkhaileadmagnet.truongminhkien.vn/lead-magnet.zip, giải nén, đọc CHO-CLAUDE-DOC.md, cài các skill trong gói rồi cho tôi 20 ý tưởng lead magnet dựa trên nỗi đau khách hàng của tôi
```

## Luật khi làm

1. Đọc hết file này, kể cả phần bẫy, trước khi chạy lệnh nào.
2. Việc cần mật khẩu, mã OTP, token hay thanh toán thì dừng lại để học viên tự làm, không nhập hộ.
3. Không xoá dữ liệu, bản ghi DNS hay file cũ của học viên. Chỉ thêm.
4. Khoá bí mật chỉ nằm trong `.env` (đã có trong `.gitignore`), không ghi vào mã, wiki hay kết quả.
5. Xong mỗi bước thì kiểm tra thật (chạy thử, đọc lại) rồi mới báo xong.
6. Gói này chạy trên máy của học viên, không phải máy người soạn. Mọi đường dẫn tính từ thư mục giải nén hoặc thư mục vault của học viên; hỏi học viên nếu cần. Skill nào nhắc tới file `output/...` hay trang `wiki/...` mà vault học viên chưa có thì đó chỉ là nguồn tham khảo của người soạn: bỏ qua, dùng nội dung ngay trong skill. Riêng `wiki/concepts/bo-mau-thuong-hieu.md`: nếu chưa có, chép từ `mau/bo-mau-thuong-hieu.md` trong gói rồi hỏi học viên để điền.

## Skill trong gói

- `bia-mockup-3d`
- `tmk-mkt-bia-sach-mockup`
- `tmk-mkt-ebook-sach-lat`
- `tmk-mkt-lead-magnet`
- `tmk-mkt-leadpage`
- `tmk-mkt-leadpage-ebook`
- `tmk-mkt-leadpage-ebook-tron-goi`
- `tmk-mkt-leadpage-tu-bia-mockup`

Cách cài skill: chép từng thư mục trong `.claude/skills/` của gói vào `.claude/skills/` của vault Obsidian (bước 1). Tên thư mục phải trùng tên skill, file chính tên `SKILL.md`.
<!-- them skill 19/10 -->
Thêm (19/10): thư mục `viet-sach-sach-lat/` trong gói, 2 skill cho sách dày:
- `viet-sach`: viết trọn một cuốn 20 chương trở lên theo quy trình 11 bước, nhiều tác tử viết nhiều phiên bản mỗi chương rồi hợp nhất, có cổng duyệt từng bước, viết đúng giọng tác giả (điền `references/ho-so-giong-van.md` một lần).
- `sach-lat`: Markdown ra PDF A4, A5 bằng Chrome, PDF ra sách lật (ảnh webp, khung lật trang), đưa lên Cloudflare Pages.
Cài: bấm `viet-sach-sach-lat/CAI-DAT.bat` (Mac: `bash cai-dat.sh`); bộ cài chép 2 skill vào `~/.claude/skills/` và cài `markdown pymupdf pillow`. Đọc `viet-sach-sach-lat/HUONG-DAN-CAI-DAT.md`.

## Cách cài đặt từng bước (làm theo thứ tự)

### CHO CLAUDE ĐỌC — sách 0đ + trang thu + ghi Lark Base + thư tự động

> Bạn là Claude Code trên máy một người mới. Họ vừa dán: *"Đọc repo trên. Cho tôi 20 ý tưởng sách
> 0đ từ nỗi đau khách hàng của tôi, chọn 1, viết cuốn ~30 trang, làm bìa, dựng trang thu nối vào Lark
> Base Lead và thư tự động gửi sách"*. Kết quả cuối: một trang `sach.<tên-miền>` sống trên Cloudflare
> Pages; khách điền tên + SĐT → dòng mới trong Base Lead → nút tải PDF hiện ra → thư giao sách tự
> đi. Đây là 4 việc nối nhau; làm và nghiệm thu **từng việc**, không gộp.

## Cần gì trước (kiểm, thiếu thì dừng và chỉ đường)

| Cần | Gói | Kiểm |
|---|---|---|
| Bộ Não Thứ 2 có skill `tmk-mkt-lead-magnet`, `tmk-mkt-ebook-sach-lat`, `tmk-mkt-leadpage-tu-bia-mockup`, `tmk-mkt-leadpage-ebook` | `bo-nao-thu-2` | `ls .claude/skills` |
| Tên miền trong Cloudflare + `CLOUDFLARE_API_TOKEN` (hoặc `npx wrangler login`) | `ten-mien-cloudflare` | `npx wrangler whoami` |
| lark-cli đăng nhập + Base Lead (app_token, table_id) | `tro-ly-lark` | `lark-cli whoami` |
| Node.js (cho wrangler) · Chrome/Edge (in PDF) | — | `node -v` |

## VIỆC 1 — Chọn và viết sách 0đ

1. Chạy skill `tmk-mkt-lead-magnet` → 20 ý tưởng từ nỗi đau khách (hỏi người dùng khách là ai, nỗi
   đau nào đang trả tiền). Người dùng chọn **một**.
2. Viết sách bằng `tmk-mkt-ebook-sach-lat` (khoảng 25–35 trang A5, 8–12 mục ngắn, mỗi mục kết bằng
   một việc làm ngay). Duyệt dàn ý trước, viết sau. **Không hứa tài liệu/link nào chưa tồn tại** (bẫy 1).
3. Xuất PDF: viết `sach.html` (CSS in ấn, khổ A5) → `chrome --headless --print-to-pdf=sach.pdf sach.html`
   (Windows: `"C:\Program Files\Google\Chrome\Application\chrome.exe"` hoặc `msedge.exe`). Kiểm số
   trang, font tiếng Việt không vỡ, bìa là trang 1.
4. Bìa: dùng lệnh tạo ảnh (ChatGPT/Gemini) theo mẫu trong skill leadpage-ebook; xuất `assets/bia.jpg`
   (tỷ lệ 2:3, ≤ 300 KB). Kiểm **chính tả trên bìa bằng mắt** — đã có bìa in "HAI" thành "HẠI" (bẫy 2).

## VIỆC 2 — Dựng trang thu

1. Chép `site/` sang thư mục dự án. Thay **mọi** `{{…}}` trong `site/index.html`: tiêu đề, dòng
   phụ, 5 nỗi đau, 4 nội dung, tác giả, màu (`MAU_CHINH`, `MAU_NHAN` — hai màu, không dùng vàng
   kim), `URL_PDF` (đường tuyệt đối tới PDF trên chính trang, kèm `?v=1`), `TEN_QUA` (nhãn, ví dụ
   `SACH 0D` — **phải trùng** biến `TEN_QUA` trên Pages và khoá `qua_tang` của máy gửi thư),
   `LINK_NHOM_ZALO`, `TEN_MIEN`. Grep lại `{{` phải bằng 0.
2. Đặt `sach.pdf`, `assets/bia.jpg`, `assets/tac-gia.jpg` vào `site/`.
3. Xem cục bộ: `cd site && python -m http.server 8080` → mở `http://localhost:8080` → chụp màn hình
   480 px cho người dùng duyệt. Biểu mẫu cục bộ sẽ báo lỗi (chưa có hàm) — bình thường.

## VIỆC 3 — Nối Lark Base (app riêng cho trang)

1. **Tạo app Lark cho trang** (người dùng đăng nhập https://open.larksuite.com, bạn dẫn từng bước
   hoặc thao tác trên trình duyệt của họ): *Create custom app* → tên = tên trang → *Permissions* thêm
   `bitable:app` (xem, sửa, quản lý Base) → *Create version* → *Publish* (app tự duyệt). Ghi **App
   ID**; **App Secret người dùng tự chép** — Claude không đọc, không lưu.
2. **Cho app vào Base Lead** với quyền *Có thể chỉnh sửa*: mở Base → `…` → *Xem thêm* → *Ứng dụng* →
   thêm app. Thiếu bước này thì hàm trả "Ghi vào bảng Lark không thành công" dù token đúng (bẫy 3).
3. Base Lead cần cột: `Họ tên` · `Số điện thoại` · `Email` · `Nguồn` (select, thêm option = `TEN_QUA`)
   · `Chi tiết nguồn` (text). Tên cột khác → đặt biến `COT_*` tương ứng.
4. Tạo dự án Pages và đăng lần 1 (từ **trong** `site/` — bẫy 4):
   ```
   npx wrangler pages project create <ten-du-an> --production-branch main
   cd site && npx wrangler pages deploy . --project-name <ten-du-an> --branch main
   ```
5. Đặt biến (Pages › Settings › Variables and Secrets, hoặc `npx wrangler pages secret put`):
   `LARK_APP_ID` · `LARK_APP_SECRET` (**Secret**, người dùng tự dán) · `LARK_APP_TOKEN` · `LARK_TABLE_ID`
   · `TEN_QUA` · `LARK_HOST` (larksuite: `open.larksuite.com`). Biến chỉ có hiệu lực **ở lần đăng kế
   tiếp** → **deploy lại** (bẫy 5).
6. Gắn tên miền con: `wrangler pages domain add` lỗi ở wrangler 4 → dùng API
   `POST /accounts/{acc}/pages/projects/{du-an}/domains {"name":"sach.<tên-miền>"}` rồi tạo DNS
   `CNAME sach → <du-an>.pages.dev` (proxied). Chờ 2–5 phút.
7. **Thử thật bằng trình duyệt** (hoặc `curl -A "Mozilla/5.0"`): gửi đơn với SĐT của người dùng →
   `{"ok":true}` → dòng hiện trên Base → nút tải hiện → PDF mở được. Đơn thử từ Python bị Cloudflare
   chặn 403/1010 (bẫy 6). Xoá dòng thử sau khi xong.

## VIỆC 4 — Thư giao sách tự động

Làm theo gói `may-gui-thu`: lá 1 = giao sách (`{link_qua_tang}` = `URL_PDF`), khoá `qua_tang` =
`TEN_QUA`. Chạy thử → gửi thật một thư cho chính người dùng → đặt lịch.

## Nghiệm thu cả dây chuyền (đủ 5 ✅ mới xong)

- [ ] `https://sach.<tên-miền>/` → 200, HTML đúng nội dung; `/sach.pdf` → 200 **và** `Content-Type: application/pdf`
  (Pages trả 200 cho cả địa chỉ không tồn tại — kiểm content-type, bẫy 7); `/api/lead` GET → 405.
- [ ] Đơn thật từ điện thoại người dùng → dòng trên Base trong 5 giây, đủ Họ tên/SĐT/Nguồn.
- [ ] Gửi lại cùng SĐT trong 24h → **không** đẻ dòng mới (`cap_nhat: true`).
- [ ] Thư giao sách tới hộp thư người dùng, link tải mở được.
- [ ] Không có khoá/secret nào trong `site/`, trong repo, trong lịch sử chat.

## Bẫy đã trả giá

| # | Bẫy | Cách xử |
|---|---|---|
| 1 | Thư/trang hứa tài liệu **chưa tồn tại** ("bản đồ", "12 câu hỏi") | Chỉ hứa thứ đã có tệp thật; máy gửi thư kiểm content-type |
| 2 | Bìa AI sai chính tả tiếng Việt (HAI → HẠI), chữ hụt 77% khi in | Kiểm bằng mắt; chữ quan trọng thì ghép bằng PIL/HTML, đừng nhờ AI vẽ chữ |
| 3 | App Lark chưa được thêm vào Base → ghi thất bại dù token đúng | `…` → Xem thêm → Ứng dụng → thêm app, quyền chỉnh sửa |
| 4 | Deploy từ thư mục cha → `functions/` bị bỏ, `/api/lead` trả 405 | Luôn `cd site` trước |
| 5 | Đặt biến xong quên deploy lại → hàm đọc biến cũ/thiếu → 500 "thiếu biến" | Deploy lại sau mỗi lần đổi biến; secret không đi theo khi tạo lại dự án |
| 6 | Đơn thử bằng Python bị Cloudflare chặn 403 mã 1010 | Thử bằng trình duyệt hoặc curl có User-Agent trình duyệt |
| 7 | Pages trả 200 cho địa chỉ không tồn tại | Đo `Content-Type`, không tin mã 200 |
| 8 | Hàm trả 502 → Cloudflare nuốt và giấu lý do | Hàm trả 500 kèm `chi_tiet` (đã cài) |
| 9 | Popup "Cảm ơn" hiện dù lead rớt | Chặn ở `r.ok` (đã cài) |
| 10 | Ảnh/PDF đổi cùng tên, trình duyệt giữ bản cũ | `?v=<số>` sau đường dẫn, tăng mỗi lần đổi |
| 11 | `automatic_fields` để ở query → không có `created_time` → chống trùng 24h vô hiệu | Đã để trong body (đã cài) |
| 12 | Bằng chứng giả (toast "X vừa đăng ký", đồng hồ đếm ngược giả) | Không dùng. Mẫu này không có |
| 13 | Nút hai màu vàng kim + đỏ, 24 thẻ nỗi đau rải khắp trang | Hai màu, ≤ 5 nỗi đau, một nút lặp lại |

## Báo cáo cuối (khuôn)

```
✅ Sách "<tên>" — <n> trang PDF · bìa OK · trang https://sach.<tên-miền> sống
📊 Lead → Base "Lead" (bảng …) · app riêng <App ID> · chống trùng 24h ✔
📬 Thư giao sách: lá 1 đã gửi thử tới <email người dùng> ✔ · lịch 08:00
⚠️ Còn: <pixel FB chưa gắn / nhóm Zalo chưa có / …>
```


## Hướng dẫn chi tiết và các bẫy đã gặp

(Bản đầy đủ có hình và nút bấm: https://trienkhaileadmagnet.truongminhkien.vn)

Ví dụ sống — đã làm thật, đang chạy thật

**50 Prompt AI Cho Marketing** — ebook 50 câu lệnh AI dán-là-dùng, tặng miễn phí tại [50prompt.truongminhkien.vn](https://50prompt.truongminhkien.vn). Toàn bộ chuỗi: viết nội dung → đóng gói ebook PDF thương hiệu riêng → dựng trang thu lead → lưu vào Lark Base → tự động gửi email kèm link ebook — đã chạy thật, đã test bằng lead thật.

## Các bước (nói với Claude AI để nó tự dựng)

1

### Nghĩ ý tưởng mồi câu

Yêu cầu Claude AI đưa ra ít nhất 20 ý tưởng mồi câu (bắt buộc là sản phẩm thông tin: ebook, checklist, template, mini-course), dựa trên nỗi đau khách hàng đã tìm ra ở [bước Chiến lược](https://trienkhaichienluoc.truongminhkien.vn/) — bạn chọn 1 ý phát triển tiếp.

2

### Viết nội dung + đóng gói ebook

Claude AI viết đầy đủ nội dung, dựng bìa + logo thương hiệu, xuất ra file PDF hoàn chỉnh.

3

### Dựng trang thu lead + triển khai thật (không chỉ nói lý thuyết)

Claude AI viết 1 trang tĩnh tự chứa (HTML/CSS/JS 1 file) có ảnh bìa, danh sách nỗi đau, form 3 trường (tên/SĐT/email). Yêu cầu nó tự triển khai bằng đúng các lệnh thật này (không phải mô tả suông):

npx wrangler pages project create ten-du-an-cua-ban\
npx wrangler pages deploy site --project-name=ten-du-an-cua-ban

Lệnh thứ 2 in ra 1 link tạm dạng `ten-du-an-cua-ban.pages.dev` — bấm thử ngay để xác nhận trang lên đúng, trước khi gắn tên miền thật.

**Gắn tên miền con riêng của bạn (2 phần, thiếu 1 phần trang sẽ không lên được):**

- **Phần 1 — CNAME:** vào nơi đang quản lý DNS tên miền của bạn (nơi mua tên miền hoặc Cloudflare DNS), thêm 1 bản ghi CNAME: Tên = tên miền phụ bạn muốn (vd `ebook`), Đích = `ten-du-an-cua-ban.pages.dev`.
- **Phần 2 — Gắn Custom Domain ở Cloudflare Pages:** vào Cloudflare Dashboard → Workers & Pages → đúng project vừa tạo → tab "Custom domains" → "Set up a custom domain" → nhập đúng tên miền phụ đầy đủ (vd `ebook.tenmiencuaban.com`). Thiếu bước này thì dù CNAME đã đúng, trang vẫn báo lỗi chứng chỉ/không lên được.

4

### Nối vào Lark Base

Mỗi lead điền form → tự động lưu vào bảng Lark Base đã dựng ở [Bước 4](https://trienkhailark.truongminhkien.vn/). Việc này luôn làm TRƯỚC, đảm bảo không mất lead dù bước gửi thư dưới đây có lỗi.

5

### Cài Resend để tự động gửi email

Resend là dịch vụ gửi email tự động (miễn phí cho lượng gửi vừa phải). Làm đầy đủ từng bước sau — đủ chi tiết để Claude AI tự đọc và tự làm theo:

**5.1 — Tạo tài khoản:** vào [resend.com](https://resend.com), đăng ký miễn phí.

**5.2 — Thêm tên miền gửi:** vào mục "Domains" → "Add Domain" → nhập đúng tên miền của bạn (ví dụ `truongminhkien.vn`, không phải tên miền phụ).

**5.3 — Lấy 4 bản ghi DNS:** Resend hiện ra 4 bản ghi cần thêm để xác thực quyền gửi thư từ tên miền của bạn — bấm nút "Copy instructions" để lấy nguyên văn từng giá trị (đừng gõ tay/nhìn bằng mắt rồi chép lại, chuỗi DKIM dài hơn 200 ký tự, sai 1 ký tự là hỏng xác thực):

- TXT `resend._domainkey` = chuỗi DKIM dài (bắt đầu bằng `p=`)
- CNAME (SPF) — tên và đích Resend cung cấp
- CNAME (SPF) thứ hai — tên và đích Resend cung cấp
- TXT `_dmarc` = `v=DMARC1; p=none;`

**5.4 — Thêm 4 bản ghi đó** vào đúng nơi đang quản lý DNS tên miền của bạn (nơi đã thêm các bản ghi CNAME ở những bước trước) — không đụng các bản ghi cũ.

**5.5 — Xác nhận:** quay lại Resend, bấm "Tôi đã thêm các bản ghi" (hoặc nút xác minh tương đương). Trạng thái ban đầu sẽ là "Pending"/"Checking DNS" — bình thường, chờ vài phút tới vài giờ cho DNS lan truyền, rồi kiểm tra lại tới khi chuyển "Verified".

**5.6 — Tạo khoá API:** vào mục "API Keys" → "Create API Key" → đặt tên bất kỳ. Khoá hiện ra **chỉ đúng 1 lần duy nhất** — copy ngay lúc đó, không đóng cửa sổ trước khi copy (đóng rồi là mất vĩnh viễn, phải tạo khoá mới).

**5.7 — Dán khoá vào hệ thống:** đây là bước dễ sai nhất — xem kỹ mục "Bẫy đã gặp thật" ngay bên dưới trước khi làm bước này.

## ⚠ Bẫy đã gặp thật + cách gỡ

1\. Ô nhập mật khẩu/khoá bí mật chỉ lưu được 2 ký tự

Dán trực tiếp khoá bí mật (để gửi email tự động) vào ô nhập ẩn của dòng lệnh — có lúc chỉ lưu lại đúng 2 ký tự đầu, không báo lỗi gì, khiến hệ thống gửi thư báo "chưa cấu hình" dù mọi thứ khác đều đúng.

**Cách gỡ:** đừng dán trực tiếp vào ô ẩn đó — dán vào Notepad trước, lưu file, rồi đưa cả file vào dòng lệnh cấu hình. Luôn đếm lại độ dài trước khi tin.

2\. Đổi xong khoá bí mật mà vẫn không hoạt động

Khoá bí mật mới chỉ có tác dụng cho lần triển khai (deploy) TIẾP THEO — không tự áp dụng ngược cho bản đang chạy sẵn.

**Cách gỡ:** sau mỗi lần đổi khoá bí mật, luôn triển khai (deploy) lại 1 lần nữa rồi mới kiểm tra.

3\. Copy khoá bí mật lúc còn đang ẩn (dạng chấm ••••) ra sai giá trị

Nếu copy trước khi bấm "hiện" khoá thật, có thể lấy nhầm 1 chuỗi khác — độ dài trông vẫn hợp lý nhưng nội dung sai hoàn toàn, hệ thống báo "khoá không hợp lệ".

**Cách gỡ:** luôn bấm icon "hiện" cho tới khi thấy chữ thật (không còn chấm ẩn) rồi mới copy.

4\. Vừa gắn tên miền xong, trang báo lỗi/không lên ngay

Sau khi thêm CNAME + gắn Custom Domain, DNS cần thời gian lan truyền — TTL bản ghi thường đặt 5 phút nhưng thực tế có lúc mất tới vài giờ tuỳ nơi (nhà mạng, quốc gia khác nhau thấy khác lúc). Không phải lỗi cấu hình.

**Cách gỡ:** đợi rồi kiểm tra lại thay vì vội sửa/xoá cấu hình đang đúng — nếu quá vài giờ vẫn lỗi mới cần kiểm tra lại 2 bước CNAME + Custom Domain.

5\. Ảnh trên trang không đổi dù đã cập nhật

Nếu tên file ảnh giữ nguyên qua mỗi lần cập nhật, hệ thống lưu đệm (cache) của mạng phân phối nội dung có thể giữ bản ảnh CŨ tới vài tiếng, dù trang gốc đã có ảnh mới.

**Cách gỡ:** đặt tên file ảnh khác đi mỗi lần thay ảnh (ví dụ thêm mã ngẫu nhiên vào tên file).

Bước tiếp theo

Đã có mồi câu thu khách, sang bước kế tiếp: dựng website và trang bán hàng để chuyển người quan tâm thành khách hàng thật.

[Sang bước 12: Website & Sale Page →](https://trienkhaiweb.truongminhkien.vn/)
<!-- them 19/10 -->
### Lark lỗi là form thu lead mất khách
Form gửi thẳng vào Lark Base; Lark khoá (hết hạn mức API, xem gói Bước 4) hay chậm thì khách nhận báo lỗi, lead mất, khách không nhận tài liệu.
**Cách gỡ:** trang cất tạm lead vào KV của Cloudflare khi Lark không nhận, vẫn gửi thư tặng tài liệu; một việc chạy định kỳ đẩy lead tạm vào Lark khi Lark nhận lại rồi xoá bản tạm. Thử thật bằng một lead giả trước khi chạy quảng cáo, xong xoá lead giả.

### Thêm bản sách lật cho tài liệu tặng
Ngoài PDF, dựng trang đọc dạng sách lật ở đường `/doc/` của trang thu lead (ảnh từng trang cộng thư viện lật trang), khách đọc ngay trên điện thoại. Tài liệu vốn là trang web thì in ra PDF bằng Chrome trước. Thư tặng tài liệu có hai nút: **Đọc sách lật** và tải PDF; gửi từ mail tên miền (gói Bước 7). Kiểm khổ điện thoại 375 điểm ảnh.

