Nói trước cho rõ. Mình đã làm đến bước có tờ A5. Mình chưa đưa trang lên mạng, chưa in tờ giấy, chưa quét thử mã QR, chưa gặp chủ tiệm nào. Nên bài này không có con số khách hay doanh thu. Nó cho thấy mỗi câu lệnh ra được gì, và chỗ nào mình phải kiểm lại bằng tay.
Cách mình làm để có bằng chứng
Có 7 câu lệnh trong bài (1 đến 5, rồi 6 và 6a ở bước 6). Mỗi câu mình giao cho một agent mới, chỉ nhận đúng câu đó, không biết gì về các câu khác. Mình giữ nguyên chữ của câu lệnh, rồi ghi lại kết quả agent trả về và phần mình kiểm lại.
- Tên thật, để cho chân thực. Tiệm mình chọn là tiệm có thật, trong bài mình để nguyên tên và địa chỉ như trên Google Maps. Tên các tiệm khác trong danh sách thì mình không nêu, vì họ không liên quan tới bài. Mình không lưu số điện thoại của ai. Bài này không liên quan tới tiệm đó, và mình chưa hỏi chủ tiệm. Trang và tờ giấy trong bài là bản mẫu mình tự dựng, không phải của tiệm.
- Mình làm tay một lần trước để biết đường đi, rồi mới giao lại từng câu cho agent để có kết quả đáng tin hơn.
- Mọi thứ dưới đây chạy ngày 18/10/2026.
Bước 1. Đọc danh sách tiệm trên Google Maps
Mình chọn tiệm sửa xe ở Quận 7, TP.HCM. Chọn đại, để chạy thử. Cách làm: để agent mở Google Maps, chỉ đọc, không bấm gì ngoài cuộn danh sách. Agent cần có công cụ điều khiển trình duyệt (mình dùng Claude trong Chrome).
Câu lệnh 1Kết quả agent trả về (trích 6 trong 19 dòng, bỏ cột địa chỉ và giờ, chỉ nêu tên tiệm được chọn)
| # | Tên | Sao | Đánh giá | Loại hình | Nút "Trang web" |
|---|---|---|---|---|---|
| 1 | (tên che) | 5,0 | 4 | Cửa hàng sửa chữa xe máy | Có |
| 3 | (tên che) | 5,0 | 128 | Cửa hàng sửa chữa xe máy | Không |
| 4 | (tên che) | 4,0 | 260 | Cửa hàng sửa chữa xe máy | Có |
| 5 | (tên che) | 4,5 | 56 | Cửa hàng sửa chữa xe máy | Không |
| 6 | Tiệm Sửa Xe Quốc Tuấn | 4,4 | 60 | Xưởng sửa chữa ô tô | Không |
| 7 | (tên che) | 3,9 | 73 | Đại lý xe Honda | Không |
Agent báo: "Số dòng: 19 (danh sách tự báo đã hết)". Cột giờ đóng cửa nhiều dòng ghi "không thấy", vì Maps chỉ hiện giờ đóng khi tiệm đang mở.
10 dòng đầu khớp với bản mình đọc tay: tên, số sao, số đánh giá, có hay không nút "Trang web". Agent đếm đúng 19 dòng. Lần làm tay mình đếm nhầm 10 dòng thành 9, nên đó là một chỗ agent làm tốt hơn mình.
Dòng 11 đến 19 mình chưa đối chiếu bằng mắt, vì ảnh chụp sau khi cuộn của agent bị treo. Dữ liệu của các dòng đó lấy từ chữ trên trang. Câu lệnh nên bỏ cột giờ đóng cửa, vì cột này có ít dữ liệu.
Bước 2. Lọc danh sách
Mình đặt ngưỡng: không có nút "Trang web", từ 10 đến 200 đánh giá, từ 4.0 sao trở lên. Đây là ngưỡng mình tự đặt để thử, chưa ai kiểm chứng. Câu này không cần công cụ nào, chỉ cần dán bảng ở bước 1 vào.
Câu lệnh 2Kết quả agent trả về (rút gọn, không nêu tên)
Giữ lại (3 nơi): #3 (5,0 sao, 128 đánh giá), #5 (4,5 sao, 56 đánh giá), #6 (4,4 sao, 60 đánh giá). Cột "cần mở Fanpage kiểm" để trống. Lưu ý của agent: "Loại hình của nó là xưởng ô tô dù tên là tiệm sửa xe, nên nên kiểm lại xem có sửa xe máy không." Bị loại (16 nơi), ví dụ: - #2: có nút "Trang web"; 2,8 sao (dưới 4.0); 9 đánh giá (dưới 10). - #7: 3,9 sao (dưới 4.0); là đại lý xe Honda. - #16: có nút "Trang web"; 2.176 đánh giá; là đại lý Honda.
Mình tự lọc lại bảng theo đúng ngưỡng và ra đúng 3 tiệm này. Mình đối chiếu từng lý do loại với số liệu trong bảng, đều khớp (3 giữ cộng 16 loại là đủ 19).
Mình viết "trông như đã đóng cửa", và agent hiểu thành "đang ngoài giờ mở cửa". Ý của mình là đóng cửa hẳn. Lần này không ảnh hưởng vì các nơi đó đã bị loại vì lý do khác, nhưng lần sau nên viết "đã đóng cửa vĩnh viễn".
Mình cũng chưa mở Fanpage của tiệm nào. "Không có nút Trang web trên Maps" chưa chắc là chưa có web. Chủ tiệm có thể chưa gắn link, hoặc đã có Fanpage. Bước này bạn nên tự xem bằng mắt.
Chọn một tiệm
Còn 3 tiệm. Mình chọn ngẫu nhiên bằng một dòng Python (random.choice). Ra tiệm số 6 trong bảng: Tiệm Sửa Xe Quốc Tuấn, 69 Mai Văn Vĩnh, phường Tân Hưng, TP.HCM, 4,4 sao, 60 đánh giá.
Giờ mở cửa 7:00 không có trong bảng ở bước 1 (bảng chỉ có giờ đóng). Mình mở trang chi tiết của tiệm trên Maps và đọc bằng tay: mở cửa 7:00, đóng cửa 20:00, có số điện thoại (mình không ghi lại), không có mục Trang web. Ngày nghỉ trong tuần thì chưa biết.
Một chỗ lệch cần nói: Maps xếp tiệm này vào loại "Xưởng sửa chữa ô tô", dù tên là tiệm sửa xe. Mình không đoán, nên trang demo chỉ ghi "Sửa xe".
Bước 3. Dựng trang demo
Một trang, đọc tốt trên điện thoại, chỉ dùng thông tin đã thấy trên Maps. Điều quan trọng nhất trong câu lệnh là dòng "không bịa": giá, dịch vụ và đánh giá của khách đều phải để trống khi chưa biết.
Câu lệnh 3Kết quả: file index.html, 193 dòng
Báo cáo agent trả về (rút gọn)
Nội dung trang: - Dải trên cùng ghi "Bản mẫu, chưa phải trang chính thức của tiệm" (nhắc lại ở chân trang). - Các mục Dịch vụ sửa chữa, Bảng giá, Giới thiệu về tiệm, Đánh giá của khách, cùng ô "Ngày làm việc trong tuần": tất cả ghi "chờ chủ tiệm điền". Không có giá, dịch vụ hay đánh giá nào do tôi bịa. Nút Gọi chưa gọi được. Vì số còn là chữ giữ chỗ nên tôi không gắn tel: (gắn sẽ quay số rác). Hiện nút cuộn xuống mục Liên hệ, và dưới nút có dòng giải thích. Chưa kiểm: - Chưa bấm thật nút Chỉ đường để xem Google Maps nhận địa chỉ và hiện đúng chỗ. - Chưa thử trên điện thoại thật, trình duyệt khác (Safari, Firefox) hay chế độ tối. Chiều rộng 390px là iframe trong màn hình Chrome rộng, không phải thiết bị thật.
Mình đọc toàn bộ file. Không có giá, dịch vụ hay đánh giá nào bị bịa. Thông tin có thật chỉ gồm tên, địa chỉ, giờ 7:00 đến 20:00 và chữ "Sửa xe". Mình tự đo lại trong khung 390px: nội dung rộng 374px, không tràn ngang, hai nút Gọi và Chỉ đường rộng 158px, cao 56px (agent báo "khoảng 165px", lệch nhẹ).
Agent thêm 4 mục trống (Dịch vụ, Bảng giá, Giới thiệu, Đánh giá) mà câu lệnh không yêu cầu rõ. Không có hại vì đều ghi "chờ chủ tiệm điền", nhưng trang dài hơn mình cần. Nút Gọi chưa có tel:, nên chưa gọi được cho đến khi có số thật.
Mình chưa bấm nút Chỉ đường, chưa mở trên điện thoại thật.
Bước 4. Làm tờ A5 có mã QR
Tờ một mặt: tên tiệm, dòng mời quét mã, mã QR, dòng nói rõ đây là bản mẫu, cuối tờ là chỗ cho tên và số điện thoại của bạn. Trang demo chưa nằm trên mạng, nên mã QR lúc này trỏ tới một địa chỉ giữ chỗ và tờ giấy ghi rõ "BẢN THỬ".
Câu lệnh 4Kết quả: file PDF một trang A5
Báo cáo agent trả về (rút gọn)
Đã kiểm: - Tôi render PDF thành ảnh rồi xem ảnh. Chữ tiếng Việt hiển thị đúng dấu trong ảnh, không bị ô vuông hay mất dấu. - Khổ giấy đúng A5: 419,5 × 595,3 pt (148 × 210 mm), 1 trang. - Mã QR được tạo từ đúng chuỗi https://example.com/ban-mau, bằng module có sẵn của reportlab. Chưa kiểm: - Chưa quét được mã QR, vì máy không có thư viện đọc mã. Tôi chỉ tin vào việc thư viện sinh mã từ chuỗi đúng. Bạn nên quét thử bằng điện thoại trước khi in. - Chưa in thử ra giấy.
Mình mở ảnh render và thấy đủ các dòng, chữ có dấu đúng, mã QR có viền trắng. Mình đo: PDF có 1 trang, khổ A5. Agent tự thêm dòng chữ nhỏ example.com/ban-mau dưới mã QR, câu lệnh không yêu cầu. Nó cũng kể bản đầu bị chữ lẻ ở dòng cuối nên nó đã sửa rồi chạy lại.
Chưa ai quét mã bằng điện thoại, chưa in thử ra giấy. Vì vậy mã QR chưa được xác nhận quét ra đúng địa chỉ. Khi trang có địa chỉ thật, phải tạo lại mã. Mình ghi chỗ cần sửa trong script: một dòng URL và dòng chữ nhỏ dưới mã.
Bước 5. Chuẩn bị mấy câu nói khi đưa tờ giấy
Câu lệnh 5Kết quả agent trả về (nguyên văn)
1. "Chào anh/chị, tôi có làm thử một trang web mẫu cho tiệm mình, tôi in ra tờ A5 này để anh/chị xem qua." 2. "Đây chỉ là bản mẫu thôi, tôi làm trước để anh/chị thấy nó trông ra sao." 3. "Anh/chị xem hoàn toàn miễn phí, chưa phải trả đồng nào." 4. "Anh/chị cứ quét mã hoặc vào địa chỉ trên tờ này để xem trên điện thoại, thấy chỗ nào chưa đúng cứ nói tôi." 5. "Xem xong không ưng cũng không sao, anh/chị cứ giữ tờ này, khi nào cần thì gọi tôi."
Đúng 5 câu, nói rõ là bản mẫu và miễn phí, không hứa tăng khách, xưng "tôi" gọi "anh/chị". Câu 1 có cụm "cho tiệm mình" nghe được theo hai nghĩa: tiệm của anh/chị, hoặc tiệm của tôi. Khi dùng, bạn nên đổi thành "cho tiệm của anh/chị".
Chưa ai nói thử những câu này với chủ tiệm thật. Chưa biết họ phản ứng ra sao.
Bước 6. Làm lại cho đầy đặn: landing page theo bố cục một trang có thật
Xem xong trang ở bước 3, nhận xét là trang hơi sơ sài: một cột, vài khung. Mình thử làm bản đầy đủ hơn, dàn trang giống một trang của tiệm sửa xe có thật. Phần này gồm ba việc: xem trang mẫu, ra lệnh dựng, rồi quay lại cách xem trang mẫu để có bằng chứng.
6.1. Mình xem trang mẫu thế nào
Mình chọn 3MP (3mp.vn), một hệ thống sửa xe máy ở TP.HCM. Lý do chọn: họ có website, và họ nằm ngay trong danh sách ở bước 1 (dòng có nút "Trang web"). Không phải vì mình đánh giá họ tốt hay xấu.
Cách làm: mở trang chủ bằng Chrome, chỉ đọc, cuộn từ đầu đến cuối, ghi thứ tự các mục và dạng khối. Thứ tự từ trên xuống: thanh menu dính khi cuộn; ảnh lớn chạy qua lại; dải 4 ô dịch vụ có biểu tượng; dải bài viết; thêm một dải 4 ô dịch vụ phụ; khuyến mãi; khung Facebook; tuyển dụng; video; chân trang nhiều cột (các chi nhánh, đơn vị chủ quản, chính sách).
Mình lấy gì, bỏ gì. Mình chỉ lấy thứ tự mục và dạng khối. Mình không chép chữ, ảnh, logo, màu hay tên dịch vụ của họ. Mình bỏ các mục cần nội dung thật mà tiệm mẫu không có: ảnh tiệm, bài viết, khuyến mãi, tuyển dụng, video. Mình thêm năm mục mà trang chủ 3MP không có: quy trình 4 bước, bảng giá, "vì sao chọn tiệm", đánh giá của khách, câu hỏi thường gặp. Đó là thói quen của trang giới thiệu dịch vụ, là lựa chọn của mình, không phải điều mình thấy ở 3MP.
6.2. Ra lệnh dựng landing page
Câu lệnh nhắc lại quy tắc "không bịa" ở bước 3, và thêm một quy tắc mới: mục nào chưa có nội dung vẫn phải có đủ khung và hình dáng như khi đã có, chỉ khác là chữ trong khung ghi "chờ chủ tiệm điền". Hai chỗ được phép dùng chữ gợi ý (tên 4 ô dịch vụ, 4 bước quy trình) phải gắn nhãn nhìn thấy được.
Câu lệnh 6Kết quả: file index.html, 418 dòng, khoảng 22 KB

Mở trang landing (bản mẫu, bấm thử được; nút Gọi chưa gọi được vì chưa có số thật)
Báo cáo agent trả về (rút gọn)
Đã làm: đủ 11 mục theo đúng thứ tự, thêm thanh dính đáy (Gọi, Chỉ đường) chỉ hiện từ 767px trở xuống. CSS trong file, biểu tượng là SVG vẽ tại chỗ. Màu chính xanh dầu #0f4c5c, màu nhấn hổ phách #f2a900. Chữ thân bài 16px. Mục 4 đến 9 có đủ khung, chữ trong khung là "chờ chủ tiệm điền". Câu giới thiệu chỉ dùng điều tôi đưa. Không có giá, cam kết, đánh giá hay con số bịa. Đã kiểm (Chrome thật): không có request nào ra mạng; ở khung 390px không cuộn ngang; nút, dòng câu hỏi, mục menu đều cao từ 48px; thanh đáy hiện ở 390px; bấm menu "Bảng giá" cuộn đúng; bấm mở câu hỏi được. Chưa kiểm: điện thoại thật, trình duyệt khác Chrome, màn hình dưới 390px; chưa bấm thử Chỉ đường để xem Maps mở đúng chỗ; độ tương phản chỉ ước lượng bằng mắt; chưa dùng trình đọc màn hình hay bàn phím; chưa kiểm hiệu ứng khi bật giảm chuyển động. Lưu ý: nút "Gọi" hiện trỏ về mục Địa chỉ vì chưa có số thật (gắn tel: với số giữ chỗ sẽ hỏng). Khi có số thật, đổi bốn chỗ.
Mình đọc hết 418 dòng: đủ 11 mục đúng thứ tự, không có giá, cam kết, bảo hành, đánh giá hay con số nào bị bịa. Thông tin thật chỉ có tên, địa chỉ, giờ 7:00 đến 20:00 và chữ "Sửa xe". Có 34 ô "chờ chủ tiệm điền". Không có liên kết gọi điện nào.
Mình tự đo lại bằng Chrome, nhúng trang vào khung 390px: nội dung rộng 373px bằng bề rộng khung (khung có thanh cuộn 15px), không phần tử nào tràn ngang ngoài dòng menu cuộn ngang; nút cao 48px, thanh đáy 52px, dòng câu hỏi 71px; chữ thân bài 16px; thanh đáy đang hiện; không tải gì qua mạng. Các số này khớp với báo cáo của agent.
Trang trông đầy đặn nhờ khung và bố cục, không nhờ nội dung. Có 34 ô trống, nên người xem sẽ thấy chữ "chờ chủ tiệm điền" lặp lại nhiều lần. Đó là cố ý, vì mình không biết giá hay dịch vụ của tiệm và không muốn bịa. Nó chỉ thành trang thật khi chủ tiệm điền.
Bốn tên dịch vụ gợi ý do agent chọn (câu lệnh cho phép, và có nhãn). Màu nhấn hổ phách cùng tông ấm với màu cam của 3MP; khác sắc nhưng ai so mắt có thể thấy gần. Chưa ai mở trang trên điện thoại thật hoặc trình duyệt khác Chrome, chưa bấm thử nút Chỉ đường, chưa đo độ tương phản bằng công cụ.
6.3. Quay lại cách xem trang mẫu (câu lệnh 6a, chạy sau)
Cách mình xem 3MP ở mục 6.1 là mình tự làm, nên chưa có gì để người khác kiểm lại. Sau khi dựng xong, mình giao việc xem đó cho một agent mới bằng một câu lệnh, và bắt nó quay lại việc cuộn trang thành ảnh động. Lưu ý thứ tự: câu 6 chạy trước, câu 6a chạy sau. Cấu trúc 11 mục trong câu 6 là bản mình gõ tay, không phải bảng của câu 6a.
Câu lệnh 6aKết quả agent trả về (tóm lại, không chép tên mục và nội dung của 3MP)
- Agent đếm 11 mục từ trên xuống, cùng thứ tự với bản mình gõ tay: thanh menu dính; ảnh chạy qua lại; hai dải 4 ô biểu tượng; dải bài viết; khuyến mãi; khung Facebook nhúng; tuyển dụng; video nhúng; chân trang bốn cột; dải cuối.
- Màu chính của họ là cam, phụ có đỏ và xanh dương; chữ tiêu đề là Open Sans; nội dung nằm trong cột giữa khoảng 1010px.
- Không có số điện thoại hay nút gọi luôn hiện. Số chỉ nằm ở mô tả một ô dịch vụ và ở chân trang. Luôn hiện ở mép màn hình chỉ có bong bóng chat và nút lên đầu trang.
- Agent quay được 1 ảnh động (8 khung hình, khá giật) và 7 ảnh chụp màn hình.
Mình giữ ảnh động và ảnh chụp trang 3MP làm tài liệu nội bộ. Mình không đưa vào bài này vì trong đó có ảnh, logo, người và video của họ.
Mình mở hai ảnh chụp của agent và thấy đúng như báo cáo: chân trang nền cam với ba chi nhánh, khung Facebook, bong bóng chat ở góc dưới trái, số điện thoại chỉ ở chân trang. Thứ tự mục khớp với bản mình gõ tay.
Việc này lộ ra hai lỗi của mình. Một: mình bỏ sót khung Facebook. Hai: mình ghi tay là "số hotline luôn hiện", sai. Mình thấy có liên kết gọi điện trong mã trang và suy ra, chứ không nhìn kỹ. Hệ quả: thanh Gọi, Chỉ đường dính ở đáy trang mẫu là lựa chọn của mình, không phải điều học từ 3MP.
Chưa ai xem bản điện thoại của 3MP và các trang con. Ảnh động chỉ 8 khung nên mục khuyến mãi chỉ xem lướt. Các con số của họ (người theo dõi, lượt xem) là lúc xem, sẽ đổi. Năm ảnh chụp còn lại mình chưa mở.
Bước 7. Đưa tận tay (mình chưa làm)
Đến tiệm, đưa tờ giấy, nói ngắn rằng đây là bản mẫu và chủ tiệm chưa phải trả gì để xem. Đừng hứa tăng khách. Bước này mình chưa làm, nên mình không có gì để kể.
Những chỗ mình vấp
- Công cụ điều khiển Chrome không chụp được màn hình khi thẻ đang ở trang trống của Chrome. Phải mở một trang web thường trước. Có lúc ảnh chụp bị treo, phải chụp lại.
- Cửa sổ Chrome không thu nhỏ được để thử bản điện thoại. Mình nhúng trang vào một khung rộng 390px bằng JavaScript tạm, không ghi vào file.
- Mình đếm nhầm số dòng ở lần làm tay (10 dòng thành 9). Agent đếm đúng 19 dòng khi cuộn hết danh sách.
- Maps xếp loại tiệm khác với tên tiệm. Phải mở trang chi tiết mới thấy.
- Câu lệnh 2 có một cụm chưa rõ nghĩa ("trông như đã đóng cửa"). Agent hiểu khác ý mình, may là không ảnh hưởng kết quả.
- Khi tự xem trang 3MP, mình ghi nhầm là họ có số điện thoại luôn hiện. Agent xem lại ở câu 6a và sửa được. Mình cũng bỏ sót khung Facebook của họ.
- Ảnh chụp trang landing bằng Chrome không giao diện bị cắt bên phải, vì cửa sổ kiểu này không thu nhỏ dưới khoảng 500px. Không phải lỗi của trang. Mình chụp lại qua khung 390px.
- Ảnh động quay trang 3MP chỉ có 8 khung, nên nhiều đoạn chỉ thấy lướt qua.
Còn thiếu
- Đưa trang lên mạng: mình chưa so sánh hosting miễn phí nào dùng được.
- Điều khoản của Google khi lưu dữ liệu Maps với số lượng lớn: mình chưa đọc kỹ. Vì vậy mình chỉ đọc từng danh sách một lần và không lưu số điện thoại.
- Quy định về nhắn tin quảng cáo tới chủ tiệm: mình chưa đọc nguyên văn, nên bài này chỉ nói chuyện gặp trực tiếp.
- Xin phép chủ tiệm trước khi đưa trang có tên và địa chỉ của họ lên mạng. Mình chưa hỏi, và chưa mở Fanpage của tiệm: "trên Maps không có nút Trang web" chưa chắc là tiệm chưa có website.
- Trang landing: nội dung vẫn là khung trống, chờ chủ tiệm điền. Chưa mở trên điện thoại thật.
- Xem trang mẫu: mình mới xem trang chủ 3MP bản máy tính, chưa xem bản điện thoại và các trang con.
- Quét thử mã QR và in thử tờ A5 khi có địa chỉ thật.