create-openclaw-bot 5.3.5 → 5.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,6 +1,46 @@
1
1
  # Changelog (English)
2
2
 
3
3
 
4
+ ## [5.4.1] — 2026-04-14
5
+
6
+ ### 🐛 Docker CLI Generation Fixes
7
+
8
+ - **Browser Automation Restoration**: Reintroduced `xvfb` APT installation and the background Xvfb frame buffer execution (`Xvfb :99 -screen...`) to the generated Dockerfile `CMD`. This prevents headful Playwright processes from crashing on startup within the container.
9
+ - **REST API CORS Hotfix**: Reintroduced the runtime Internal IP injector script. It correctly patches `openclaw.json` at container startup strictly mapping Docker internal bridge IPs (`172...`) into `allowedOrigins`, eliminating 403 CORS blocks inside Docker Web Control UIs.
10
+
11
+ ### 🧹 Automated Uninstall Scripts
12
+
13
+ - **Wizard UI Generation**: The HTML setup wizard now generates a matching `uninstall-openclaw-*.bat/sh` script when downloading the configuration for Native or Docker deployments.
14
+ - **Complete Cleanup**: The generated scripts cleanly kill 9Router/OpenClaw background processes, uninstall global npm packages, and safely remove the project and `.9router` data directories, allowing for a fresh start whenever needed.
15
+
16
+
17
+ ## [5.4.0] — 2026-04-14
18
+
19
+ ### 🗑️ Remove: Telegram + Zalo Combo Channel
20
+
21
+ - **Deprecated and removed `telegram+zalo-personal` combo mode** from both the Web Wizard and CLI. The channel card is hidden in `index.html`, removed from `channels.js` and `data/index.js`, and all conditional logic has been purged from `controller.js`, `output.js`, `steps.js`, `multi-bot.js`, `win-bat.js`, `macos-sh.js`, `linux-sh.js`, `vps-sh.js`, `native-helpers-gen.js`, and `cli.src.js`. Combo mode will be redesigned in a future release.
22
+
23
+ ### 🏗️ Refactor: Multi-Bot Architecture
24
+
25
+ - **Unified multi-bot flag** — `isTelegramMultiBot`, `isSharedMultiBot`, and `isMultiBotWizard` have all been merged into a single `isMultiBot` boolean throughout the codebase. Reduces complexity and eliminates divergent code paths.
26
+ - **Fixed `agentDir` path resolution** — `agentDir` in generated `openclaw.json` is now correctly set as `.openclaw/agents/{slug}/agent` (relative to `OPENCLAW_HOME`). Previously used an incorrect project-root-level `agents/{slug}/agent` path that caused double-prefix errors at runtime.
27
+ - **Removed redundant `agents/` root folder creation** — OS scripts no longer attempt to `mkdir agents/` at the project root; all agent files are created under `.openclaw/agents/`.
28
+
29
+ ### 🧹 Config Generation Cleanup
30
+
31
+ - **Removed per-agent `auth-profiles.json` for 9Router/proxy mode** — When the provider is a proxy (9Router), per-agent `auth-profiles.json` is no longer generated. This file is only created for direct API providers where per-agent authentication is required.
32
+ - **Removed `.env` generation for native deployments** — Bot tokens and API keys for native mode are now managed via `openclaw channels login` / the 9Router dashboard. No `.env` is auto-generated in native scripts to avoid credential sprawl.
33
+ - **Removed per-agent `models.json` for Ollama (CLI)** — Ollama model config is already declared in `openclaw.json → agents.defaults.model`. The redundant per-agent `models.json` in `agents/{id}/agent/` is no longer generated.
34
+
35
+ ### 🤝 Cross-Workspace Rules in AGENTS.md
36
+
37
+ - **Multi-bot `AGENTS.md` now includes a "Cross-Workspace" section** — In multi-bot (relay) mode, each bot's `AGENTS.md` receives a `🤝 Workspace Chéo (Multi-Agent)` / `🤝 Cross-Workspace (Multi-Agent)` section listing the workspace paths of sibling bots. Rules: bots may read each other's `IDENTITY`, `SOUL`, and `MEMORY` files for shared context; they must not delete or overwrite each other's workspace files without explicit user instruction.
38
+
39
+ ### 🔧 win-bat.js Refactor
40
+
41
+ - **Extracted `appendGatewayStart()` and `appendDashboardInfo()` helpers** — Repeated PowerShell gateway launch and dashboard URL blocks are now deduplicated into two local helper functions inside `generateWinBat`, reducing the Windows batch generator by ~50 lines.
42
+
43
+
4
44
  ## [5.3.5] — 2026-04-12
5
45
 
6
46
  ### 🐛 Fix: MEMORY.md Syntax Error in Zalo Workspace Files
package/CHANGELOG.vi.md CHANGED
@@ -1,6 +1,46 @@
1
1
  # Changelog (Tiếng Việt)
2
2
 
3
3
 
4
+ ## [5.4.1] — 2026-04-14
5
+
6
+ ### 🐛 Sửa Lỗi Build Dockerfile
7
+
8
+ - **Phục hồi hỗ trợ Trình duyệt**: Đưa trở lại gói lệnh cài đặt `xvfb` APT và việc thực thi Xvfb quay trong nền (`Xvfb :99 -screen...`) vào Dockerfile `CMD`. Nó giúp các bot chạy Playwright có giao diện headful khởi động mà không bị crash vì thiếu khung màn hình.
9
+ - **Sửa lỗi REST API CORS**: Khôi phục script tiêm dải IP nội bộ lúc runtime. Script này tự động lấy các bridge IP nội bộ của Docker (`172...`) để cấp phép vào mục `allowedOrigins` cho `openclaw.json` ngay lúc container khởi động, sửa hoàn toàn lỗi bị block CORS 403 không vào được Web UI.
10
+
11
+ ### 🧹 Tự Động Tạo Script Gỡ Cài Đặt
12
+
13
+ - **Tính Năng Wizard UI**: Giao diện HTML wizard giờ đây sẽ tự động tải thêm một file script dọn dẹp hệ thống (`uninstall-openclaw-*.bat/sh`) mỗi khi tải file cài đặt cho Native hoặc Docker.
14
+ - **Dọn Dẹp Triệt Để**: Các script này giúp dừng sạch sẽ các tiến trình nền của 9Router/OpenClaw, gỡ cài đặt các gói npm toàn cầu và xoá an toàn thư mục project cũng như data `.9router`, giúp bạn làm sạch máy để cài đặt lại dễ dàng.
15
+
16
+
17
+ ## [5.4.0] — 2026-04-14
18
+
19
+ ### 🗑️ Xóa: Kênh Combo Telegram + Zalo
20
+
21
+ - **Tạm ngưng và xóa chế độ `telegram+zalo-personal` khỏi cả Web Wizard lẫn CLI.** Card kênh bị ẩn trong `index.html`, xóa khỏi `channels.js` và `data/index.js`, toàn bộ logic điều kiện liên quan đã được dọn sạch khỏi `controller.js`, `output.js`, `steps.js`, `multi-bot.js`, `win-bat.js`, `macos-sh.js`, `linux-sh.js`, `vps-sh.js`, `native-helpers-gen.js` và `cli.src.js`. Combo mode sẽ được thiết kế lại trong bản phát hành tương lai.
22
+
23
+ ### 🏗️ Tái cấu trúc: Kiến Trúc Multi-Bot
24
+
25
+ - **Gộp flag multi-bot** — `isTelegramMultiBot`, `isSharedMultiBot` và `isMultiBotWizard` đã được hợp nhất thành một biến `isMultiBot` duy nhất xuyên suốt codebase. Giảm độ phức tạp và loại bỏ các nhánh code phân kỳ.
26
+ - **Sửa đường dẫn `agentDir`** — `agentDir` trong `openclaw.json` được tạo ra nay được đặt đúng là `.openclaw/agents/{slug}/agent` (tương đối với `OPENCLAW_HOME`). Trước đây dùng đường dẫn sai ở root project gây lỗi double-prefix khi runtime.
27
+ - **Xóa thư mục `agents/` thừa ở gốc project** — OS scripts không còn cố tạo `mkdir agents/` ở root; toàn bộ file agent được tạo trong `.openclaw/agents/`.
28
+
29
+ ### 🧹 Dọn Dẹp Config Generation
30
+
31
+ - **Xóa `auth-profiles.json` per-agent khi dùng 9Router/proxy** — Khi provider là proxy, không còn sinh per-agent `auth-profiles.json` nữa. File này chỉ được tạo cho các provider API trực tiếp khi cần xác thực riêng từng agent.
32
+ - **Xóa `.env` trong native deployment** — Token bot và API key cho native mode giờ được quản lý qua `openclaw channels login` / 9Router dashboard. Không còn tự sinh `.env` trong native scripts để tránh rò rỉ credentials.
33
+ - **Xóa `models.json` per-agent cho Ollama (CLI)** — Config model Ollama đã khai báo trong `openclaw.json → agents.defaults.model`. File `models.json` thừa trong `agents/{id}/agent/` không còn được sinh nữa.
34
+
35
+ ### 🤝 Quy Tắc Cross-Workspace trong AGENTS.md
36
+
37
+ - **`AGENTS.md` multi-bot có thêm mục "Workspace Chéo"** — Ở chế độ multi-bot (relay), `AGENTS.md` của mỗi bot có thêm mục `🤝 Workspace Chéo (Multi-Agent)` liệt kê đường dẫn workspace của các bot anh em. Quy tắc: bot được phép đọc `IDENTITY`, `SOUL`, `MEMORY` của bot khác để hiểu ngữ cảnh chung; không được xóa hoặc ghi đè file workspace của bot khác trừ khi user yêu cầu rõ ràng.
38
+
39
+ ### 🔧 Tái Cấu Trúc win-bat.js
40
+
41
+ - **Tách `appendGatewayStart()` và `appendDashboardInfo()` thành helper riêng** — Các đoạn code khởi động gateway PowerShell và in URL dashboard được lặp đi lặp lại đã được đóng gói vào 2 hàm helper cục bộ trong `generateWinBat`, giảm khoảng 50 dòng code.
42
+
43
+
4
44
  ## [5.3.5] — 2026-04-12
5
45
 
6
46
  ### 🐛 Sửa: Lỗi Syntax MEMORY.md trong Workspace Zalo
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  # 🦞 OpenClaw Setup
4
4
 
5
5
  <p align="center">
6
- <a href="https://github.com/tuanminhhole/openclaw-setup/releases"><img src="https://img.shields.io/badge/RELEASE-v5.3.1-0EA5E9?style=for-the-badge" alt="Version 5.3.1" /></a>
6
+ <a href="https://github.com/tuanminhhole/openclaw-setup/releases"><img src="https://img.shields.io/badge/RELEASE-v5.4.1-0EA5E9?style=for-the-badge" alt="Version 5.4.1" /></a>
7
7
  <a href="https://github.com/tuanminhhole/openclaw-setup?tab=MIT-1-ov-file"><img src="https://img.shields.io/badge/LICENSE-MIT-success?style=for-the-badge" alt="MIT License" /></a>
8
8
  <a href="https://www.npmjs.com/package/create-openclaw-bot"><img src="https://img.shields.io/npm/v/create-openclaw-bot?style=for-the-badge&label=CLI&color=2563EB&logo=npm&logoColor=white" alt="NPM Version" /></a>
9
9
  <a href="https://github.com/tuanminhhole/openclaw-setup/stargazers"><img src="https://img.shields.io/github/stars/tuanminhhole/openclaw-setup?style=for-the-badge&color=eab308&logo=github&logoColor=white" alt="GitHub Stars" /></a>
@@ -24,20 +24,21 @@ An interactive **CLI tool** and **Setup Wizard** to deploy your own free AI Bot
24
24
 
25
25
  ---
26
26
 
27
- ## 🆕 What's new in v5.3.1
27
+ ## 🆕 What's new in v5.4.1
28
+
29
+ - 🏗️ **Multi-bot architecture refactored** — All duplicate flags (`isTelegramMultiBot`, `isSharedMultiBot`, `isMultiBotWizard`) merged into a single `isMultiBot`. Generated `agentDir` paths now correctly point to `.openclaw/agents/{slug}/agent` relative to `OPENCLAW_HOME`.
30
+ - 🗑️ **Telegram + Zalo combo channel removed** — Combo mode has been deprecated and removed from both the Web Wizard and CLI. It will be redesigned in a future release.
31
+ - 🤝 **Cross-workspace rules in `AGENTS.md`** — In multi-bot mode, each bot's `AGENTS.md` now includes a dedicated section describing which sibling workspace paths may be read and what write restrictions apply.
32
+ - 🧹 **Cleaner config generation** — Per-agent `auth-profiles.json` is no longer created for 9Router/proxy setups. Native scripts no longer generate `.env` files; credentials are managed via `openclaw channels login`.
33
+
34
+ <details>
35
+ <summary><b>Previous: What's new in v5.3.5</b></summary>
28
36
 
29
37
  - 🐛 **Fix: Telegram token input missing in combo channel** — When selecting "Telegram + Zalo Personal", the wizard now shows the Telegram Bot Token input field AND the Zalo Personal warning side by side.
30
38
  - 🐛 **Fix: Next button stuck on step 4 for combo** — Validation now correctly requires a Telegram token before enabling "Generate Configs" in combo mode.
31
39
  - 🐛 **Fix: Windows Docker script crashes with "docker not recognized"** — The generated `.ps1` now uses `Get-Command` to locate Docker, checks that Docker Desktop is running, and calls it via `&` operator — works even when Docker isn't in the default PowerShell PATH.
32
40
  - 🐛 **Fix: Zalo QR login instructions missing for combo in Windows script** — Post-install notes now show the `docker compose exec` login command when the combo channel is selected.
33
41
 
34
- <details>
35
- <summary><b>Previous: What's new in v5.3.0</b></summary>
36
-
37
- - 📱 **Telegram + Zalo Personal together** — New combo channel option lets you run one bot on both Telegram **and** Zalo Personal simultaneously, from a single config. No separate setup needed.
38
- - 🔌 **Auto-inject `zalouser` plugin** — When Zalo Personal is selected, the wizard now automatically adds `plugins.entries.zalouser` to `openclaw.json`, eliminating the most common Zalo "not configured" startup error.
39
- - ⏱️ **Docker cold-start fix baked in** — Dockerfile CMD now includes a background 45-second trigger that forces Zalo channel initialization after Docker network is warm. No more manual `lastTouchedAt` hacks.
40
-
41
42
  </details>
42
43
 
43
44
  ---
@@ -110,7 +111,7 @@ Run in your terminal → follow the interactive prompts → startup script is ge
110
111
  2. Open this repo as your workspace
111
112
  3. Paste into chat:
112
113
  ```
113
- Read SETUP.md and set up OpenClaw v5.3.1 for me.
114
+ Read SETUP.md and set up OpenClaw v5.3.1 for me.
114
115
  My bot token is X. Use 9Router (no API key).
115
116
  My project folder: <YOUR_PATH>
116
117
  ```
@@ -123,18 +124,18 @@ Read SETUP.md and set up OpenClaw v5.3.1 for me.
123
124
 
124
125
  ### Without Docker (Native — recommended for Ubuntu/VPS)
125
126
 
126
- | Requirement | Notes |
127
- | ----------------------- | ------------------------------------------------------------------------- |
128
- | **Node.js 20/22/24** | [Download](https://nodejs.org/) · Check: `node -v` · Avoid Node 25 for now |
129
- | **An AI provider** | 9Router (free) or Gemini/Claude/GPT-4o |
130
- | **Bot Token** | From Telegram BotFather or Zalo Developer |
131
- | **Ollama** _(optional)_ | Only if you want to run Gemma 4 locally · [Download](https://ollama.com/) |
127
+ | Requirement | Notes |
128
+ | ----------------------- | -------------------------------------------------------------------------- |
129
+ | **Node.js 20/22/24** | [Download](https://nodejs.org/) · Check: `node -v` · Avoid Node 25 for now |
130
+ | **An AI provider** | 9Router (free) or Gemini/Claude/GPT-4o |
131
+ | **Bot Token** | From Telegram BotFather or Zalo Developer |
132
+ | **Ollama** _(optional)_ | Only if you want to run Gemma 4 locally · [Download](https://ollama.com/) |
132
133
 
133
134
  ### With Docker (recommended for Windows/macOS)
134
135
 
135
136
  | Requirement | Notes |
136
137
  | ------------------------------- | --------------------------------------------------------------------------------------------- |
137
- | **Node.js 20/22/24** | [Download](https://nodejs.org/) · Check: `node -v` · Avoid Node 25 for now |
138
+ | **Node.js 20/22/24** | [Download](https://nodejs.org/) · Check: `node -v` · Avoid Node 25 for now |
138
139
  | **Docker Desktop + Compose V2** | [Download](https://www.docker.com/products/docker-desktop/) · Check: `docker compose version` |
139
140
  | **An AI provider** | 9Router runs as a sidecar container — no separate install needed |
140
141
  | **Bot Token** | From Telegram BotFather or Zalo Developer |
package/README.vi.md CHANGED
@@ -1,9 +1,9 @@
1
- <div align="center">
1
+ <div align="center">
2
2
 
3
3
  # 🦞 OpenClaw Setup
4
4
 
5
5
  <p align="center">
6
- <a href="https://github.com/tuanminhhole/openclaw-setup/releases"><img src="https://img.shields.io/badge/RELEASE-v5.3.1-0EA5E9?style=for-the-badge" alt="Version 5.3.1" /></a>
6
+ <a href="https://github.com/tuanminhhole/openclaw-setup/releases"><img src="https://img.shields.io/badge/RELEASE-v5.4.1-0EA5E9?style=for-the-badge" alt="Version 5.4.1" /></a>
7
7
  <a href="https://github.com/tuanminhhole/openclaw-setup?tab=MIT-1-ov-file"><img src="https://img.shields.io/badge/LICENSE-MIT-success?style=for-the-badge" alt="MIT License" /></a>
8
8
  <a href="https://www.npmjs.com/package/create-openclaw-bot"><img src="https://img.shields.io/npm/v/create-openclaw-bot?style=for-the-badge&label=CLI&color=2563EB&logo=npm&logoColor=white" alt="NPM Version" /></a>
9
9
  <a href="https://github.com/tuanminhhole/openclaw-setup/stargazers"><img src="https://img.shields.io/github/stars/tuanminhhole/openclaw-setup?style=for-the-badge&color=eab308&logo=github&logoColor=white" alt="GitHub Stars" /></a>
@@ -24,27 +24,20 @@ Công cụ **CLI tương tác** và **Setup Wizard** để tự triển khai Bot
24
24
 
25
25
  ---
26
26
 
27
- ## 🆕 Có gì mới trong v5.3.1
28
-
29
- - 🐛 **Fix: Combo channel thiếu ô nhập Telegram Bot Token** — Khi chọn "Telegram + Zalo Personal", wizard giờ hiển thị cả ô nhập Telegram Token LẪN cảnh báo Zalo Personal.
30
- - 🐛 **Fix: Nút Next bị kẹt ở bước 4 khi chọn combo** — Validation giờ yêu cầu đúng Telegram token trước khi kích hoạt "Generate Configs" ở combo mode.
31
- - 🐛 **Fix: Script Windows Docker crash "docker not recognized"** — File `.ps1` được generate giờ dùng `Get-Command` để tìm Docker, kiểm tra Docker Desktop đang chạy, và gọi lệnh qua toán tử `&` — hoạt động kể cả khi Docker không có trong PATH mặc định của PowerShell.
32
- - 🐛 **Fix: Thiếu hướng dẫn login Zalo QR cho combo trong script Windows** — Phần hướng dẫn sau cài đặt giờ hiển thị lệnh `docker compose exec` login khi chọn combo channel.
33
-
34
- <details>
35
- <summary><b>Trước đó: Có gì mới ở v5.3.0</b></summary>
27
+ ## 🆕 Có gì mới trong v5.4.1
36
28
 
37
- - 📱 **Telegram + Zalo Personal cùng lúc** — Tuỳ chọn kênh combo mới cho phép chạy 1 bot trên cả Telegram **và** Zalo Personal cùng lúc, từ 1 config duy nhất. Không cần cài riêng.
38
- - 🔌 **Tự cấu hình plugin `zalouser`**Khi chọn Zalo Personal, wizard tự động thêm `plugins.entries.zalouser` vào `openclaw.json`, xử lỗi "not configured" phổ biến nhất khi khởi động Zalo.
39
- - ⏱️ **Fix cold-start Docker tích hợp sẵn** Dockerfile CMD giờ script nền chạy sau 45 giây để kích hoạt kênh Zalo khi Docker network đã ổn định. Không cần hack `lastTouchedAt` thủ công nữa.
29
+ - 🏗️ **Tái cấu trúc kiến trúc multi-bot** — Các flag `isTelegramMultiBot`, `isSharedMultiBot`, `isMultiBotWizard` được gộp thành một biến `isMultiBot` duy nhất. Đường dẫn `agentDir` trong `openclaw.json` được tạo ra nay đúng chuẩn `.openclaw/agents/{slug}/agent` (tương đối với `OPENCLAW_HOME`).
30
+ - 🗑️ **Xóa hoàn toàn kênh combo Telegram + Zalo** Combo mode đã được gỡ bỏ khỏi cả Web Wizard lẫn CLI. Sẽ được thiết kế lại trong bản phát hành sau.
31
+ - 🤝 **Quy tắc cross-workspace trong `AGENTS.md`** chế độ multi-bot, `AGENTS.md` của mỗi bot thêm mục liệt đường dẫn workspace của các bot anh em quy tắc phối hợp.
32
+ - 🧹 **Config sạch hơn** — Không còn tạo `auth-profiles.json` per-agent cho 9Router; không còn tạo `.env` cho native scripts; không còn tạo `models.json` per-agent cho Ollama.
40
33
 
41
34
  <details>
42
- <summary><b>Trước đó: Có gì mới ở v5.2.3</b></summary>
35
+ <summary><b>Trước đó: Có gì mới ở v5.3.5</b></summary>
43
36
 
44
- - 🔄 **Upgrade 1 lệnh** Chạy `npx create-openclaw-bot@latest upgrade` trong thư mục bot để cập nhật OpenClaw không cần chạy lại wizard. Tự động nhận diện Docker hay Native.
45
- - 🪟 **Windows: double-click để upgrade** — File `upgrade.ps1` sẵn trong repo. Nhấp đúp xong không cần biết terminal.
46
- - 🐧 **Linux / macOS / Ubuntu** — `upgrade.sh` cho người dùng Unix. Chạy `bash upgrade.sh` hoặc pipe trực tiếp qua `curl` / `wget` từ GitHub.
47
- - 🛡️ **Dữ liệu giữ nguyên hoàn toàn** — `.env`, memory, sessions, credentials, OAuth token 9Router không bao giờ bị xoá khi upgrade.
37
+ - 🐛 **Fix: Lỗi Syntax MEMORY.md trong Workspace Zalo** Patch TOOLS.md trước đó được chèn sai vị trí, gây `SyntaxError` trên `setup.js`. Đã sửa.
38
+ - 🐟 **Cải tiến: Script gỡ cài đặt nằm trong thư mục project** — Tất cả 4 OS native + Docker ZIP đều `uninstall-*.{bat,sh}` ngay trong thư mục project sau khi setup xong.
39
+ - 🐛 **Fix: Windows Docker script crashes với "docker not recognized"** — File `.ps1` được tạo giờ dùng `Get-Command` để tìm Docker, kiểm tra Docker Desktop đang chạy, và gọi lệnh qua toán tử `&` hoạt động kể cả khi Docker không có trong PATH mặc định của PowerShell.
40
+ - 🐛 **Fix: Thiếu hướng dẫn login Zalo QR cho combo trong script Windows** — Phần hướng dẫn sau cài đặt giờ hiển thị lệnh `docker compose exec` login khi chọn combo channel.
48
41
 
49
42
  </details>
50
43
 
@@ -58,176 +51,176 @@ Công cụ **CLI tương tác** và **Setup Wizard** để tự triển khai Bot
58
51
  - 🧩 **Skills** — Web Search, Browser Automation, Memory, RAG, Code Interpreter, Image Gen
59
52
  - 🔌 **Plugins** — Voice Call, Matrix, MS Teams, Nostr
60
53
  - 🔀 **9Router** — AI proxy miễn phí với đăng nhập OAuth. Không cần API key. Hỗ trợ Claude Code, Codex, Gemini CLI.
61
- - 🧙 **Setup Wizard** — Giao diện web 5 bước (`index.html`). Không cần terminal.
54
+ - 🧙 **Setup Wizard** — 5 bước trực quan trên trình duyệt (`index.html`). Không cần terminal.
62
55
  - 💻 **CLI tương tác** — `npx create-openclaw-bot` — phù hợp cho Ubuntu, VPS, kỹ sư.
63
- - 🆓 **100% Miễn phí** — 9Router + Gemini free tier đủ để bắt đầu
64
- - 🔒 **Riêng tư** — API key lưu local, không bao giờ bị lộ ra ngoài
65
- - ⚡ **Nhanh** — Từ zero đến bot hoạt động trong dưới 5 phút
56
+ - 🆓 **Miễn phí hoàn toàn để bắt đầu** — 9Router + Gemini free tier không tốn đồng nào
57
+ - 🔒 **Riêng tư** — API key chỉ lưu trên máy bạn, không gửi đi đâu
58
+ - ⚡ **Nhanh** — Từ zero đến bot chạy được trong dưới 5 phút
66
59
 
67
60
  ---
68
61
 
69
- ## 🗺️ Chọn lộ trình phù hợp với bạn
62
+ ## 🗺️ Chọn cách triển khai
70
63
 
71
- > **Không biết nên chọn cách nào?** Đọc bảng dưới đây:
64
+ > **Không biết nên dùng cách nào?** Bảng dưới đây sẽ giúp bạn:
72
65
 
73
- | Bạn là ai | Môi trường | Lộ trình khuyên dùng |
74
- | ------------------- | --------------- | ------------------------------------- |
75
- | Không quen terminal | Windows / macOS | **Web Wizard** (`index.html`) |
76
- | Không quen terminal | Ubuntu Desktop | **Web Wizard** → chọn Native |
77
- | Quen terminal | Ubuntu / VPS | **CLI** (`npx create-openclaw-bot`) |
78
- | Muốn tự động hóa | Bất kỳ | **AI Agent** (Antigravity + SETUP.md) |
66
+ | Bạn là ai | Môi trường | Cách được đề xuất |
67
+ | --- | --- | --- |
68
+ | Không quen terminal | Windows / macOS | **Web Wizard** (`index.html`) |
69
+ | Không quen terminal | Ubuntu Desktop | **Web Wizard** → chọn Native |
70
+ | Quen terminal | Ubuntu / VPS | **CLI** (`npx create-openclaw-bot`) |
71
+ | Muốn tự động hóa hoàn toàn | Bất kỳ | **AI Agent** (Antigravity + SETUP.md) |
79
72
 
80
- ### 1️⃣ Cách A — Web Wizard (Không cần terminal)
73
+ ### 1️⃣ Tùy chọn A — Web Wizard (không cần terminal)
81
74
 
82
- Dành cho **Windows và macOS**. Không lệnh gì cả.
75
+ Phù hợp nhất cho **Windows và macOS**. Không cần dòng lệnh.
83
76
 
84
- 1. [Tải về ZIP](https://github.com/tuanminhhole/openclaw-setup/archive/refs/heads/main.zip) hoặc clone repo này.
77
+ 1. [Tải ZIP](https://github.com/tuanminhhole/openclaw-setup/archive/refs/heads/main.zip) hoặc clone repo này.
85
78
  2. Mở `index.html` trong trình duyệt.
86
- 3. Làm theo **5 bước** trong wizard:
87
- - **Bước 1:** Chọn hệ điều hành (Windows / macOS / Ubuntu / VPS)
79
+ 3. Làm theo **wizard 5 bước**:
80
+ - **Bước 1:** Chọn OS (Windows / macOS / Ubuntu / VPS)
88
81
  - **Bước 2:** Chọn kênh bot (Telegram / Zalo)
89
82
  - **Bước 3:** Chọn AI provider và model
90
- - **Bước 4:** Nhập Bot Token và cấu hình bot
83
+ - **Bước 4:** Nhập bot token và cấu hình
91
84
  - **Bước 5:** Tải script và chạy — xong!
92
- 4. Script được tạo ra sẽ tự động cài đặt các thứ cần thiết (9Router, Ollama, Docker v.v.) theo lựa chọn của bạn.
85
+ 4. Script tải về sẽ tự cài đặt mọi thứ cần thiết (9Router, Ollama, Docker, v.v.) dựa trên lựa chọn của bạn.
93
86
 
94
- > **Nên chọn Docker hay không?**
87
+ > **Docker hay không Docker?**
95
88
  >
96
- > - **Windows / macOS** → Nên dùng **Docker** (cô lập hoàn toàn, dễ quản lý)
97
- > - **Ubuntu / VPS** → Nên chọn **Không dùng Docker** (tiết kiệm RAM, ổn định hơn)
89
+ > - **Windows / macOS** → Dùng **Docker** (cô lập hoàn toàn, dễ quản lý)
90
+ > - **Ubuntu / VPS** → Dùng **Native (không Docker)** (ít RAM hơn, ổn định hơn)
98
91
 
99
- ### 2️⃣ Cách B — CLI tương tác (`npx`)
92
+ ### 2️⃣ Tùy chọn B — CLI tương tác (`npx`)
100
93
 
101
- Dành cho **kỹ sư, Ubuntu Desktop, VPS**. Nhanh và mạnh nhất.
94
+ Phù hợp nhất cho **kỹ sư, Ubuntu Desktop, VPS**. Nhanh và mạnh nhất.
102
95
 
103
96
  ```bash
104
97
  npx create-openclaw-bot
105
98
  ```
106
99
 
107
- Chạy lệnh trên trong Terminal → làm theo các prompt tương tác → script khởi động được tạo tự động.
100
+ Chạy trong terminal → làm theo hướng dẫn → script khởi động được tạo tự động.
108
101
 
109
102
  > Yêu cầu: **Node.js 20/22/24**. Kiểm tra: `node -v`
110
103
  >
111
- > Lưu ý: **tạm tránh Node.js 25**. Đã báo cáo OpenClaw lỗi với Node 25.
104
+ > Lưu ý: **tránh Node.js 25 hiện tại**. báo cáo OpenClaw gặp lỗi trên Node 25.
112
105
 
113
106
  <details>
114
- <summary><b>3️⃣ Cách C — AI Agent (Antigravity)</b></summary>
107
+ <summary><b>3️⃣ Tùy chọn C — AI Agent (Antigravity)</b></summary>
115
108
  <br>
116
109
 
117
110
  1. Mở [Antigravity IDE](https://antigravity.dev/)
118
111
  2. Mở repo này làm workspace
119
112
  3. Paste vào chat:
120
113
  ```
121
- Read SETUP.md and set up OpenClaw v5.3.1 for me.
122
- My bot token is X. Use 9Router (no API key).
123
- My project folder: <THƯ_MỤC_CỦA_BẠN>
114
+ Đọc SETUP.md cài đặt OpenClaw v5.4.1 cho tôi.
115
+ Bot token của tôi là X. Dùng 9Router (không cần API key).
116
+ Thư mục project: <ĐƯỜNG_DẪN_CỦA_BẠN>
124
117
  ```
125
118
 
126
119
  </details>
127
120
 
128
121
  ---
129
122
 
130
- ## 📋 Yêu cầu chuẩn bị
123
+ ## 📋 Yêu cầu
131
124
 
132
- ### Không dùng Docker (Native — khuyên dùng cho Ubuntu/VPS)
125
+ ### Không dùng Docker (Native — khuyến nghị cho Ubuntu/VPS)
133
126
 
134
- | Yêu cầu | Ghi chú |
135
- | ----------------------- | ------------------------------------------------------------------- |
136
- | **Node.js 20/22/24** | [Tải về](https://nodejs.org/) · Kiểm tra: `node -v` · Tạm tránh Node 25 |
137
- | **Một AI provider** | 9Router (miễn phí) hoặc Gemini/Claude/GPT-4o |
138
- | **Bot Token** | Từ Telegram BotFather hoặc Zalo Developer |
139
- | **Ollama** _(tuỳ chọn)_ | Chỉ cần nếu muốn chạy Gemma 4 local · [Tải về](https://ollama.com/) |
127
+ | Yêu cầu | Ghi chú |
128
+ | --- | --- |
129
+ | **Node.js 20/22/24** | [Tải](https://nodejs.org/) · Kiểm tra: `node -v` · Tránh Node 25 hiện tại |
130
+ | **AI provider** | 9Router (miễn phí) hoặc Gemini/Claude/GPT-4o |
131
+ | **Bot Token** | Từ Telegram BotFather hoặc Zalo Developer |
132
+ | **Ollama** _(tùy chọn)_ | Chỉ cần nếu muốn chạy Gemma 4 locally · [Tải](https://ollama.com/) |
140
133
 
141
- ### Dùng Docker (khuyên dùng cho Windows/macOS)
134
+ ### Dùng Docker (khuyến nghị cho Windows/macOS)
142
135
 
143
- | Yêu cầu | Ghi chú |
144
- | ------------------------------- | ---------------------------------------------------------------------------------------------- |
145
- | **Node.js 20/22/24** | [Tải về](https://nodejs.org/) · Kiểm tra: `node -v` · Tạm tránh Node 25 |
146
- | **Docker Desktop + Compose V2** | [Tải về](https://www.docker.com/products/docker-desktop/) · Kiểm tra: `docker compose version` |
147
- | **Một AI provider** | 9Router chạy như sidecar container — không cần cài riêng |
148
- | **Bot Token** | Từ Telegram BotFather hoặc Zalo Developer |
136
+ | Yêu cầu | Ghi chú |
137
+ | --- | --- |
138
+ | **Node.js 20/22/24** | [Tải](https://nodejs.org/) · Kiểm tra: `node -v` · Tránh Node 25 hiện tại |
139
+ | **Docker Desktop + Compose V2** | [Tải](https://www.docker.com/products/docker-desktop/) · Kiểm tra: `docker compose version` |
140
+ | **AI provider** | 9Router chạy như container sidecar — không cần cài riêng |
141
+ | **Bot Token** | Từ Telegram BotFather hoặc Zalo Developer |
149
142
 
150
143
  ---
151
144
 
152
- ## 🧠 AI Provider được hỗ trợ
145
+ ## 🧠 Các Provider AI được hỗ trợ
153
146
 
154
- | Provider | Chi phí | API Key | Ghi chú |
155
- | -------------------- | ------------- | ------------ | ----------------------------------------------------------------------------------------- |
156
- | **9Router** | 🆓 Miễn phí | ❌ OAuth | Khuyên dùng cho người mới. Tự route đến model tốt nhất. Hỗ trợ Claude CLI, Codex, Gemini. |
157
- | **Google Gemini** | 🆓 Free tier | ✅ Có | Chất lượng cao. Free tier rất rộng rãi. |
158
- | **Ollama / Gemma 4** | 🏠 Miễn phí | ❌ Không cần | Chạy 100% offline. Tự pull model khi khởi động. |
159
- | **Anthropic Claude** | 💰 Trả phí | ✅ Có | luận và viết tốt nhất. |
160
- | **OpenAI / Codex** | 💰 Trả phí | ✅ Có | GPT-4o, Codex Mini. |
161
- | **OpenRouter** | 🆓/💰 Hỗn hợp | ✅ Có | Nhiều model dưới một key. Một số miễn phí. |
147
+ | Provider | Chi phí | API Key | Ghi chú |
148
+ | --- | --- | --- | --- |
149
+ | **9Router** | 🆓 Miễn phí | ❌ OAuth | Khuyến nghị cho người mới. Tự route đến model tốt nhất. Hỗ trợ Claude CLI, Codex, Gemini. |
150
+ | **Google Gemini** | 🆓 Free tier | ✅ Có | Chất lượng cao. Free tier rất rộng rãi. |
151
+ | **Ollama / Gemma 4** | 🏠 Miễn phí | ❌ Không | Chạy 100% offline. Tự pull model khi khởi động lần đầu. |
152
+ | **Anthropic Claude** | 💰 Trả phí | ✅ Có | Chất lượng suy luận và viết tốt nhất. |
153
+ | **OpenAI / Codex** | 💰 Trả phí | ✅ Có | GPT-4o, Codex Mini. |
154
+ | **OpenRouter** | 🆓/💰 Hỗn hợp | ✅ Có | Nhiều model chung một key. Một số miễn phí. |
162
155
 
163
- > 🔀 **9Router v0.3.75+** hỗ trợ lossless passthrough cho Claude Code, Codex, Gemini CLI, Antigravity — tức là các AI tool ngoài đều có thể dùng 9Router làm endpoint mà không mất thông tin. Xem [docs/ai-providers.vi.md](docs/ai-providers.vi.md) để biết cách cấu hình.
156
+ > 🔀 **9Router v0.3.75+** hỗ trợ passthrough cho Claude Code, Codex, Gemini CLI, Antigravity. Xem [docs/ai-providers.md](docs/ai-providers.md) để biết chi tiết.
164
157
 
165
158
  ---
166
159
 
167
- ## 🔌 Kênh chat được hỗ trợ
160
+ ## 🔌 Các kênh được hỗ trợ
168
161
 
169
- - **Telegram** (✅ API chính thức) — Tìm **@BotFather** → `/newbot` → Copy token.
170
- - **Zalo Bot API** (✅ API chính thức) — [developers.zalo.me](https://developers.zalo.me) → Tạo bot → Copy token.
171
- - **Zalo Cá nhân** (⚠️ Unofficial) — Quét QR sau khi setup (không cần token). Dùng tài khoản phụ.
162
+ - **Telegram** (✅ Chính thức) — Tìm **@BotFather** → `/newbot` → Copy token.
163
+ - **Zalo Bot API** (✅ Chính thức) — Vào [developers.zalo.me](https://developers.zalo.me) → Tạo bot → Copy token.
164
+ - **Zalo Cá nhân** (⚠️ Không chính thức) — Quét QR sau khi cài (không cần token). Dùng tài khoản phụ.
172
165
 
173
- > ⚠️ **Zalo Cá nhân** dùng unofficial API. Tài khoản Zalo có thể bị hạn chế. Chỉ nên dùng tài khoản phụ.
166
+ > ⚠️ **Zalo Cá nhân** dùng API không chính thức. Tài khoản có thể bị hạn chế. Chỉ dùng tài khoản phụ.
174
167
 
175
168
  ---
176
169
 
177
- ## 📁 Cấu trúc repo
170
+ ## 📁 Cấu trúc Repo
178
171
 
179
172
  ```
180
- index.html ← Setup Wizard UI (mở bằng trình duyệt)
181
- style.css ← Giao diện wizard
182
- setup.js ← Logic wizard
173
+ index.html ← Wizard UI (mở trên trình duyệt)
174
+ style.css ← Giao diện Wizard
175
+ setup.js ← Logic Wizard
183
176
  cli.js ← CLI tương tác (npx create-openclaw-bot)
184
177
  CHANGELOG.md/.vi.md ← Lịch sử phiên bản
185
- README.md ← Hướng dẫn (English)
186
- README.vi.md ← Hướng dẫn (Tiếng Việt) — Bạn đang đọc
178
+ README.md ← Tiếng Anh
179
+ README.vi.md ← Bạn đang đọc (Tiếng Việt)
187
180
  SETUP.md/.vi.md ← Hướng dẫn kỹ thuật cho AI Agent
188
181
  docs/
189
- install-docker.md/.vi.md ← Cài Docker theo từng OS
190
- install-native.md/.vi.md ← Cài Native/PM2 theo từng OS
191
- ai-providers.md/.vi.md ← Cấu hình từng AI provider
192
- hardware-guide.md/.vi.md ← Chọn RAM cho Ollama/Gemma 4
182
+ install-docker.md/.vi.md ← Cài Docker theo OS
183
+ install-native.md/.vi.md ← Cài Native/PM2 theo OS
184
+ ai-providers.md/.vi.md ← Cấu hình AI provider
185
+ hardware-guide.md/.vi.md ← Yêu cầu RAM cho Ollama/Gemma 4
193
186
  faq.md/.vi.md ← Câu hỏi thường gặp
194
187
  ```
195
188
 
196
- > **Lưu ý:** Các script khởi động (`.bat`, `.sh`) **không có sẵn** trong repo — chúng được tạo ra bởi Web Wizard hoặc CLI dựa trên cấu hình bạn chọn.
189
+ > **Lưu ý:** Script khởi động (`.bat`, `.sh`) **không có trong repo** — chúng được tạo bởi Web Wizard hoặc CLI dựa trên cấu hình của bạn.
197
190
 
198
191
  ---
199
192
 
200
193
  ## ❓ Câu hỏi thường gặp
201
194
 
202
195
  <details>
203
- <summary><b>Thật sự miễn phí?</b></summary>
196
+ <summary><b> thực sự miễn phí không?</b></summary>
204
197
 
205
- Đúng. Docker, Google Gemini free tier, và bot token Telegram/Zalo đều miễn phí. Chỉ tốn tiền nếu bạn chọn provider trả phí như Claude hoặc GPT-4o.
198
+ Có. Docker, Google Gemini API (free tier), và token bot Telegram/Zalo đều miễn phí. Bạn chỉ trả tiền nếu chọn AI provider trả phí như Claude hoặc GPT-4o.
206
199
 
207
200
  </details>
208
201
 
209
202
  <details>
210
203
  <summary><b>Bot chạy ở đâu?</b></summary>
211
204
 
212
- Trên máy hoặc server của bạn. Nếu dùng Docker thì trong container. Nếu dùng Native thì một process được PM2 quản lý. Tắt máy thì bot tắt muốn 24/7 thì cần VPS.
205
+ Trên máy tính hoặc server của bạn. Với Docker thì chạy trong container; với Native thì chạy như tiến trình PM2. Nếu máy tắt thì bot cũng tắt. Dùng VPS để bot chạy 24/7.
213
206
 
214
207
  </details>
215
208
 
216
209
  <details>
217
- <summary><b>Cần Docker không?</b></summary>
210
+ <summary><b>Tôi có cần Docker không?</b></summary>
218
211
 
219
- Không bắt buộc. Windows/macOS khuyên dùng Docker cô lập tốt. Ubuntu/VPS khuyên dùng Native với PM2 — ít overhead hơn và OpenClaw đã bảo mật sẵn.
212
+ Không bắt buộc. Docker chỉ là một tùy chọn. Người dùng Windows/macOS nên dùng Docker để cô lập sạch sẽ. Người dùng Ubuntu/VPS nên cài native với PM2 — ít tốn RAM hơn và OpenClaw đã bảo mật sẵn.
220
213
 
221
214
  </details>
222
215
 
223
216
  <details>
224
- <summary><b>Làm sao tắt/khởi động lại?</b></summary>
217
+ <summary><b>Làm sao dừng/khởi động lại bot?</b></summary>
225
218
 
226
219
  **Docker:**
227
220
 
228
221
  ```bash
229
- docker compose down # Tắt
230
- docker compose up -d # Bật
222
+ docker compose down # Dừng
223
+ docker compose up -d # Chạy
231
224
  docker compose restart # Khởi động lại
232
225
  ```
233
226
 
@@ -242,66 +235,66 @@ pm2 restart openclaw-bot
242
235
  </details>
243
236
 
244
237
  <details>
245
- <summary><b> thể đổi AI model sau không?</b></summary>
238
+ <summary><b>Tôi thể đổi AI model sau không?</b></summary>
246
239
 
247
- Có. Chạy lại `npx create-openclaw-bot` trong thư mục bot, hoặc sửa trực tiếp `.openclaw/openclaw.json` khởi động lại bot.
240
+ Có. Chạy lại `npx create-openclaw-bot` trong thư mục bot, hoặc sửa trực tiếp `.openclaw/openclaw.json` restart bot.
248
241
 
249
242
  </details>
250
243
 
251
244
  <details>
252
- <summary><b>An toàn không?</b></summary>
245
+ <summary><b> an toàn không?</b></summary>
253
246
 
254
- API key chỉ lưu trên máy bạn trong file `.env`. OpenClaw không bao giờ truyền key ra ngoài. Khi dùng Ollama, toàn bộ AI inference chạy offline hoàn toàn.
247
+ API key của bạn chỉ được lưu trên máy trong file `.env` cục bộ. OpenClaw không gửi chúng đi đâu. Khi dùng Ollama, toàn bộ AI chạy hoàn toàn offline.
255
248
 
256
249
  </details>
257
250
 
258
251
  <details>
259
252
  <summary><b>9Router là gì?</b></summary>
260
253
 
261
- 9Router là AI proxy mã nguồn mở. Thay vì quản lý nhiều API key, bạn đăng nhập một lần qua OAuth tại `localhost:20128/dashboard`. Nó tự route request đến model tốt nhất. Bản v0.3.75+ còn hỗ trợ lossless passthrough cho Claude Code, Codex, Gemini CLI và Antigravity.
254
+ 9Router là AI proxy mã nguồn mở. Thay vì quản lý API key từ nhiều provider, bạn đăng nhập một lần qua OAuth tại `localhost:20128/dashboard`. Nó tự route request đến model AI tốt nhất hiện có. Từ v0.3.75, hỗ trợ passthrough cho Claude Code, Codex, Gemini CLI, và Antigravity.
262
255
 
263
256
  </details>
264
257
 
265
258
  <details>
266
259
  <summary><b>Skills và Plugins khác nhau thế nào?</b></summary>
267
260
 
268
- **Skills** thêm kỹ năng cho bot (Web Search, Browser Automation, Memory, RAG, Code Interpreter...) — cài qua `openclaw skills install` từ ClawHub.
261
+ **Skills** thêm khả năng cho agent (Web Search, Browser Automation, Memory, RAG, Code Interpreter...) — cài qua `openclaw skills install` từ ClawHub.
269
262
 
270
- **Plugins** thêm kênh hoặc tính năng runtime (Voice Call, Matrix, MS Teams) — cài qua `openclaw plugins install` từ npm.
263
+ **Plugins** thêm kênh hoặc extension runtime (Voice Call, Matrix, MS Teams...) — cài qua `openclaw plugins install` từ npm.
271
264
 
272
265
  </details>
273
266
 
274
267
  <details>
275
- <summary><b>Cần bao nhiêu RAM để chạy Gemma 4?</b></summary>
268
+ <summary><b>Cần bao nhiêu RAM cho Gemma 4?</b></summary>
276
269
 
277
- | Model | RAM tối thiểu (Native) | RAM tối thiểu (Docker) |
278
- | ------------ | ---------------------- | ---------------------- |
279
- | `gemma4:e2b` | ~4 GB | ~5 GB |
280
- | `gemma4:e4b` | ~8 GB | ~9 GB |
281
- | `gemma4:26b` | ~18 GB | ~20 GB |
282
- | `gemma4:31b` | ~24 GB | ~26 GB |
270
+ | Model | RAM tối thiểu (Native) | RAM tối thiểu (Docker) |
271
+ | --- | --- | --- |
272
+ | `gemma4:e2b` | ~4 GB | ~5 GB |
273
+ | `gemma4:e4b` | ~8 GB | ~9 GB |
274
+ | `gemma4:26b` | ~18 GB | ~20 GB |
275
+ | `gemma4:31b` | ~24 GB | ~26 GB |
283
276
 
284
- Xem chi tiết tại [docs/hardware-guide.vi.md](docs/hardware-guide.vi.md).
277
+ Xem [docs/hardware-guide.md](docs/hardware-guide.md) để biết thêm chi tiết kể cả cách cấu hình swap cho VPS.
285
278
 
286
279
  </details>
287
280
 
288
281
  ---
289
282
 
290
- ## 🔗 Links hữu ích
283
+ ## 🔗 Liên kết
291
284
 
292
285
  - [OpenClaw Docs](https://openclaw.ai/docs)
293
286
  - [9Router](https://github.com/decolua/9router)
294
- - [Google AI Studio (Gemini Key)](https://aistudio.google.com/)
287
+ - [Google AI Studio](https://aistudio.google.com/)
295
288
  - [Telegram BotFather](https://t.me/BotFather)
296
289
  - [Zalo Developer Platform](https://developers.zalo.me)
297
290
  - [Docker Desktop](https://www.docker.com/products/docker-desktop/)
298
291
  - [Ollama](https://ollama.com)
299
292
  - [OpenRouter](https://openrouter.ai)
300
- - [ClawHub (Skills Registry)](https://clawhub.com)
293
+ - [ClawHub (Skills)](https://clawhub.com)
301
294
 
302
295
  ---
303
296
 
304
- ## 📈 Lịch sử Star
297
+ ## 📈 Star History
305
298
 
306
299
  <div align="center">
307
300
 
@@ -311,13 +304,13 @@ Xem chi tiết tại [docs/hardware-guide.vi.md](docs/hardware-guide.vi.md).
311
304
 
312
305
  ---
313
306
 
314
- ## 🙏 Ghi công
307
+ ## 🙏 Lời cảm ơn
315
308
 
316
309
  - [OpenClaw](https://openclaw.ai) — AI Gateway framework
317
- - [9Router](https://github.com/decolua/9router) — AI proxy mã nguồn mở (OAuth, không cần API key)
318
- - [Playwright](https://playwright.dev) — Engine trình duyệt tự động
310
+ - [9Router](https://github.com/decolua/9router) — Open-source AI proxy (OAuth-based, no API keys)
311
+ - [Playwright](https://playwright.dev) — Browser automation engine
319
312
  - [ClawHub](https://clawhub.com) — Skills registry
320
- - [TheSVG](https://thesvg.org) — Bộ icon SVG vector chất lượng cao
313
+ - [TheSVG](https://thesvg.org) — High-quality SVG brand icons
321
314
 
322
315
  ---
323
316