# first workflow

{% hint style="info" %}
**Mục tiêu**: tạo và chạy thành công 1 workflow đơn giản — mở Google.com và in tiêu đề trang ra log.\
**Thời gian**: 5 phút\
**Yêu cầu**: đã [cài Chrome + chromedriver](broken://pages/81d7f92f432b507de6945f6cb8882cf43bfecb21)
{% endhint %}

Trong bài này bạn sẽ làm quen với:

* Cách tạo app mới
* Giao diện Workflow Editor
* Kéo thả node + nối node
* Chạy workflow + đọc log

{% stepper %}
{% step %}

## Tạo app mới

1. Mở MIN Automate → vào tab **Automation**
2. Nhấn nút **Tạo app** (icon ➕ ở góc phải)
3. Điền form:
   * **Tên**: `Hello World`
   * **Phiên bản**: `1.0.0`
   * **Platform**: chọn **Browser**
   * **Mô tả**: `App đầu tiên — mở Google` (tùy chọn)
4. Nhấn **Tạo**

App mới được tạo → app tự mở **Editor** chia 2 chế độ: **Design** (giao diện) và **Workflow** (logic).
{% endstep %}

{% step %}

## Vào Workflow mode

1. Trong Editor, chọn tab **Workflow** ở góc phải
2. Bạn sẽ thấy:
   * **Sidebar trái**: danh sách node theo category, nút chọn browser
   * **Canvas giữa**: vùng vẽ workflow, có sẵn 1 node **Start** (xanh)
   * **Toolbar trên**: nút Save, Run, Stop, Log...
     {% endstep %}

{% step %}

## Mở Chrome để có browser dùng

Trước khi chạy, cần ít nhất 1 Chrome instance:

1. Trong sidebar trái → dropdown chọn browser hiện ô trống
2. Nhấn vào dropdown → chọn **+ Mở trình duyệt mới**
3. Cửa sổ Browser Config hiện ra → nhấn **Mở trình duyệt**
4. Chrome mới mở → trong dropdown sidebar hiện `Port XXXXX`

Tham khảo chi tiết: [Cài Chrome + chromedriver](broken://pages/81d7f92f432b507de6945f6cb8882cf43bfecb21)
{% endstep %}

{% step %}

## Thêm node GotoUrl

1. Trong sidebar trái → tìm section **BROWSER** → click để mở rộng
2. Tìm node **GotoUrl** (mở URL bất kỳ)
3. **Kéo thả** node `GotoUrl` vào canvas, đặt bên phải node Start

### Cấu hình node GotoUrl

1. Click vào node `GotoUrl` để mở **Node Modal**
2. Trong tab **Tùy chọn**:
   * **URL**: nhập `https://www.google.com`
3. Đóng modal (icon X ở góc phải)
   {% endstep %}

{% step %}

## Thêm node GetUrl + Log

Tương tự bước 4:

1. Kéo thêm node **GetUrl** từ section BROWSER vào canvas
2. Cấu hình:
   * **Variable**: nhấn nút **+** để tạo biến mới tên `currentUrl`, kiểu `string`
3. Kéo thêm node **Log** từ section GENERAL vào canvas
4. Cấu hình node Log:
   * **Message**: nhập `URL hiện tại: {{currentUrl}}`

{% hint style="info" %}
**Cú pháp `{{varName}}`**: dùng để **chèn giá trị biến** vào string. Ở đây `{{currentUrl}}` sẽ được thay bằng giá trị URL thật khi chạy.
{% endhint %}
{% endstep %}

{% step %}

## Nối các node lại

Workflow chạy theo thứ tự: `Start → GotoUrl → GetUrl → Log`

Cách nối:

1. Hover vào node `Start` → thấy chấm tròn xanh ở cạnh phải
2. Click giữ chấm tròn → kéo sang node `GotoUrl` → thả vào chấm tròn cạnh trái
3. Đường mũi tên nối 2 node xuất hiện ✅
4. Tương tự: nối `GotoUrl → GetUrl → Log`

{% hint style="warning" %}
**Lưu ý**: node có 2 kiểu output:

* **Dual**: success (chấm xanh trên) + fail (chấm đỏ dưới) — phổ biến cho hầu hết node browser/android
* **Single**: chỉ 1 output — node luôn chạy tiếp dù success hay fail

Trong tutorial này dùng output **success** (chấm xanh).
{% endhint %}
{% endstep %}

{% step %}

## Lưu workflow

Nhấn **Ctrl + S** (hoặc nút **Save** trên toolbar) để lưu.

Nếu thành công → góc trên hiện thông báo "Đã lưu".
{% endstep %}

{% step %}

## Chạy workflow

1. Đảm bảo sidebar trái đã chọn 1 browser (Port XXXXX)
2. Nhấn nút **▶ Chạy** (Run) trên toolbar
3. Workflow chạy:
   * Chrome tự mở Google.com
   * MIN Automate đọc URL hiện tại → lưu vào biến `currentUrl`
   * Log hiện thông báo: `URL hiện tại: https://www.google.com/`
     {% endstep %}

{% step %}

## Xem log

Nhấn nút **📋 Log** trên toolbar để mở Log Panel:

```
[10:30:01] Start workflow
[10:30:01] GotoUrl: https://www.google.com → OK
[10:30:02] GetUrl → "https://www.google.com/"
[10:30:02] Log: URL hiện tại: https://www.google.com/
[10:30:02] Finished
```

Mỗi dòng cho biết:

* **Thời gian** node chạy
* **Tên node** + **kết quả** + **giá trị output**
  {% endstep %}
  {% endstepper %}

## Bạn vừa làm gì?

🎉 Chúc mừng — bạn vừa tạo workflow đầu tiên!

Những khái niệm vừa dùng:

* **App** — gói chứa workflow + giao diện
* **Node** — khối lệnh đơn vị (GotoUrl, GetUrl, Log)
* **Edge** — đường nối thứ tự thực hiện giữa node
* **Variable** — biến lưu giá trị trung gian (`currentUrl`)
* **Browser** — Chrome instance được điều khiển

## Thử thách thêm (tùy chọn)

Mở rộng workflow:

{% stepper %}
{% step %}

## Thêm node SendKeys

1. Sau `GotoUrl` → kéo node **SendKeys** từ KEYBOARD
2. Cấu hình XPath: `//textarea[@name="q"]`
3. Cấu hình Keys: `MIN Automate`
   {% endstep %}

{% step %}

## Thêm node SendEnter

Thêm node **SendEnter** để gửi tìm kiếm
{% endstep %}

{% step %}

## Thêm node Sleep

Thêm node **Sleep** 3 giây để chờ trang load
{% endstep %}

{% step %}

## Thêm node Screenshot

Thêm node **Screenshot** để chụp ảnh trang kết quả

→ Bạn vừa có 1 bot **tự tìm kiếm Google + chụp ảnh kết quả**.
{% endstep %}
{% endstepper %}

## Bước tiếp theo

* Tìm hiểu chi tiết [Giao diện phần mềm](broken://pages/6f3831870544dbe91b893d868a1efb30609ee6fa) *(coming soon)*
* Học cách dùng [App Editor](broken://pages/d683fc8f7295de8d6ab4c2dec4ef5c15592c3297) *(coming soon)*
* Khám phá [Thư viện Nodes](broken://pages/3b5042dfbc486a3885964e5a08e841251bec614e) *(coming soon)*

Nếu gặp vướng mắc, xem [Câu hỏi thường gặp](broken://pages/0d5d2100197965ffbf74bfa19a6397cf1a1cfa06) *(coming soon)* hoặc liên hệ team support.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.minautomate.com/bat-dau/first-workflow.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
