@xiaostore
Sử dụng kỹ năng Agent Browser để tự động hóa việc đăng nhập vào GitHub và truy xuất danh sách các dự án đã gắn sao (starred) của người dùng đang đăng nhập, được sắp xếp theo số lượng sao. Bao gồm đầy đủ các bước thực thi, lưu ý quan trọng và cách xử lý sự cố.
# Sử dụng Agent Browser để Thu thập các Dự án Đã Gắn sao (Starred) trên GitHub
## Mục tiêu
Sử dụng kỹ năng Agent Browser để đăng nhập vào GitHub và lấy danh sách các dự án đã được gắn sao của người dùng hiện đang đăng nhập, sắp xếp theo thứ tự số lượng sao.
## Các Bước Thực thi (Thực hiện Theo Đúng Thứ tự)
1. **Khởi chạy Trình duyệt và Mở Trang chủ GitHub**
```bash
agent-browser --headed --profile "%HOMEPATH%\.agent-browser\chrome-win64\chrome-profiles\github" open https://github.com && agent-browser wait --load networkidle
```
2. **Lấy Thông tin Người dùng Hiện đang Đăng nhập**
```bash
agent-browser snapshot -i
# Find the user avatar or username link in the top-right corner to confirm login status
# Extract the username of the currently logged-in user from the page
```
3. **Điều hướng tới Thẻ Stars của Người dùng Hiện tại**
```bash
# Construct URL: https://github.com/{username}?tab=stars
agent-browser open https://github.com/{username}?tab=stars && agent-browser wait --load networkidle
```
4. **Sắp xếp theo Số lượng Sao (Nhiều Sao Nhất Xếp Trước)**
```bash
agent-browser snapshot -i # First get the latest snapshot to find the sort button
agent-browser click @e_sort_button # Click the sort button
agent-browser wait --load networkidle
# Select "Most stars" from the dropdown options
```
5. **Truy xuất và Ghi nhận Thông tin Dự án**
```bash
agent-browser snapshot -i
# Extract project name, description, stars, and forks information
```
## Các Lưu ý Quan trọng
### 1. Các Vấn đề về Tiến trình Ngầm (Daemon Process)
- Nếu bạn thấy thông báo "daemon already running", nghĩa là trình duyệt đã đang chạy sẵn
- **Quan trọng:** Khi tiến trình daemon đã chạy sẵn, các tham số `--headed` và `--profile` sẽ bị bỏ qua, và trình duyệt sẽ tiếp tục hoạt động ở chế độ đang chạy hiện tại của nó
- Bạn có thể tiếp tục chạy các lệnh tiếp theo mà không cần mở lại trình duyệt
- Để khởi động lại ở chế độ hiển thị giao diện (headed mode), trước tiên bạn phải thực thi lệnh: `agent-browser close`, sau đó mới sử dụng tham số `--headed` để mở lại
### 2. Tính chất Động của các Tham chiếu Phần tử (References)
- Các mã tham chiếu phần tử (@e1, @e2, v.v.) sẽ thay đổi sau mỗi lần trang web có sự biến đổi
- Bạn bắt buộc phải thực thi lệnh `snapshot -i` trước mỗi thao tác tương tác để lấy danh sách tham chiếu mới nhất
- Tuyệt đối không bao giờ giả định rằng các mã tham chiếu là cố định
### 3. Mẫu Thực thi Lệnh (Command Execution Pattern)
- Sử dụng toán tử `&&` để nối chuỗi nhiều lệnh với nhau, tránh việc phải khởi chạy tiến trình lặp đi lặp lại
- Chờ trang tải xong sau mỗi lệnh bằng cách dùng: `wait --load networkidle`
### 4. Trạng thái Đăng nhập
- Sử dụng tham số `--profile` để chỉ định một thư mục hồ sơ (profile directory), giúp duy trì trạng thái đăng nhập giữa các phiên
- Nếu phiên đăng nhập hết hạn, hãy đăng nhập thủ công một lần để lưu lại trạng thái
### 5. Mở rộng Biến Môi trường trên Windows
- **Quan trọng:** Trên hệ điều hành Windows, các biến môi trường như `%HOMEPATH%` bắt buộc phải được mở rộng thành đường dẫn thực tế trước khi sử dụng
- **Không đúng:** `agent-browser --profile "%HOMEPATH%\.agent-browser\chrome-win64\chrome-profiles\github"`
- **Đúng:** Trước tiên hãy chạy lệnh `echo $HOME` để lấy đường dẫn thực tế, sau đó sử dụng đường dẫn đã mở rộng đó
```bash
# Get HOME path (e.g., /c/Users/xxx)
echo $HOME
# Use the expanded absolute path
agent-browser --profile "/c/Users/xxx/.agent-browser/chrome-win64/chrome-profiles/github" --headed open https://github.com
```
- Nếu không mở rộng biến môi trường, bạn sẽ gặp phải các lỗi kết nối (ví dụ: `os error 10060`)
### 6. Cấu hình Sắp xếp
- Nhấp vào nút "Sort by: Recently starred" (thường có mã tham chiếu là e44)
- Chọn tùy chọn "Most stars" (Nhiều sao nhất)
- Truy xuất lại nội dung trang một lần nữa
## Xử lý các Sự cố Thường gặp
| Sự cố | Giải pháp |
|-------|----------|
| daemon already running | Thực thi trực tiếp các lệnh tiếp theo, hoặc đóng trình duyệt rồi mở lại |
| Tham chiếu phần tử không hợp lệ (Invalid element reference) | Thực thi lệnh snapshot -i để lấy các mã tham chiếu mới nhất |
| Trang chưa tải xong hoàn toàn | Thêm lệnh wait --load networkidle |
| Cần đăng nhập lại | Sử dụng chế độ --headed để đăng nhập thủ công một lần và lưu trạng thái |
| Thứ tự sắp xếp chưa được áp dụng | Xác nhận xem bạn đã nhấp đúng vào tùy chọn sắp xếp hay chưa |
## Định dạng Đầu ra Kết quả
- Tên dự án và đường dẫn liên kết
- Số lượng sao (được sắp xếp theo thứ tự giảm dần)
- Số lượt nhánh sao chép (Forks count)
- Mô tả dự án (nếu có)