https://, không có dấu / ở cuối.
Phiếu lệnh triển khai · Bộ 4 skill SEO Web
Bạn dựng web trên Hostinger, điền 6 ô, dán khối lệnh vào Claude Code — máy tự tải bộ 4 skill về và cài. Từ đó mỗi ngày 11:00 nó lấy bài đến hạn trong Lark, viết chuẩn SEO, đăng lên web và ghi link ngược lại vào bảng.
Vào ten-mien-cua-ban.com/wp-admin → Users → Profile → kéo xuống cuối trang, mục Application Passwords → đặt tên Claude SEO → Add New. WordPress hiện một chuỗi 24 ký tự — chỉ hiện đúng một lần, copy ngay.
Không thấy mục đó? Vì web chưa bật HTTPS. WordPress ẩn hoàn toàn Application Passwords trên site chạy http://. Bật SSL ở bước 3 của mục 02 rồi tải lại trang là hiện.
Sáu việc, làm một lần rồi thôi. Đã có WordPress sẵn thì nhảy tới số 3.
Gói Premium trở lên là đủ. Mua theo năm thường được tặng tên miền năm đầu — lấy luôn cho gọn, đỡ phải trỏ DNS thủ công.
hPanel → Website → Auto Installer → WordPress. Khoảng 2 phút. Nhớ tên đăng nhập — lát nữa điền vào ô WP_USER.
hPanel → Security → SSL → bật (miễn phí). Rồi vào Website → Dashboard tắt Coming soon / Maintenance. Quên tắt thì web vẫn “đang xây dựng” với khách, và Application Password ở mục 01 không hiện ra.
WordPress → Settings → Permalinks → Post name. Mặc định là ?p=123 — để nguyên thì cột URL Slug trong bảng trở thành vô nghĩa và bài mất sạch điểm SEO.
Plugins → Add New → Yoast SEO → cài, kích hoạt. Bộ skill ghi meta theo chuẩn Yoast (_yoast_wpseo_title, _yoast_wpseo_metadesc) — cài Rank Math thay vào là hai cột Meta không sang được.
Cài plugin → mở phần cài đặt của nó → tạo API key → copy. Đây là con đường duy nhất để ảnh lên được web (xem mục 06). Không có key thì bài vẫn đăng, nhưng trắng trơn không một tấm ảnh.
Bốn thứ. Máy làm việc máy giỏi (quét bảng, tải ảnh, gọi API) nên chạy thẳng bằng Node, không qua trình duyệt.
| Cần có | Kiểm bằng | Thiếu thì sao |
|---|---|---|
| Node.js v18+ | node -v | Scripts dùng fetch có sẵn từ v18. Bản cũ hơn là chạy không nổi. |
| Claude Code | claude --version | Không có thì không dán được khối lệnh, và lịch 11:00 cũng không gọi được AI viết bài. |
| lark-cli | lark-cli auth status | Phải ra ready. Đây là đường duy nhất bộ skill đọc/ghi Lark Base. |
| ffmpeg | ffmpeg -version | Khuyến nghị. Không có thì ảnh 6–10 MB không nén được về 1600px — web nặng, điểm tốc độ tụt. |
lark-cli: nó đăng nhập bằng chính tài khoản Lark của bạn (--as user) — nên bộ này không cần tạo app Lark, không cần App ID / App Secret. Nhưng repo không kèm hướng dẫn cài công cụ này, và gói trùng tên trên npm là gói khác. Máy chưa có thì hỏi người bàn giao bộ skill trước khi làm tiếp — đây là chỗ tắc số một.
git clone repo về, chép đúng 4 thư mục vào .claude/skills/ rồi dọn thư mục tạm. Bạn chỉ cần mở Claude Code ở thư mục dự án của mình.
hmh-mkt-research-seo-web — tìm từ khoá, nạp brief vào bảnghmh-AIOS-dang-bai-seo — viết bài và đăng, chạy mỗi ngàyhmh-AIOS-anh-lark-wordpress — đưa ảnh từ Lark lên webseo-web-writer — bản đăng tay 9 bước, khi muốn giám sát từng bàihttps://, không có dấu / ở cuối.
Chưa điền ô nào — khối lệnh đang ở dạng mẫu.
[warn] rồi đi tiếp — còn Meta Title và Meta Description thì không bao giờ sang tới Yoast. Bạn chỉ phát hiện khi bài đã lên Google với tiêu đề sai.
Hai giai đoạn, không gọi nhau trực tiếp. Chúng gặp nhau tại một cái bảng — và cái bảng đó là nguồn sự thật duy nhất.
| Cổng | Chặn cái gì |
|---|---|
| Tiền kiểm | Chưa có Application Password → báo nhóm Lark rồi dừng. Không chết câm. |
| Lưới HTML | Bài viết ra không hợp lệ, quá ngắn, thiếu chỗ chèn ảnh → không đăng, ghi sổ lỗi. |
| Cổng YMYL | Bài tiền bạc có cụm hứa hẹn phóng đại (“giàu nhanh”, “cam kết lợi nhuận”, “x3 doanh thu”…) → chặn trước khi upload ảnh, không tạo rác trên web. Đây là tính năng bảo vệ uy tín, đừng tắt. |
| Verify sau đăng | Đọc lại bài vừa tạo, xác nhận status = publish thật rồi mới báo thành công. Không bao giờ báo “đã đăng” chỉ vì lệnh không lỗi. |
Nhiều hosting bật tường lửa chặn thẳng việc đẩy file nhị phân lên /wp/v2/media — trả 403. Bộ skill không đi lách: nó gửi ảnh dạng base64 nằm trong JSON qua plugin Royal MCP, một cửa chính thống có khoá riêng.
| Mảnh | Là gì |
|---|---|
| Cửa | WP_URL/wp-json/royal-mcp/v1/mcp — giao thức MCP Streamable HTTP |
| Khoá | Header X-Royal-MCP-API-Key, đọc từ ROYAL_MCP_API_KEY trong .secrets/wordpress.env |
| Việc | wp_upload_media nhận base64 → trả media ID. Ảnh #1 thành ảnh đại diện qua wp_set_featured_image |
publish-wordpress.mjs lẫn skill ảnh không có nhánh nào upload qua REST; /wp/v2/media chỉ được dùng để tra ảnh trùng. Thiếu ROYAL_MCP_API_KEY thì mỗi ảnh ném lỗi, máy gỡ trọn khối <figure> rồi vẫn đăng bài — trắng trơn không ảnh, chỉ để lại một dòng [warn]. Bài lên Google mà không có ảnh đại diện, bạn không biết cho tới lúc mở web ra xem.
Muốn đăng → thêm dòng “Chờ viết” kèm Ngày đăng. Muốn hoãn → dời ngày. Muốn dừng → đổi trạng thái. Không ai phải sửa code.
| Nhóm cột | Ai điền | Gồm |
|---|---|---|
| Brief | Máy research (hoặc bạn) | Tiêu đề · Từ khoá chính/phụ/người dùng · Outline · Meta Title · Meta Description · URL Slug · Danh mục · Schema Type · Internal Links · Số từ · Ngày đăng |
| Ảnh | Bạn (hoặc skill ảnh) | File ảnh · Link ảnh Drive · Alt text — bài không ảnh vẫn đăng được, có ảnh thì chuẩn SEO hơn |
| Hệ thống | Máy tự điền | Trạng thái · Link web sau đăng · WordPress Media ID — bạn đừng sửa tay ba cột này |
Phiên viết bài bị “khoá tay”: AI chỉ nhận đúng hai thứ — checklist SEO và brief của bài đó — rồi nhả ra HTML. Không tự do bịa cấu trúc.
__IMG1__, __IMG2__ — alt bắt buộc chứa từ khoá chínhcta-giua-bai và cta-cuoi-bai — để đo CTA nào ra tiềnyoast-rest-meta.php lên hostingClaude đưa bạn nội dung file. hPanel → File Manager → public_html/wp-content/ → tạo thư mục mu-plugins nếu chưa có → dán vào. Không cần kích hoạt, WordPress tự nhận.
Máy viết được chữ nhưng không tự nghĩ ra ảnh. Kéo ảnh vào cột File ảnh của dòng đó, hoặc dùng skill hmh-AIOS-anh-lark-wordpress. Bài thiếu ảnh vẫn lên, chỉ là yếu hơn.
Lịch chạy bằng Task Scheduler của Windows, không phải máy chủ đám mây. Task chỉ chạy khi máy bật và đã đăng nhập — máy tắt là hôm đó không có bài, và cũng không có ai báo cho bạn.
| Kiểm | Đúng thì thấy gì |
|---|---|
| Trên bảng Lark | Dòng vừa đăng chuyển Đã đăng, có Link web sau đăng bấm được và WordPress Media ID. |
| Địa chỉ bài | Đúng dạng tenmien.com/url-slug/ — không phải ?p=123. |
| Ảnh bìa | Bài có ảnh đại diện, và trong thân bài không còn chữ __IMG1__ nào sót lại. |
| Meta Yoast | WordPress → sửa bài → khung Yoast hiện đúng Meta Title và Description của bảng. Trống nghĩa là thiếu mu-plugin. |
public_html/.htaccess, thêm dòng này lên đầu file rồi thử lại:RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
node .claude/skills/hmh-AIOS-dang-bai-seo/scripts/royal-mcp.mjs upload duong-dan-anh.jpg "alt thử"{"id":…,"url":…} là ngon. Báo thiếu ROYAL_MCP_API_KEY → chưa điền key. Báo không nhận được Mcp-Session-Id → plugin chưa bật hoặc key sai.