> For the complete documentation index, see [llms.txt](https://docs.dibales.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.dibales.ai/n8n/tiktok-nodes.md).

# Tiktok Nodes

Dua node ini menghubungkan N8N langsung ke akun TikTok yang sudah terhubung di dibales.ai. **TikTok Trigger** menangkap event masuk sebagai pemicu workflow, sementara **TikTok** (action node) mengirim pesan dan mengelola komentar.

***

**Pastikan kamu sudah:**

* Menginstall package `@pake-ai/n8n-nodes-dibales-ai` di instance N8N kamu
* Membuat credential **dibales.ai account** di N8N menggunakan API Key dari dashboard dibales.ai
* Menghubungkan akun TikTok ke dashboard dibales.ai ➡️ [cs.pake.ai](https://cs.pake.ai/)

***

## Node 1: TikTok Trigger

<figure><img src="https://2065917909-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKUsDba2MmOSrIeqmsc9J%2Fuploads%2Fn7Wi8TSUwfMVLlVYANw0%2Fimage.png?alt=media&amp;token=2af76413-57ac-444f-a22e-715fb49feabf" alt=""><figcaption></figcaption></figure>

Memulai workflow setiap kali ada event masuk dari akun TikTok yang terhubung.

#### Parameter

| Parameter          | Keterangan                                                                                                                                                                                              |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Webhook URLs**   | URL endpoint yang didaftarkan ke dashboard dibales.ai. Tersedia dua mode: **Test URL** untuk pengujian saat workflow belum aktif, dan **Production URL** untuk workflow yang sudah aktif dan dipublish. |
| **Webhook Secret** | String rahasia yang disalin dari halaman Webhooks di dashboard dibales.ai. Digunakan untuk memverifikasi bahwa kiriman event benar-benar dari sistem dibales.ai.                                        |

#### Setup

1. **Tambahkan node Tiktok Trigger ke workflow kamu** Cari `dibales.ai - Tiktok` di panel node N8N, pilih sebagai trigger.
2. **Salin Webhook URL** Buka node, expand bagian **Webhook URLs**, klik tab **Test URL & Production URL**, lalu *copy* URL-nya.
3. **Buka dashboard dibales.ai,** pilih agent yang ingin dihubungkan → halaman [**Webhooks**](https://cs.pake.ai/agent/integrations/webhooks) → klik **Tambah Webhook**.
4. **Paste** url webhook dari N8N untuk **Test URL**, dan ulangi dengan klik Tambah Webhook untuk **Production URL**

<figure><img src="https://2065917909-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKUsDba2MmOSrIeqmsc9J%2Fuploads%2FmSCxpqFo1X5iSZiJqJQ7%2Fimage.png?alt=media&amp;token=03bf1055-92bc-4bdc-b5cd-5b4b8ada6a72" alt=""><figcaption></figcaption></figure>

**OPTIONAL**

1. **Salin Webhook Secret** Setelah webhook dibuat, salin nilai **Secret** yang tampil di dashboard.

<figure><img src="https://2065917909-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKUsDba2MmOSrIeqmsc9J%2Fuploads%2FCWKOXxQ2v6jTJihAHdoS%2Fimage.png?alt=media&amp;token=8005b5a9-6150-429e-9d15-c59a324f67a1" alt=""><figcaption></figcaption></figure>

2. **Paste Secret ke node** Kembali ke N8N, buka node Tiktok Trigger, paste secret ke field **Webhook Secret**, lalu simpan workflow.

<figure><img src="https://2065917909-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKUsDba2MmOSrIeqmsc9J%2Fuploads%2FugtD7JckZ4FcoCUvdYVR%2Fimage.png?alt=media&amp;token=3addd26f-c325-450a-850c-c5d3fc86086b" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Bagian ini berfungsi untuk mengamankan URL webhook agar tidak bisa diakses tanpa secret key tersebut
{% endhint %}

{% hint style="warning" %}
Pastikan secret key sesuai dengan webhook url yang digunakan
{% endhint %}

✅ **Selesai!** Workflow akan aktif menerima event dari Tiktok. Setiap event yang masuk akan muncul sebagai satu execution di tab **Executions**.

***

#### Output Ports

Node ini memiliki **7 output port**. Setiap port aktif untuk tipe event yang berbeda, sehingga kamu bisa membuat routing langsung dari satu trigger ke flow yang berbeda.

| Port                              | Event                                        | Keterangan                                                                                 |
| --------------------------------- | -------------------------------------------- | ------------------------------------------------------------------------------------------ |
| **0. Message Received**           | DM baru masuk dari pengguna                  | Teks, gambar, video, atau stiker yang dikirim ke akun kamu                                 |
| **1. Message Echo**               | Pesan yang dikirim dari akun kamu sendiri    | Berguna untuk logging atau monitoring pesan keluar                                         |
| **2. Message Read**               | Pengguna membaca DM yang kamu kirim          | Field `raw.last_read_timestamp` menunjukkan batas pesan terakhir yang sudah dibaca         |
| **3. Comment Created**            | Komentar baru di video kamu                  | Termasuk reply komentar, cek `raw.parent_comment_id` untuk bedakan komentar utama vs reply |
| **4. Comment Deleted**            | Komentar dihapus dari video kamu             |                                                                                            |
| **5. Comment Visibility Changed** | Status visibility komentar berubah           | Field `raw.visibility` berisi `HIDDEN`, `FRIENDS_ONLY`, atau `PUBLIC`                      |
| **6. Other**                      | Event lain yang tidak masuk kategori di atas | Bisa dipakai untuk debugging atau menangkap event baru                                     |

> 💡 Sambungkan hanya port yang kamu butuhkan. Port yang tidak terhubung tidak akan mempengaruhi performa workflow.

#### Struktur Data Trigger

Payload TikTok menggunakan key `raw`. Gunakan ekspresi berikut untuk mengakses field dari event di node selanjutnya:

**Field tersedia di semua event:**

| Field           | Ekspresi N8N              |
| --------------- | ------------------------- |
| Tipe event      | `{{ $json.event_type }}`  |
| Timestamp event | `{{ $json.occurred_at }}` |

**Untuk event DM (`Message Received` dan `Message Echo`):**

| Field                    | Ekspresi N8N                      |
| ------------------------ | --------------------------------- |
| ID percakapan            | `{{ $json.raw.conversation_id }}` |
| Open ID pengirim         | `{{ $json.raw.from.open_id }}`    |
| Username pengirim        | `{{ $json.raw.from.username }}`   |
| Tipe pesan               | `{{ $json.raw.message.type }}`    |
| Isi teks                 | `{{ $json.raw.message.text }}`    |
| Pengirim adalah follower | `{{ $json.raw.is_follower }}`     |

**Untuk event komentar (`Comment Created`):**

| Field                          | Ekspresi N8N                        |
| ------------------------------ | ----------------------------------- |
| ID komentar                    | `{{ $json.raw.comment_id }}`        |
| ID video                       | `{{ $json.raw.video_id }}`          |
| Username komentator            | `{{ $json.raw.from.username }}`     |
| Isi komentar                   | `{{ $json.raw.text }}`              |
| ID komentar induk (jika reply) | `{{ $json.raw.parent_comment_id }}` |

> 💡 Untuk membalas DM masuk, gunakan `{{ $json.raw.conversation_id }}` sebagai **Conversation ID** di node TikTok Send.

***

## Node 2: TikTok

Action node untuk mengirim pesan dan mengelola komentar melalui akun TikTok di dibales.ai.

### Credential

Di field **Credential**, pilih credential dengan tipe **dibales.ai account**. Jika belum ada, buat credential baru dan isi dengan API Key yang tersedia di dashboard dibales.ai.

> 💡 Berbeda dengan IG dan WA, node TikTok menggunakan **operation terpisah per tipe pesan** — bukan satu operation Send dengan dropdown Type.

***

### Resource: Message

Semua operation pengiriman pesan membutuhkan **Conversation ID** sebagai parameter utama. Ambil dari trigger event: `{{ $json.raw.conversation_id }}`.

**Operation: Send Text**

Kirim pesan teks ke percakapan TikTok.

| Parameter           | Keterangan                                                                  |
| ------------------- | --------------------------------------------------------------------------- |
| **Conversation ID** | ID percakapan tujuan. Ambil dari trigger: `{{ $json.raw.conversation_id }}` |
| **Text**            | Isi teks pesan yang akan dikirim.                                           |

***

**Operation: Send Image**

Kirim pesan berisi gambar.

| Parameter           | Keterangan                                                                       |
| ------------------- | -------------------------------------------------------------------------------- |
| **Conversation ID** | ID percakapan tujuan.                                                            |
| **URL**             | URL publik dari gambar yang akan dikirim. File harus bisa diakses secara publik. |

***

**Operation: Send Button**

Kirim pesan dengan tombol CTA yang bisa diklik pengguna.

| Parameter           | Keterangan                                                                                                        |
| ------------------- | ----------------------------------------------------------------------------------------------------------------- |
| **Conversation ID** | ID percakapan tujuan.                                                                                             |
| **Text**            | Teks utama pesan yang tampil di atas tombol.                                                                      |
| **Buttons**         | Daftar tombol. Klik **Add Button**, isi **Title** (label tombol) dan **URL** atau **Payload** sesuai tipe tombol. |

***

### Resource: Comment

Operasi untuk mengelola komentar di video TikTok.

| Operation  | Fungsi                                      | Parameter Utama                                             |
| ---------- | ------------------------------------------- | ----------------------------------------------------------- |
| **Reply**  | Balas komentar di video                     | `Comment ID`: ID komentar yang dibalas, `Text`: isi balasan |
| **Hide**   | Sembunyikan komentar                        | `Comment ID`: ID komentar yang akan disembunyikan           |
| **Unhide** | Tampilkan kembali komentar yang tersembunyi | `Comment ID`: ID komentar yang akan ditampilkan             |
| **Delete** | Hapus komentar                              | `Comment ID`: ID komentar yang akan dihapus                 |

> 💡 `Comment ID` bisa diambil langsung dari output port **Comment Created**: `{{ $json.raw.comment_id }}`

***

#### Output Data

Semua operation di **Resource: Message** mengembalikan output dengan struktur yang konsisten:

| Field                 | Tipe              | Keterangan                    |
| --------------------- | ----------------- | ----------------------------- |
| `message_id`          | String            | ID pesan di sistem dibales.ai |
| `platform_message_id` | String            | ID pesan asli di TikTok       |
| `sent_at`             | String (ISO 8601) | Timestamp saat pesan terkirim |

Akses field ini di node berikutnya dengan ekspresi: `{{ $json.message_id }}`, `{{ $json.platform_message_id }}`, dst.

***

### Catatan

> ⚠️ Nodes ini saat ini masih dalam tahap **staging**. Tersedia untuk early access. Perilaku dan parameter bisa berubah sebelum rilis publik penuh.

***

> \[Update Mei 2026] — Halaman ini dirilis bersamaan dengan peluncuran early access N8N nodes dibales.ai.
