tab-pilot: để AI agent thao tác trên Chrome, mình giữ quyền quyết định
tab-pilot cho AI agent làm việc trên ChatGPT, Substack, LinkedIn và TikTok ngay trong Chrome mà bạn đã đăng nhập. Agent lo thao tác; bạn quyết định nội dung và có tiếng nói cuối cùng trước khi công khai.

Vì sao mình làm tab-pilot
Mình thường có một ý muốn chia sẻ ở nhiều nơi. Một bài dài có thể phù hợp với Substack, phiên bản ngắn hơn dành cho LinkedIn, còn video trên TikTok cần cách giới thiệu khác. Phần khiến mình muốn tìm cách làm lại không phải chuyện viết cùng một nội dung cho mọi nơi, mà là những thao tác lặp đi lặp lại để đưa từng phiên bản lên đúng nền tảng.
Mình đã dùng AI để làm việc với nội dung, nên câu hỏi tiếp theo khá tự nhiên: nếu agent đã giúp chuẩn bị bản thảo, tại sao nó không thể làm tiếp phần mở trang, điền nội dung và thao tác trên giao diện? Những việc đó có thể giao cho máy làm, thay vì mình phải chuyển qua lại giữa các tab.
Nhưng mình không muốn giao luôn quyền quyết định đăng gì. Cùng một ý tưởng, mỗi nơi có người đọc và cách thể hiện khác nhau; việc chọn câu chữ và xác nhận bản cuối vẫn là của mình. tab-pilot xuất phát từ nhu cầu đó: để agent làm phần bấm, còn mình giữ phần phán đoán và cái gật đầu trước khi nội dung xuất hiện công khai.
tab-pilot thực chất là gì?
tab-pilot gồm một extension chạy trong Chrome và một máy chủ trung gian nhỏ gọi là relay. Thay vì phải tạo một phiên đăng nhập mới cho agent, nó thao tác trên các website mà bạn đã đăng nhập sẵn trong Chrome của mình. Claude Code, ChatGPT, script hoặc một workflow tự động đều có thể gửi yêu cầu qua relay.
Phạm vi hiện tại gồm bốn nền tảng:
| Trang | Agent làm được |
|---|---|
| ChatGPT | Trò chuyện, gửi file, chọn model, đọc kết quả kể cả hình được tạo; mở lại cuộc trò chuyện từ liên kết; tạo và cập nhật project. |
| Substack | Tạo bản nháp, tải ảnh, xuất bản có hoặc không gửi email cho người đăng ký; đọc thống kê và làm việc với Notes. |
| Đọc feed, tìm kiếm, đăng bài kèm ảnh hoặc video, viết và xuất bản article, bình luận, đọc thống kê. | |
| TikTok | Tải video kèm caption và hashtag, đọc thống kê theo video và bình luận. |
Điểm cần hiểu là đây là cách điều khiển giao diện website đang có, chứ không phải thay thế các nền tảng bằng một hệ thống đăng bài riêng. Vì vậy, các thao tác phụ thuộc vào những gì trang web cho phép trên giao diện của nó.
Mình chủ ý không hỗ trợ Facebook. Tự động hóa thao tác trên Facebook thường dẫn đến nguy cơ tài khoản bị khóa, nên đây không phải nền tảng mình muốn đưa vào tab-pilot.
Agent đi tới Chrome của bạn bằng cách nào?
Extension trong Chrome duy trì một kết nối đi ra tới relay chạy trên chính tài khoản Cloudflare của bạn; gói miễn phí là đủ. Agent gửi lệnh tới relay bằng token: Claude Code có thể dùng MCP, còn script có thể dùng HTTP hoặc WebSocket. Máy tính của bạn không cần mở cổng để nhận kết nối từ bên ngoài.
Khi nhận việc, extension mở các tab nền của riêng nó, gom trong nhóm màu xám mang tên tab-pilot. Nó không đụng vào những tab bạn đang sử dụng và không giành cửa sổ đang xem. Các tab làm việc này tự đóng sau 5 phút không hoạt động.
Với file lớn như video, dữ liệu đi qua kho file Cloudflare R2 của relay rồi được tự xóa sau một ngày. Trong thử nghiệm, hai file 73 MB và 150 MB tới nơi với nội dung giống hệt bản gốc, được đối chiếu bằng SHA-256. Video TikTok 73 MB tải lên mất khoảng 35 giây. Đó là kết quả của các lượt thử cụ thể, không phải cam kết tốc độ cho mọi lần tải.
Điều mình quan tâm hơn là biết thao tác có thực sự thành công hay không. Mỗi công cụ ghi đều đọc lại kết quả trên website sau khi thực hiện, rồi trả về trạng thái xác minh đúng hoặc sai kèm bằng chứng.
Có một lần, màn hình biên tập TikTok hiển thị caption đúng như đã nhập, nhưng sau khi đăng, TikTok lại lưu tên file làm caption. Nếu chỉ nhìn nút đăng và báo hoàn thành, agent đã bỏ qua lỗi. Bước đọc lại phát hiện sự khác biệt đó; sau đó công cụ được sửa để nhập caption theo đúng cách biểu mẫu của TikTok yêu cầu. Với mình, khả năng phát hiện sai quan trọng ngang với khả năng tự thao tác.

Một ngày chạy thật: 23/10/2026
Ngày 23/10/2026, mình thử nối các công việc xuất bản qua tab-pilot thay vì xử lý riêng từng nền tảng. Điểm xuất phát là một bài luận ChatGPT đã viết trong cuộc trò chuyện thuộc một project. Agent đọc lại bài, đưa thêm các sơ đồ từ Figma rồi xuất bản lên Substack, đồng thời gửi email cho 64 người đăng ký.
Từ chính cuộc trò chuyện đó, mình yêu cầu ChatGPT chuẩn bị phiên bản ngắn cho LinkedIn. Bài được đăng dưới dạng LinkedIn article kèm ảnh bìa; sau khi đăng, agent để lại bình luận dẫn tới bài Substack. Như vậy, người đọc trên LinkedIn có thể tìm tới bản dài mà không cần nhét toàn bộ nội dung vào một bài đăng.
Sau đó là TikTok. ChatGPT viết caption tiếng Việt và hashtag cho một video dọc dài 2 phút 52 giây. tab-pilot tải video lên, chờ TikTok hoàn tất bước kiểm tra nội dung rồi mới đăng. Đây là một bước của nền tảng cần được tôn trọng, không phải thứ agent nên cố bỏ qua.
Cùng ngày, agent đọc lại số liệu: bài Substack có tỷ lệ mở email 17%; LinkedIn ghi nhận 121 lượt hiển thị trong phạm vi 7 ngày. Phần phân tích video TikTok cho thấy phần lớn người xem rời đi ngay ở giây thứ nhất.
Mình không xem những số liệu đó là bằng chứng tự động hóa làm nội dung hiệu quả hơn. Chúng là thông tin để ra quyết định tiếp theo. Đặc biệt, việc người xem rời đi từ giây đầu khiến mình có lý do nhìn lại đoạn mở video, thay vì chỉ kiểm tra xem video đã đăng thành công hay chưa.

Vì sao relay không nằm trên máy mình?
Nếu chỉ muốn agent chạy ngay cạnh Chrome, một server cục bộ nghe có vẻ đơn giản hơn. Nhưng mình muốn có thể gửi công việc tới Chrome đang đăng nhập ở nhà ngay cả khi tác nhân ra lệnh không ở trên cùng máy. Đó là lý do relay được đặt trên internet, trong tài khoản Cloudflare của người dùng.
Có bốn tình huống cụ thể. Một agent chạy trên cloud hoặc công việc đặt lịch lúc 7 giờ sáng có thể gửi lệnh tới Chrome ở nhà. Khi đang dùng điện thoại, bạn có thể yêu cầu đăng một video TikTok kèm caption mà không cần tự ngồi trước máy tính.
Một hệ thống khác cũng có thể kích hoạt quy trình: khi sản phẩm mới được mở bán, nó yêu cầu tạo bài LinkedIn và bản nháp Substack. Hoặc mỗi sáng, một workflow lấy thống kê TikTok, LinkedIn và Substack về cùng một nơi để xem.
Những tình huống này dùng cùng một nguyên tắc: tác nhân gửi yêu cầu tới relay, còn phiên đăng nhập website vẫn nằm trong Chrome của bạn. Relay giúp tách nơi đưa ra yêu cầu khỏi nơi thực hiện thao tác, chứ không chuyển quyền quyết định xuất bản khỏi người dùng.
Giao quyền cho agent tới đâu?
Một agent có thể đăng bài trên tài khoản đã đăng nhập là chuyện phải cân nhắc kỹ. tab-pilot chia công cụ thành bốn mức: read chỉ đọc và không gây thay đổi; draft được tạo thay đổi riêng tư như bản nháp, nội dung ChatGPT hoặc tab; publish dành cho hành động công khai, có thể không đảo ngược; dev phục vụ gỡ lỗi.
Có hai lớp khóa riêng. Lớp đầu là token: bạn có thể cấp thêm token với quyền hạn hẹp, chẳng hạn bot xem thống kê chỉ có quyền đọc. Agent chỉ thấy những công cụ mà token đó được phép dùng.
Lớp thứ hai nằm ngay trong extension: công tắc Allow publishing mặc định tắt. Có token chưa đủ để xuất bản; người sở hữu Chrome phải chủ động bật công tắc này. Vì vậy, ngay cả khi token bị lộ, riêng token đó cũng không thể vượt qua khóa xuất bản đang tắt.
Mỗi thao tác ghi được lưu vào nhật ký trong 90 ngày, gồm ai thực hiện, công cụ nào được gọi và kết quả ra sao. Trên LinkedIn và TikTok, agent nghỉ khoảng 1–2 giây giữa các thao tác; nếu trang hiện bước xác minh bảo mật, nó dừng và báo lại thay vì cố đi tiếp.
Trước phiên làm việc, health check kiểm tra các trang ở chế độ chỉ đọc: còn đăng nhập không, cấu trúc trang có thay đổi không. Khi giao diện đổi làm một selector không còn đúng, selector có thể được sửa nóng mà không cần cập nhật code.
Các lớp này giúp giới hạn quyền và phát hiện vấn đề; chúng không biến thao tác công khai thành việc không có rủi ro. Vì vậy, với nội dung sắp đăng, mình vẫn muốn có bước người thật đọc và đồng ý.

Đăng chéo, nhưng vẫn có bước người duyệt
Để đăng một ý lên Substack và LinkedIn, mình tách quy trình thành hai phần rõ ràng: chuẩn bị riêng tư và xuất bản công khai. Bản nháp còn sửa được; bài đã gửi đi thì không.
Bước 1 – chuẩn bị, chưa có gì công khai. Agent tạo nháp Substack. ChatGPT viết bản LinkedIn article ngắn hơn, đoạn giới thiệu bài và nội dung bình luận dẫn tới bản Substack. Agent cũng tạo bản nháp article trên LinkedIn để chờ xem lại.
Bước 2 – người đọc và duyệt. Bạn mở hai bản nháp, kiểm tra nội dung, chỉnh những chỗ cần thiết rồi mới đồng ý cho quy trình đi tiếp. Agent không tự quyết định rằng bản thảo đã đủ tốt để xuất bản.
Bước 3 – công khai theo thứ tự. tab-pilot xuất bản bài Substack trước, tiếp đến là LinkedIn article, rồi mới bình luận liên kết Substack dưới bài LinkedIn. Nếu có bước thất bại, chạy lại quy trình sẽ tiếp tục từ chỗ dang dở thay vì làm lại toàn bộ.
Như vậy, automation nhận phần thao tác có thứ tự, còn người dùng giữ quyền quyết định ở thời điểm quan trọng nhất.

Những giới hạn hiện tại và cách bắt đầu
tab-pilot thao tác qua giao diện website nên nó cũng chịu sự thay đổi của giao diện đó. Nếu một nền tảng thiết kế lại trang, công cụ liên quan có thể ngừng hoạt động cho tới khi selector được sửa. Health check giúp nhận ra vấn đề, nhưng không có nghĩa mọi thay đổi đều được xử lý tự động.
Trên TikTok, hashtag hiện được nhập như văn bản, không được chọn từ danh sách gợi ý của TikTok nên có trường hợp chúng không thành liên kết bấm được. Một số thao tác không thực hiện được trong tab nền, chẳng hạn xóa bản nháp LinkedIn article; việc này vẫn phải làm thủ công. Hiện tại, mỗi relay chỉ phục vụ một Chrome tại một thời điểm.
Nếu muốn tự thử, bạn cần Chrome, Node.js và tài khoản Cloudflare miễn phí. Một script dùng để triển khai relay và ghi token; sau đó nạp extension vào Chrome, rồi kết nối Claude Code bằng một lệnh. Phần cài đặt mất khoảng 10 phút theo hướng dẫn hiện tại.
Mình nghĩ cách thử hợp lý là bắt đầu từ việc đọc và tạo bản nháp, xem agent trả kết quả gì, rồi mới cân nhắc bật quyền công khai. Điều đáng thử không phải là bỏ hẳn người ra khỏi quy trình, mà là xem phần thao tác nào có thể giao đi mà mình vẫn kiểm tra được kết quả.
Mình chia sẻ code tab-pilot cho thành viên cộng đồng Tony’s Friends.
Đọc tiếp trong Sản phẩm & công nghệ
The New Form of Software Is the Harness
When AI agents become first-class users, software itself must change.
Ghi chép Sản phẩm & công nghệ 20/10/2026AI code 30 phút, nhưng hệ thống mất 2 tiếng chỉ để... tự kiểm tra nhau
Một thử nghiệm nhỏ trong phát triển phần mềm khiến mình phải xem lại cách phân công công việc, sử dụng AI và cả cách chúng ta xác định thế nào là một kết quả đáng tin cậy.
Ghi chép Sản phẩm & công nghệ 12/10/2026Kết nối MCP A Realistic Dreamer với Claude và ChatGPT
Đưa nội dung, quyền truy cập và thông tin tài khoản ARD vào cuộc chat AI của chính bạn.
Giải thích Sản phẩm & công nghệ