Nexa Intelligence Docs
Pipeline Data

postings

Alur pengumpulan data media sosial bersiklus 15 menit via B3 Scraper di Phone Farm, ekstraksi X/Twitter trending, pencocokan taksonomi/pilar, snapshots PostgreSQL, pemanenan multichannel (X, FB, IG, TikTok), dan persistensi langsung ke tabel PostgreSQL & indeks Elasticsearch postings dan post_author.

Pipeline Data: postings (Media Sosial Terpadu)

Pipeline ini bertugas menjalankan pemanenan data percakapan media sosial secara dinamis dan adaptif dengan siklus berkala setiap 15 menit. Berbeda dari crawler statis konvensional, pipeline ini dipandu oleh dinamika topik yang sedang naik daun di masyarakat (trending topics), mencocokkannya dengan taksonomi isu strategis, melacak pergerakan trennya dalam snapshot historis, lalu mengerahkan armada ponsel fisik Android (Phone Farm Swarm) untuk memanen konten percakapan dari 4 platform utama: X (Twitter), Facebook, Instagram, dan TikTok.

Seluruh pemrosesan dilakukan langsung oleh modul B3 Scraper yang terpasang pada klaster Phone Farm dan langsung menginjeksi data terstruktur ke tabel relasional PostgreSQL serta indeks analitik Elasticsearch postings tanpa perantara worker D2.


1. Ringkasan Arsitektur 5 Tahap Siklus Pemrosesan

Berikut adalah diagram alur end-to-end pemanenan media sosial platform Nexa:

  [CRON SCHEDULER: */15 * * * *]
                 │
                 ▼ (Tahap 1)
   [B3 Scraper di Phone Farm Swarm] ──► Ekstraksi Linimasa Trending X/Twitter (Wilayah ID)
                 │                      (Keyword, Hashtag, Tweet Volume, Current Rank)
                 ▼ (Tahap 2)
      [Taxonomy & Pillar Matcher]   ──► Pencocokan ke taxonomy_nodes & taxonomy_keywords
                 │                      (Filter Noise Hiburan vs Isu Strategis / 7 Pilar)
                 ▼ (Tahap 3)
   [Normalisasi & Upsert PostgreSQL]
        ├──────────────────────────────────────────┐
        ▼                                          ▼
   [social_trending_topics]                   [social_trending_snapshots]
   (Master topik aktif, status, pilar)         (Time-series interval 15m, rank, laju volume)
        │
        ▼ (Tahap 4: Target Crawl Mission)
   [Phone Farm Swarm (ADB + Native APK)]
        ├─────────────────┬─────────────────┬─────────────────┐
        ▼                 ▼                 ▼                 ▼
   [X (Twitter)]    [Facebook (FB)]  [Instagram (IG)]   [TikTok (Mobile)]
   (Thread/Replies) (Public Groups)  (Reels & Caption)  (Video Transcripts)
        │
        └─────────────────┬─────────────────┘
                          │ (Tahap 5: Normalisasi & Direct Multi-Sink)
                          ▼
            ┌───────────────────────────┐
            │   PostgreSQL & Elastic    │
            └─────────────┬─────────────┘
                          ├──────────────────────────────────────┐
                          ▼                                      ▼
             [Tabel / Indeks: postings]              [Tabel: post_author]
             • id_post, platform, permalink          • author_id, username, platform
             • content_text, media_urls              • display_name, follower_count
             • metrics: likes, reposts, comments     • actor_profiling (KOL/Aktivis/Buzzer)
             • sentiment_score & timestamp           • verified_status, account_created

Alur Pipeline B3 Scraper & Phone Farm Swarm

Siklus 15 menit: Ekstraksi trending X/Twitter, pencocokan taksonomi, snapshots tren, pemanenan multichannel (X, FB, IG, TikTok), dan persistensi data.

Cron 15m → B3 Farm → PG & ES
TAHAP 01

Cron 15 Menit: B3 Scraper di Phone Farm & Ekstraksi Trending X/Twitter

Scheduler: */15 * * * *

Cron job dieksekusi setiap 15 menit oleh worker B3 Scraper yang berjalan di klaster Phone Farm untuk menarik daftar kata kunci dan tagar yang sedang naik daun (*trending topics*) dari linimasa X/Twitter wilayah Indonesia secara berkala.

TAHAP 02

Pencocokan Taksonomi Isu & 7 Pilar Strategis (Taxonomy Matcher)

Master: taxonomy_nodes & taxonomy_keywords

Setiap tagar/keyword trending dicocokkan terhadap pohon hierarki master data taksonomi isu dan 7 pilar strategis (Kamtibmas, Stabilitas Politik, Pangan, Energi, dll.) untuk memisahkan topik bernilai intelijen strategis dari derau/noise hiburan umum.

TAHAP 03

Normalisasi & Upsert ke Database Relasional

PG: social_trending_topics & snapshots

Topik yang telah dinormalisasi di-upsert ke tabel social_trending_topics (entitas topik aktif/historis) dan direkam ke social_trending_snapshots untuk melacak posisi peringkat (rank), laju volume tweet, dan kurva lonjakan tren per interval 15 menit.

TAHAP 04

Pengambilan Postingan Multichannel (X, FB, IG, TikTok)

Phone Farm Swarm + ADB Automation

Keyword/hashtag hasil normalisasi dijadikan sasaran crawling terarah. Armada ponsel fisik Android di Phone Farm mengeksekusi pencarian native di aplikasi TikTok, Instagram, Facebook, dan X untuk memanen caption, transkrip video, metrik interaksi, dan komentar warganet tanpa terhalang proteksi anti-bot/WAF.

TAHAP 05

D2 AI Enrichment & Persistensi ke Tabel & Indeks (`postings`, `post_author`)

PG Tables & ES Index: postings

Modul B3 Scraper menormalisasi data postingan, sentimen warganet, dan akun pembuat secara terstruktur langsung ke tabel relasional PostgreSQL dan indeks analitik Elasticsearch postings serta entitas akun di tabel post_author tanpa perantara worker D2.

4 Platform Pemanenan Terarah (Targeted Crawl):
🐦 X (Twitter)📘 Facebook📷 Instagram🎵 TikTok

Tahapan awal pipeline dipicu secara otomatis oleh sistem penjadwalan (scheduler) berkala:

  1. Jadwal Eksekusi: Cron interval 15 menit (*/15 * * * *).
  2. Worker Pelaksana: Modul B3 Scraper yang beroperasi di dalam lingkungan klaster hardware Phone Farm.
  3. Target Pemanenan: Linimasa Trending Topics & Hashtags X (Twitter) geolokasi Indonesia (WOEID: 23424846).
  4. Data Mentah yang Diambil:
    • Frasa tren / Tagar (#TagarIsu atau kata kunci tanpa tagar).
    • Estimasi volume tweet (tweet_volume, misal: 45.2K tweets).
    • Posisi peringkat linimasa pada saat snapshot diambil (Rank #1 s.d. #50).
    • Metadata konteks tren (kategori domain yang disematkan oleh platform X, misal: Politics · Trending, Business & Finance).
Contoh Output Ekstraksi X Trending:
[
  { "rank": 1, "topic": "#KenaikanPajak", "tweet_volume": 68400, "context": "Economy" },
  { "rank": 2, "topic": "KawalPutusanMK", "tweet_volume": 142000, "context": "Politics" },
  { "rank": 3, "topic": "TimnasDay", "tweet_volume": 52100, "context": "Sports" }
]

3. Tahap 2: Pencocokan Taksonomi Isu & 7 Pilar Strategis (Taxonomy Matcher)

Tidak semua tagar yang sedang tren relevan untuk dipantau oleh pembuat kebijakan intelijen dan pimpinan institusi. Oleh karena itu, B3 Scraper segera mengalirkan hasil ekstraksi ke mesin pencocokan taksonomi:

  1. Pencocokan Kata Kunci: Topik tren dicocokkan dengan tabel master data PostgreSQL:
    • taxonomy_nodes: Struktur pohon klasifikasi dari Pilar L1 hingga Sub-isu L5.
    • taxonomy_keywords: Kamus ribuan lema, sinonim, dan frasa pemicu isu.
  2. Pemetaan ke 7 Pilar Strategis / Astacita: Topik diklasifikasikan ke dalam ranah strategis nasional:
    • Pilar 1: Stabilitas Politik, Hukum & Keamanan (Kamtibmas).
    • Pilar 2: Kedaulatan Pangan & Ketersediaan Komoditas.
    • Pilar 3: Ketahanan Energi & Kelistrikan Nasional.
    • Pilar 4: Kesejahteraan Sosial, Pendidikan & Kesehatan Masyarakat.
    • Pilar 5: Reformasi Birokrasi, Regulasi & Integritas Publik (Tipikor).
    • Pilar 6: Ekonomi Kerakyatan, Koperasi, UMKM & Ketenagakerjaan.
    • Pilar 7: Infrastruktur Fisik, Digital & Konektivitas 3T.
  3. Penyaringan Derau (Noise Filtering): Topik yang teridentifikasi murni sebagai hiburan selebritas, fandom K-Pop komersial, atau spam judi online tanpa relevansi kebijakan diberi bobot prioritas rendah atau dieksklusikan, sehingga sumber daya Phone Farm terfokus pada isu krusial.

Setelah topik terkurasi dan terpetakan ke taksonominya, pipeline melakukan normalisasi teks (penghapusan karakter kontrol, standardisasi huruf kecil, pemisahan tanda #) dan menyimpannya ke dua tabel relasional PostgreSQL:

Menyimpan state master dari setiap topik tren unik yang pernah atau sedang aktif:

CREATE TABLE social_trending_topics (
    id SERIAL PRIMARY KEY,
    topic_name VARCHAR(255) NOT NULL UNIQUE,       -- Contoh: "kawal putusan mk"
    hashtag VARCHAR(255),                          -- Contoh: "#KawalPutusanMK"
    taxonomy_node_id INTEGER REFERENCES taxonomy_nodes(id),
    pillar_code VARCHAR(32),                       -- Contoh: "PILAR_01_HUKUM_HANKAM"
    status VARCHAR(32) DEFAULT 'active',          -- 'active', 'cooling_down', 'archived'
    highest_rank INTEGER,                          -- Posisi puncak tertinggi yang pernah dicapai
    first_seen_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
    last_seen_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
    total_snapshots_count INTEGER DEFAULT 1
);

Menyimpan jejak rekaman berkala setiap 15 menit untuk memantau akselerasi kurva viralitas (velocity trend):

CREATE TABLE social_trending_snapshots (
    id BIGSERIAL PRIMARY KEY,
    topic_id INTEGER NOT NULL REFERENCES social_trending_topics(id) ON DELETE CASCADE,
    snapshot_at TIMESTAMP WITH TIME ZONE NOT NULL, -- Timestamp rekaman cron (per 15 menit)
    rank_position INTEGER NOT NULL,                -- Peringkat tren saat snapshot (1 - 50)
    tweet_volume INTEGER,                          -- Estimasi volume cuitan pada menit tersebut
    velocity_rate NUMERIC(8, 2),                   -- Selisih lonjakan volume terhadap snapshot t-1
    sentiment_ratio_positive NUMERIC(5, 2),        -- Estimasi rasio sentimen awal
    sentiment_ratio_negative NUMERIC(5, 2)
);

CREATE INDEX idx_snapshots_topic_time ON social_trending_snapshots (topic_id, snapshot_at DESC);

Manfaat Tabel Snapshots bagi Dashboard Eksekutif

Pemisahan tabel master dan snapshot memungkinkan modul grafik di /dashboard/overview dan /dashboard/aktivis menampilkan garis trayektori lonjakan tren (trend velocity chart), memperlihatkan apakah suatu narasi sedang meledak secara organik atau direkayasa oleh buzzer pada jam-jam tertentu.


5. Tahap 4: Pemanenan Postingan Multichannel Terarah (X, FB, IG, TikTok)

Topik-topik yang telah tervalidasi dan tercatat di social_trending_topics langsung dioperasikan sebagai target sasaran (harvesting missions) bagi armada Phone Farm Swarm:

Eksekusi Paralel 4 Platform:

  1. X / Twitter:
    • Memanen cuitan utama (root tweets), quote retweets, dan utas diskusi warganet.
    • Mengambil metrik: likes_count, retweet_count, reply_count, dan views_count.
  2. Facebook (FB):
    • Menelusuri postingan di grup publik, laman fanpage berita lokal daerah, dan komunitas masyarakat.
    • Mengambil teks narasi, reaksi emotikon (Like, Love, Angry, Sad), dan komentar terbuka.
  3. Instagram (IG):
    • Mencari konten feed dan Reels berbasis tagar isu yang dinormalisasi.
    • Mengambil caption teks, tagar sekunder, dan sentimen komentar warganet.
  4. TikTok:
    • Memanen video pendek viral berbasis pencarian suara/tagar native.
    • Mengekstrak transkrip audio video, caption kreator, nama sound/musik, dan komentar teratas.
┌────────────────────────────────────────────────────────────────────────┐
│                      KEUNGGULAN PHONE FARM SWARM                       │
├────────────────────────────────────────────────────────────────────────┤
│ • Native Mobile Execution: Menjalankan APK resmi di smartphone Android │
│   fisik sehingga memiliki sidik jari perangkat (fingerprint) otentik.  │
│ • Bypass Anti-Bot & WAF: Menghindari blokir Cloudflare / Akamai / CAPTCHA│
│   karena bukan headless browser atau emulasi Chromium.                 │
│ • Residential Cellular IP: Menggunakan koneksi kartu seluler 4G LTE    │
│   dengan rotasi IP dinamis operator lokal Indonesia.                  │
└────────────────────────────────────────────────────────────────────────┘

6. Tahap 5: Persistensi ke Tabel & Indeks (postings, post_author)

Hasil panen dari keempat platform langsung dibersihkan, distandarisasi skemanya, dan disimpan ke PostgreSQL dan Elasticsearch tanpa melibatkan worker D2:

A. Tabel Relasional & Indeks Analitik: postings

Setiap dokumen postingan berisi identitas konten, platform asal, teks percakapan, metrik engagement, dan tautan orisinal:

CREATE TABLE postings (
    id VARCHAR(128) PRIMARY KEY,                  -- ID unik postingan dari platform asal
    platform VARCHAR(32) NOT NULL,                -- 'twitter', 'facebook', 'instagram', 'tiktok'
    author_id VARCHAR(128) NOT NULL,              -- Relasi ke tabel post_author
    content_text TEXT NOT NULL,                   -- Isi caption atau teks postingan
    permalink_url TEXT NOT NULL,                  -- URL tautan menuju konten asli
    published_at TIMESTAMP WITH TIME ZONE NOT NULL,
    crawled_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
    
    -- Metrik Interaksi & Engagement
    likes_count INTEGER DEFAULT 0,
    shares_count INTEGER DEFAULT 0,               -- Retweet / Share / Repost
    comments_count INTEGER DEFAULT 0,
    views_count BIGINT DEFAULT 0,
    
    -- Klasifikasi Isu & Analisis
    primary_topic_id INTEGER REFERENCES social_trending_topics(id),
    sentiment_label VARCHAR(16),                  -- 'positive', 'neutral', 'negative'
    sentiment_score NUMERIC(5, 4),                -- -1.0000 s.d. +1.0000
    potential_reach BIGINT                        -- Followers + (Shares * 250) + Views
);

Di Elasticsearch, data yang sama diindeks ke indeks postings dengan pemetaan:

  • Field content_text dianalisis menggunakan tokenizer teks bahasa Indonesia untuk mendukung full-text search sub-50ms.
  • Field published_at tipe date untuk agregasi histogram per jam di dashboard.
  • Field metrics.* tipe numerik integer/long untuk kalkulasi engagement rate.

B. Tabel Entitas Profil Aktor: post_author

Menyimpan profil para pembuat konten untuk memetakan aktor-aktor berpengaruh (influencer/KOL mapping) dan mendeteksi jaringan buzzer:

CREATE TABLE post_author (
    id VARCHAR(128) PRIMARY KEY,                  -- author_user_id (unik per platform)
    platform VARCHAR(32) NOT NULL,
    username VARCHAR(128) NOT NULL,
    display_name VARCHAR(255),
    profile_url TEXT,
    avatar_url TEXT,
    follower_count INTEGER DEFAULT 0,
    following_count INTEGER DEFAULT 0,
    verified BOOLEAN DEFAULT FALSE,
    actor_category VARCHAR(32) DEFAULT 'citizen', -- 'kol', 'activist', 'official', 'media', 'buzzer_suspect'
    last_active_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);

7. Diagram Alur Makro Pipeline Media Sosial

Alur Pipeline Media Sosial (B3 Scraper & Phone Farm Swarm)

Siklus 15m: Trending X → Taksonomi → Snapshots PG → Panen 4 Platform → Postings PG & ES

01. Cron 15 Menit & Ekstraksi Trending X/TwitterB3 Scraper • Phone Farm

Mengekstrak daftar kata kunci dan tagar tren dari linimasa X/Twitter wilayah Indonesia secara berkala per 15 menit.

02. Pencocokan Taksonomi Isu & Pilartaxonomy_nodes • 7 Pilar

Mencocokkan keyword tren dengan kamus taksonomi isu strategis, memfilter derau hiburan dari isu kepentingan umum.

03. Normalisasi & Upsert PostgreSQLsocial_trending_topics • snapshots

Menyimpan master topik tren unik dan snapshots historis time-series peringkat serta volume tweet per 15 menit.

04. Pemanenan Multichannel Terarah (X, FB, IG, TikTok)Phone Farm Swarm

Armada HP fisik Android melakukan crawling native berbasis keyword terkurasi untuk memanen postingan, caption, metrik, dan komentar.

PostgreSQL Relational DB
Tables: postings, post_author
Elasticsearch Search Index
Index: postings

8. Ringkasan Parameter Operasional Pipeline

ParameterKonfigurasi OperasionalKeterangan
Frekuensi CronSetiap 15 menit (*/15 * * * *)Memastikan trending topics selalu mutakhir mengikuti dinamika opini publik.
Worker PelaksanaB3 Scraper di Phone FarmMenggabungkan fungsi scheduler, extractor trending, parser, dan direct ingester.
Platform SumberX, Facebook, Instagram, TikTokMengintegrasikan 4 ekosistem medsos terbesar di Indonesia.
Filter Validasitaxonomy_nodes & 7 Pilar StrategisMengeliminasi derau hiburan dan fokus pada topik ketahanan nasional & kamtibmas.
Penyimpanan Trensocial_trending_topics & snapshotsTabel master topik dan time-series 15 menit untuk analitik laju kenaikan tren (velocity).
Target Data AkhirPostgreSQL & Elasticsearch postingsMemasok modul visualisasi /dashboard/aktivis dan /dashboard/overview.
Status Worker D2Tidak Digunakan (Deprecated)Seluruh proses pengayaan dan persistensi ditangani langsung oleh modul pipeline B3.

9. Spesifikasi Payload Request Pipeline Media Sosial

Instruksi misi panen yang dikirimkan oleh kontroler B3 ke daemon perangkat Android Phone Farm:

{
  "task_id": "mission_pf_x_0926_01",
  "platform": "twitter",
  "target_type": "keyword_search",
  "parameters": {
    "query": "#KenaikanPajak",
    "scroll_limit": 50,
    "max_results": 100,
    "filter_geo": "ID",
    "capture_comments": true
  },
  "device_id": "android_node_arm_04",
  "scheduled_at": "2026-09-26T10:15:00Z"
}

On this page