Bộ tài liệu OpenClaw · Phần 2/5 · Google Ads

Aduca Hướng dẫn Agent Google Ads với OpenClaw

Agent Google Ads đọc số liệu, cảnh báo chi phí bất thường, gợi ý từ khoá phủ định, viết mẫu quảng cáo — bắt đầu bằng Google Ads Scripts (không cần xin API), sau đó mới nối API. Quy trình nội bộ Aduca, chia sẻ cho học viên · Cập nhật 02/10/2026

Agent Google Ads làm được gì

ViệcCấpCần bạn duyệt?
Đọc báo cáo mỗi sáng, so sánh tuần trước, chỉ ra chiến dịch lãng phí1Không
Cảnh báo: chi tiêu nhanh bất thường, quảng cáo bị từ chối, chiến dịch không có hiển thị1Không
Đọc báo cáo cụm từ tìm kiếm, đề xuất từ khoá phủ định1Không
Viết quảng cáo tìm kiếm thích ứng (15 dòng tiêu đề, 4 mô tả), nhóm tài sản Performance Max1Không
Kiểm tra trang đích: tốc độ, nội dung khớp từ khoá, nút gọi/đăng ký1Không
Hỏi đáp số liệu bằng tiếng Việt trên dữ liệu trực tiếp (Google Ads MCP, chỉ đọc)2Không
Tạo/sửa chiến dịch, ngân sách, giá thầu3Có
CấpDành choBạn được gì
Cấp 1 — Không cần APINgười mới, làm được ngay hôm nayGoogle Ads Scripts tự xuất số liệu ra Google Sheets mỗi sáng; Agent đọc Sheet, phân tích, cảnh báo, viết quảng cáo.
Cấp 2 — Đọc dữ liệu qua APISau khi đăng ký app/quyền với nền tảngAgent hỏi trực tiếp dữ liệu Google Ads qua máy chủ MCP chính thức của Google (chỉ đọc).
Cấp 3 — Thay đổi qua APICó người kỹ thuật theo dõiThay đổi tài khoản qua API — chỉ khi có người kỹ thuật; khuyên dùng script có bước "Xem trước".

Nên đi lần lượt: chạy ổn Cấp 1 vài tuần rồi mới lên Cấp 2. Ở Cấp 3, mọi thứ Agent tạo ra luôn ở trạng thái nháp / tạm dừng và chờ bạn trả lời "DUYỆT".

Chuẩn bị & cập nhật quan trọng 2026

Thay đổi từ 9/2026: Google Ads API không còn dùng developer token và không cần tài khoản người quản lý (MCC) để xin quyền. Quyền truy cập API gắn với dự án Google Cloud của bạn, xin trực tiếp trong Google Cloud Console. Các hướng dẫn cũ trên mạng nói "lấy developer token trong API Center" đã lỗi thời.
Thứ cần cóGhi chú
Tài khoản Google Ads đang chạyBạn là quản trị viên
Gmail riêng của bot (mục 7 hướng dẫn gốc)Thêm vào Google Ads với quyền Chỉ đọc (Read only): Google Ads → Quản trị → Quyền truy cập và bảo mật → +
Google Sheet "Báo cáo Google Ads"Chia sẻ cho Gmail của bot quyền Người xem (Agent chỉ cần đọc)
Dự án Google Cloud (dùng lại dự án mục 7)Chỉ cần cho Cấp 2

Nguyên tắc quyền tối thiểu: Gmail của bot chỉ có quyền Chỉ đọc trong Google Ads. Dù Agent hiểu sai yêu cầu, nó cũng không sửa được tài khoản.

Tạo Agent Google Ads

Trước khi bắt đầu: làm xong Hướng dẫn cài đặt nền tảng từ mục 1 tới mục 7 (cài VPS an toàn, Telegram, nhiều Agent, sao lưu 5b, kết nối Google). Mọi mã bí mật trong tài liệu này đều nhập bằng khung đỏ trên VPS, không gửi qua chat — xem Nguyên tắc an toàn.

Bước 1 — Tạo Agent Google Ads với bot Telegram riêng

Làm giống mục 6 hướng dẫn gốc. Tạo bot mới ở @BotFather (/newbot), lưu token vào trình quản lý mật khẩu. Mã Agent: gads.

Khối 1 — tạo Agent với thư mục làm việc riêng:

Lệnh TermiusCopy cả khối → dán vào Termius → Enter
openclaw agents add gads --workspace ~/.openclaw/workspace-gads

Khối 2 — nhập token bot vào ô ẩn (chạy riêng):

Nhập mã bí mậtChạy riêng dòng này → dán mã vào ô ẩn → Enter
openclaw secrets store set TG_GADS_TOKEN --kind secret   # dán token bot → Enter

Khối 3 — thêm bot, nối với Agent, đặt quyền: được chạy lệnh nhưng phải hỏi bạn trước lệnh lạ:

Lệnh TermiusCopy cả khối → dán vào Termius → Enter
openclaw config set channels.telegram.accounts.gads '{"enabled":true,"botToken":{"source":"store","provider":"default","id":"TG_GADS_TOKEN"}}' --strict-json --merge
openclaw agents bind --agent gads --bind telegram:gads
openclaw config set agents.entries.gads.tools.profile '"coding"' --strict-json
openclaw config set agents.entries.gads.tools.exec.mode '"ask"' --strict-json   # hỏi trước khi chạy lệnh lạ
openclaw gateway restart

Nhắn "hi" cho bot mới → bot trả mã 8 ký tự → duyệt: openclaw pairing approve telegram <CODE> --account gads.

Khối 4 — giao vai trò (tin nhắn này không chứa bí mật):

Tin nhắn TelegramCopy rồi dán vào khung chat với bot
Hãy cập nhật SOUL.md, IDENTITY.md và AGENTS.md của bạn:
- Tên: Google Ads. Bạn là chuyên gia quảng cáo Google (Tìm kiếm, Performance Max, YouTube, Shopping) của <tên doanh nghiệp>.
- Mục tiêu kinh doanh: <vd: chi phí/khách tiềm năng dưới 150.000đ>. Website: <tên miền>.
- Luôn trả lời tiếng Việt, có số liệu, so sánh với kỳ trước, kèm đề xuất cụ thể.
- Không tự thay đổi tài khoản quảng cáo. Mọi thay đổi là đề xuất; chỉ thực hiện khi tôi trả lời "DUYỆT".
- Không in, ghi ra file hay gửi mã bí mật; không yêu cầu tôi gửi mã bí mật qua chat.

Duyệt lệnh ngay trong Telegram (làm 1 lần cho cả bộ)

Agent có quyền chạy lệnh ở chế độ ask sẽ xin phép trước lệnh lạ. Để nhận yêu cầu duyệt ngay trong Telegram: lấy Telegram user ID của bạn (nhắn @userinfobot, nó trả về một dãy số) rồi chạy:

Lệnh TermiusCopy cả khối → dán vào Termius → Enter
openclaw config set channels.telegram.execApprovals '{"enabled":true,"approvers":["<Telegram user ID>"]}' --strict-json --merge
openclaw gateway restart

Khi Agent xin chạy lệnh, bot gửi nút Cho phép 1 lần / Luôn cho phép / Từ chối hoặc dòng /approve <id> allow-once. Đọc kỹ lệnh trước khi duyệt; lệnh có rm, curl … | bash, gửi dữ liệu ra ngoài → hỏi lại Agent vì sao cần. Chi tiết: Exec approvals.

Cấp 1 — Google Ads Scripts → Google Sheets (khuyên dùng)

Google Ads Scripts là đoạn mã chạy ngay trong tài khoản Google Ads, miễn phí, không cần xin API. Đoạn mã dưới chỉ đọc số liệu và ghi ra Google Sheet; Agent đọc Sheet đó mỗi sáng.

Bước 1 — Tạo Google Sheet

  1. Tạo Google Sheet tên Báo cáo Google Ads, copy đường link.
  2. Bấm Chia sẻ → thêm Gmail của bot với quyền Người xem.

Bước 2 — Dán script vào Google Ads

  1. Google Ads → Công cụ → Hành động hàng loạt → Tập lệnh (Scripts) → nút + → Tập lệnh mới.
  2. Xoá nội dung mẫu, dán đoạn mã dưới, thay link Sheet ở dòng 2.
  3. Bấm Uỷ quyền → chọn tài khoản Google của bạn → Cho phép.
  4. Bấm Xem trước: phần Nhật ký không báo lỗi, Sheet có 3 tab số liệu là đạt.
  5. Bấm Lưu, đặt Tần suất: Hằng ngày, 6:00.
Mã dán vào Google Ads ScriptsDán vào ô soạn tập lệnh trong Google Ads
// Aduca – xuất số liệu Google Ads ra Google Sheets (chỉ ĐỌC, không thay đổi tài khoản)
const SHEET_URL = '<link Google Sheet Báo cáo Google Ads>';

function main() {
  const ss = SpreadsheetApp.openByUrl(SHEET_URL);
  writeReport(ss, 'Hom qua', 'YESTERDAY');
  writeReport(ss, '7 ngay', 'LAST_7_DAYS');
  writeReport(ss, '30 ngay', 'LAST_30_DAYS');
}

function writeReport(ss, name, range) {
  const q = 'SELECT campaign.name, campaign.status, campaign.advertising_channel_type, ' +
    'metrics.cost_micros, metrics.impressions, metrics.clicks, metrics.ctr, ' +
    'metrics.average_cpc, metrics.conversions, metrics.conversions_value ' +
    'FROM campaign WHERE segments.date DURING ' + range + ' AND metrics.impressions > 0';
  const rows = [['Chiến dịch', 'Trạng thái', 'Loại', 'Chi phí', 'Hiển thị', 'Click', 'CTR', 'CPC TB', 'Chuyển đổi', 'Giá trị CĐ']];
  const it = AdsApp.search(q);
  while (it.hasNext()) {
    const r = it.next();
    rows.push([r.campaign.name, r.campaign.status, r.campaign.advertisingChannelType,
      r.metrics.costMicros / 1e6, r.metrics.impressions, r.metrics.clicks, r.metrics.ctr,
      r.metrics.averageCpc / 1e6, r.metrics.conversions, r.metrics.conversionsValue]);
  }
  const sh = ss.getSheetByName(name) || ss.insertSheet(name);
  sh.clearContents();
  sh.getRange(1, 1, rows.length, rows[0].length).setValues(rows);
  sh.getRange(1, 12).setValue('Cập nhật: ' + new Date());
}

Bước 3 — Cho Agent đọc và phân tích mỗi sáng

Lệnh TermiusCopy cả khối → dán vào Termius → Enter
openclaw automations create "0 7 * * *" \
  "Đọc Google Sheet Báo cáo Google Ads (link: <link Sheet>) bằng gog. So sánh hôm qua với trung bình 7 ngày: chi phí, chuyển đổi, chi phí/chuyển đổi theo chiến dịch. Gửi tôi bảng ngắn, 3 điểm cần chú ý và đề xuất. Chỉ đọc, không thay đổi gì." \
  --name "Bao cao Google Ads" --agent gads --tz Asia/Ho_Chi_Minh

Kết quả tự gửi về Telegram của Agent. Xem/sửa/xoá lịch: openclaw automations list, openclaw automations run <id> (chạy thử ngay), openclaw automations remove <id>. Cũng có thể nhắn bot: "Tạo lịch tự động … lúc … mỗi ngày".

Bước 4 — Từ khoá phủ định từ báo cáo cụm từ tìm kiếm

  1. Google Ads → Thông tin chi tiết và báo cáo → Cụm từ tìm kiếm → 30 ngày → Tải xuống CSV.
  2. Gửi file cho bot kèm tin nhắn:
Tin nhắn TelegramCopy rồi dán vào khung chat với bot
Đây là báo cáo cụm từ tìm kiếm 30 ngày. Sản phẩm của tôi: <mô tả>.
Liệt kê cụm từ tốn tiền nhưng không có chuyển đổi và không liên quan (đề xuất làm từ khoá phủ định, ghi kiểu đối sánh),
và cụm từ chuyển đổi tốt nên thêm làm từ khoá mới. Trả lời dạng bảng, kèm chi phí đã tiêu.

Bạn tự thêm từ khoá phủ định trong Google Ads, hoặc dùng cách "script có Xem trước" ở Cấp 3.

Viết quảng cáo và kiểm tra trang đích

Tin nhắn TelegramCopy rồi dán vào khung chat với bot
Viết 1 quảng cáo tìm kiếm thích ứng cho nhóm từ khoá <nhóm từ khoá>, trang đích <link>:
15 dòng tiêu đề (tối đa 30 ký tự, có số đếm ký tự), 4 dòng mô tả (tối đa 90 ký tự),
có từ khoá chính, lợi ích, con số, lời kêu gọi. Không dùng từ ngữ vi phạm chính sách (nhất, số 1, cam kết 100%).
Tin nhắn TelegramCopy rồi dán vào khung chat với bot
Mở trang đích <link> bằng trình duyệt: kiểm tra tốc độ, tiêu đề có khớp từ khoá <từ khoá> không,
nút gọi/đăng ký có hiện ngay màn hình đầu trên điện thoại không, form có quá nhiều ô không.
Liệt kê 5 việc sửa để tăng tỷ lệ chuyển đổi.

Cấp 2 — Hỏi dữ liệu trực tiếp qua Google Ads MCP (chỉ đọc)

Google phát hành máy chủ MCP chính thức cho Google Ads: Agent hỏi được số liệu bằng ngôn ngữ thường ("chiến dịch nào tốn nhiều nhất tuần này?"). Bản hiện tại chỉ đọc — không sửa được tài khoản.

Bước 1 — Xin quyền Google Ads API cho dự án Google Cloud

  1. Mở dự án Google Cloud đã tạo ở mục 7 → bật Google Ads API → Enable.
  2. Mở trang tổng quan Google Ads API trong dự án → mở mục Upgrade access level → Apply for access. Mức Explorer cho phép khoảng 2.880 thao tác/ngày trên tài khoản thật — đủ cho báo cáo. Cần nhiều hơn thì xin Basic (15.000/ngày).
  3. Trang Google Auth Platform → Data access: thêm scope https://www.googleapis.com/auth/adwords.

Bước 2 — Tạo file đăng nhập (ADC) trên laptop rồi đưa lên VPS

Cài Google Cloud CLI (gcloud) trên laptop. Tải file OAuth client (loại Desktop, mục 7) về laptop. Đăng nhập bằng Gmail của bot (Gmail chỉ có quyền Chỉ đọc trong Google Ads):

Lệnh trên máy tính của bạnDán vào Terminal/Termius local trên laptop
gcloud auth application-default login \
  --client-id-file=<đường dẫn client_secret.json> \
  --scopes=https://www.googleapis.com/auth/adwords,https://www.googleapis.com/auth/cloud-platform
scp ~/.config/gcloud/application_default_credentials.json openclaw@<IP_VPS>:~/gads-adc.json
rm ~/.config/gcloud/application_default_credentials.json   # xoá bản trên laptop

Windows: file nằm ở %APPDATA%\gcloud\application_default_credentials.json — đưa lên VPS bằng SFTP của Termius rồi xoá bản trên máy.

Bước 3 — Cài và đăng ký máy chủ MCP trên VPS

Lệnh TermiusCopy cả khối → dán vào Termius → Enter
mkdir -p ~/.config/google-ads-mcp && chmod 700 ~/.config/google-ads-mcp
mv ~/gads-adc.json ~/.config/google-ads-mcp/adc.json && chmod 600 ~/.config/google-ads-mcp/adc.json
sudo apt install -y pipx && pipx ensurepath
openclaw mcp set googleads '{"command":"pipx","args":["run","--spec","git+https://github.com/googleads/google-ads-mcp.git","google-ads-mcp"],"env":{"GOOGLE_PROJECT_ID":"<ID dự án Google Cloud>","GOOGLE_APPLICATION_CREDENTIALS":"/home/openclaw/.config/google-ads-mcp/adc.json"}}'
openclaw mcp probe googleads   # phải thấy 3 công cụ: list_accessible_customers, search, get_resource_metadata
openclaw gateway restart
Tin nhắn TelegramCopy rồi dán vào khung chat với bot
Dùng công cụ Google Ads MCP: liệt kê các tài khoản tôi truy cập được,
rồi lấy chi phí, click, chuyển đổi 7 ngày qua theo chiến dịch của tài khoản <ID tài khoản, không có dấu gạch>.
File adc.json chứa quyền đăng nhập lâu dài của Gmail bot (dạng chữ thường). Vì Gmail bot chỉ có quyền Chỉ đọc trong Google Ads, rủi ro bị giới hạn. Không bao giờ dùng Gmail quản trị chính để tạo file này. Thu hồi khi cần: Tài khoản Google của bot → Bảo mật → Ứng dụng bên thứ ba → xoá quyền.

Cấp 3 — Thay đổi tài khoản an toàn

Cách an toàn nhất cho người không chuyên: Agent viết script thay đổi, bạn bấm "Xem trước" trong Google Ads. Chế độ Xem trước cho thấy chính xác những gì sẽ thay đổi mà chưa áp dụng; bạn đồng ý mới bấm Chạy.

Tin nhắn TelegramCopy rồi dán vào khung chat với bot
Viết Google Ads Script thêm các từ khoá phủ định sau vào chiến dịch <tên chiến dịch> (đối sánh cụm từ): <danh sách>.
Script chỉ làm đúng việc này, có Logger.log từng thay đổi, không xoá gì, không đổi ngân sách hay giá thầu.
  1. Dán vào Google Ads Scripts (tập lệnh mới), bấm Xem trước, đọc phần Thay đổi.
  2. Đúng ý thì bấm Chạy. Không đặt lịch tự động cho script thay đổi.

Gọi Google Ads API để thay đổi trực tiếp (tạo chiến dịch, đổi ngân sách) chỉ nên làm khi có lập trình viên. Khi đó Gmail bot cần quyền Tiêu chuẩn, và quy tắc bắt buộc: chiến dịch mới ở trạng thái PAUSED, ngân sách trần, ghi nhật ký, chờ "DUYỆT".

Lớp an toàn cuối cùng: đặt giới hạn ngân sách tài khoản (Thanh toán → Ngân sách tài khoản) và theo dõi email cảnh báo của Google Ads.

Mẫu giao việc hay dùng

ViệcTin nhắn mẫu (tóm tắt)
Kiểm tra sức khoẻ tài khoản"Từ Sheet báo cáo 30 ngày: chiến dịch nào chi phí/chuyển đổi gấp đôi mục tiêu, chiến dịch nào bị giới hạn ngân sách nhưng hiệu quả tốt?"
Kế hoạch ngân sách theo mùa"Lập kế hoạch ngân sách tháng 11 cho 3 chiến dịch, tính cả 11.11 và Black Friday, giữ chi phí/đơn dưới …"
Performance Max"Viết nhóm tài sản Performance Max: 5 tiêu đề ngắn, 5 tiêu đề dài, 5 mô tả, gợi ý tín hiệu đối tượng."
Shopping / Merchant Center"Kiểm tra file sản phẩm (gửi kèm): tiêu đề nào thiếu thương hiệu, màu, kích thước; đề xuất tiêu đề tối ưu."
Đối thủ"Tìm trên Google từ khoá … (không bấm quảng cáo), liệt kê thông điệp quảng cáo của 5 đối thủ, đề xuất điểm khác biệt."

Lỗi thường gặp & cách sửa

Hiện tượngNguyên nhânCách sửa
Script báo "Authorization required"Chưa uỷ quyền hoặc đổi người tạo scriptMở script → Uỷ quyền lại
Script báo không mở được SheetSai link hoặc tài khoản chạy script không có quyền sửa SheetDùng link đúng; người tạo script phải có quyền chỉnh sửa Sheet
Agent báo không đọc được SheetChưa chia sẻ Sheet cho Gmail botChia sẻ quyền Người xem cho Gmail bot
openclaw mcp probe lỗiThiếu pipx/git, sai đường dẫn adc.json, chưa bật Google Ads APIChạy lại Bước 3; kiểm tra ls -l ~/.config/google-ads-mcp/
PERMISSION_DENIED / chưa đủ quyền truy cậpDự án Cloud chưa được duyệt mức truy cập phù hợpXem lại trang tổng quan Google Ads API trong Cloud Console
Không thấy tài khoảnGmail bot chưa được thêm vào Google AdsQuản trị → Quyền truy cập → thêm Gmail bot (Chỉ đọc)

Lưu ý chính sách

Học trực tiếp cùng Aduca

Muốn dựng đội AI Agent chạy thật cho doanh nghiệp?

Khóa Meta Ads AI Automation do Nguyễn Đức – Chủ tịch Aduca Group đào tạo trực tiếp 3 ngày: cài OpenClaw, dựng Agent quảng cáo, nội dung, chốt sale, kế toán trên chính tài khoản của bạn.

Nguồn

Miễn trừ trách nhiệm

Tài liệu này là quy trình nội bộ Aduca đang sử dụng để triển khai AI Agent và giảng dạy trong các lớp AI Agent, được chia sẻ công khai miễn phí cho mục đích học tập và tham khảo. Nội dung được đối chiếu với tài liệu chính thức của OpenClaw và của các nền tảng liên quan tại thời điểm cập nhật (02/10/2026).

  • Phần mềm của bên thứ ba: OpenClaw là phần mềm mã nguồn mở do cộng đồng phát triển, không thuộc sở hữu của Aduca. Các plugin cộng đồng, Telegram, Zalo, Meta, Google, TikTok và nhà cung cấp VPS/AI là dịch vụ của bên thứ ba. Aduca không bảo đảm các phần mềm, dịch vụ này hoạt động liên tục, không lỗi hay không thay đổi; lệnh, giao diện và chính sách có thể khác so với tài liệu.
  • Trách nhiệm của người áp dụng: bạn tự chịu trách nhiệm về VPS, tài khoản, mã bí mật, dữ liệu, chi phí phát sinh (VPS, API AI, ngân sách quảng cáo) và mọi hành động do Agent của bạn thực hiện. Hãy kiểm tra từng lệnh trước khi chạy, thử trên môi trường thử nghiệm và sao lưu trước mọi thay đổi.
  • Tuân thủ: khi Agent xử lý dữ liệu khách hàng, bạn có trách nhiệm tuân thủ điều khoản của từng nền tảng và pháp luật Việt Nam, bao gồm quy định về bảo vệ dữ liệu cá nhân. Kết nối Zalo cá nhân là cách không chính thức và có thể khiến tài khoản bị khoá.
  • Giới hạn trách nhiệm: trong phạm vi pháp luật cho phép, Aduca không chịu trách nhiệm cho bất kỳ thiệt hại trực tiếp hay gián tiếp nào (mất dữ liệu, lộ thông tin, khoá tài khoản, chi phí quảng cáo, gián đoạn kinh doanh…) phát sinh từ việc sử dụng tài liệu này.
  • Không phải tư vấn chuyên sâu: tài liệu không thay thế đánh giá bảo mật chuyên nghiệp. Hệ thống quan trọng hoặc xử lý nhiều dữ liệu khách hàng nên được chuyên gia rà soát riêng.
  • Không thu thập thông tin bí mật: Aduca không bao giờ yêu cầu bạn gửi token, mật khẩu, mã OTP hay file bí mật.
  • Bản quyền: © 2026 Công ty Cổ phần Giáo dục Aduca. Được trích dẫn khi ghi rõ nguồn aduca.vn. OpenClaw và các nhãn hiệu nêu trên thuộc về chủ sở hữu tương ứng.