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.

Spesifikasi Hardware & Load Balancer Phone Farm

Untuk dokumentasi rinci mengenai orkestrasi 20 unit Samsung S10, verifikasi 3 lapis ADB, mitigasi termal, dan fungsi load balancer launch_app_robust, silakan baca Pipeline Data: Phone Farm.


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

Diagram Alur Eksekusi End-to-End Phone Farm

Siklus 15m: Cron X Trending → AI Taxonomy → PG Snapshots → Dispatch Balancer → UIAutomator2 Native → Direct Dual Sink

01. Pemicu Cron 15m & Ekstraksi Trending X [Cron Scheduler → B3 Scraper → Platform X]

Cron job memicu eksekusi setiap 15 menit. Modul B3 Scraper menarik 50 topik dan tagar terhangat beserta volume tweet dan peringkat terkini dari platform X Indonesia.

02. Pemrosesan AI: Penyesuaian Taksonomi [B3 Scraper → AI Taxonomy Engine]

Model AI memfilter derau hiburan/giveaway, mencocokkan kata kunci ke kamus taksonomi (L1–L5), menentukan pilar strategis nasional, dan mengembalikan topik teranotasi.

03. Persistensi Master Topik & Snapshot Tren [PostgreSQL: social_trending_*]

B3 melakukan upsert master topik ke tabel social_trending_topics dan merekam snapshot posisi peringkat time-series ke social_trending_snapshots.

04. Dispatch Tugas & Device Load Balancer [FarmAgent → 20x Samsung Galaxy S10]

FarmAgent memverifikasi 3 lapis kesiapan HP (ADB discovery, cek paket APK, sesi login aktif), alokasi Round-Robin 20 HP, dan pre-flight force-stop app lain + kecerahan 0.

05. Pemanenan Multi-Platform Native via ADB [UIAutomator2: TikTok, IG, FB, X]

Armada HP mengeksekusi pencarian aplikasi native secara fisik: scroll linimasa, ekstraksi teks postingan & komentar, metrik interaksi, dan capture bukti framebuffer JPG.

06. Direct Dual Sink Persistence [MinIO S3 • PostgreSQL • Elasticsearch]

Unggah bukti screenshot ke MinIO S3 (social-evidence), direct insert ke tabel PostgreSQL (postings & post_author), dan direct index ke Elasticsearch postings tanpa melalui Kafka.


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: Pemrosesan AI untuk Penyesuaian Taksonomi (AI Taxonomy Adjustment)

Topik tren dan kata kunci hasil scraping dari platform X diproses langsung oleh model AI (NLP / LLM Taxonomy Classifier) untuk melakukan penyesuaian dan standardisasi taksonomi:

  1. Pemrosesan Semantik AI: Model AI menganalisis konteks percakapan di balik tagar/kata kunci X yang sering kali menggunakan bahasa gaul, singkatan, atau metafora. AI memetakan isu tersebut ke dalam pohon taksonomi resmi lembaga:
    • taxonomy_nodes: Struktur pohon klasifikasi dari Pilar L1 hingga Sub-isu L5.
    • taxonomy_keywords: Pemutakhiran dan pengayaan lema/frasa kunci baru yang sedang berkembang di ruang digital.
  2. Pemetaan ke 7 Pilar Strategis / Astacita: AI mengklasifikasikan isu ke dalam ranah pilar 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 oleh AI 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 (Cron 15m → B3 Farm → PG + ES)

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

01. Cron 15 Menit & Ekstraksi Trending X/Twitter [B3 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 & Pilar [taxonomy_nodes • 7 Pilar]

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

03. Normalisasi & Upsert PostgreSQL [social_trending_topics • snapshots]

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

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

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

PostgreSQL Relational DB

Tables: postings, post_author (master rekaman interaksi & profil).

Elasticsearch Search Index

Index: postings (indeks pencarian agregat teks penuh percakapan).

Alur D2 Social AI Worker (d2-pf-ai-worker)

Pengolahan interaksi medsos, deteksi narasi provokatif, slang normalization, dan dual-sink

01. Social Ingestion & Dispatcher [TikTok • Instagram • X]

Menerima stream data konten, caption, komentar, likes, dan shares dari Phone Farm scraper.

02. Slang Normalization & Sentiment [IndoSlang Dictionary • Emoji Parser]

Mengonversi singkatan/slang warganet ke bahasa baku, menghitung sentimen berbasis konteks lokal.

03. Hate Speech, SARA & Virality Scoring [Velocity • Provocation Detector]

Klasifikasi ujaran kebencian/SARA serta kalkulasi skor laju sebaran (virality acceleration).

MongoDB Document Store

Collections: posts, comments (raw interaction docs).

Elasticsearch Index

Index: social_search_index (indeks pencarian agregat percakapan).


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