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_createdDiagram Alur Eksekusi End-to-End Phone Farm
Siklus 15m: Cron X Trending → AI Taxonomy → PG Snapshots → Dispatch Balancer → UIAutomator2 Native → Direct Dual Sink
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.
Model AI memfilter derau hiburan/giveaway, mencocokkan kata kunci ke kamus taksonomi (L1–L5), menentukan pilar strategis nasional, dan mengembalikan topik teranotasi.
B3 melakukan upsert master topik ke tabel social_trending_topics dan merekam snapshot posisi peringkat time-series ke social_trending_snapshots.
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.
Armada HP mengeksekusi pencarian aplikasi native secara fisik: scroll linimasa, ekstraksi teks postingan & komentar, metrik interaksi, dan capture bukti framebuffer JPG.
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.
2. Tahap 1: Eksekusi Cron 15 Menit B3 Scraper & Ekstraksi X/Twitter Trending
Tahapan awal pipeline dipicu secara otomatis oleh sistem penjadwalan (scheduler) berkala:
- Jadwal Eksekusi: Cron interval 15 menit (
*/15 * * * *). - Worker Pelaksana: Modul B3 Scraper yang beroperasi di dalam lingkungan klaster hardware Phone Farm.
- Target Pemanenan: Linimasa Trending Topics & Hashtags X (Twitter) geolokasi Indonesia (
WOEID: 23424846). - Data Mentah yang Diambil:
- Frasa tren / Tagar (
#TagarIsuatau 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).
- Frasa tren / Tagar (
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:
- 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.
- 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.
- 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.
4. Tahap 3: Normalisasi & Upsert ke PostgreSQL (social_trending_*)
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:
A. Tabel Master: social_trending_topics
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
);B. Tabel Time-Series: social_trending_snapshots
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:
- X / Twitter:
- Memanen cuitan utama (root tweets), quote retweets, dan utas diskusi warganet.
- Mengambil metrik:
likes_count,retweet_count,reply_count, danviews_count.
- 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.
- Instagram (IG):
- Mencari konten feed dan Reels berbasis tagar isu yang dinormalisasi.
- Mengambil caption teks, tagar sekunder, dan sentimen komentar warganet.
- 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_textdianalisis menggunakan tokenizer teks bahasa Indonesia untuk mendukung full-text search sub-50ms. - Field
published_attipedateuntuk 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
Mengekstrak daftar kata kunci dan tagar tren dari linimasa X/Twitter wilayah Indonesia secara berkala per 15 menit.
Mencocokkan keyword tren dengan kamus taksonomi isu strategis, memfilter derau hiburan dari isu kepentingan umum.
Menyimpan master topik tren unik dan snapshots historis time-series peringkat serta volume tweet per 15 menit.
Armada HP fisik Android melakukan crawling native berbasis keyword terkurasi untuk memanen postingan, caption, metrik, dan komentar.
Tables: postings, post_author (master rekaman interaksi & profil).
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
Menerima stream data konten, caption, komentar, likes, dan shares dari Phone Farm scraper.
Mengonversi singkatan/slang warganet ke bahasa baku, menghitung sentimen berbasis konteks lokal.
Klasifikasi ujaran kebencian/SARA serta kalkulasi skor laju sebaran (virality acceleration).
Collections: posts, comments (raw interaction docs).
Index: social_search_index (indeks pencarian agregat percakapan).
8. Ringkasan Parameter Operasional Pipeline
| Parameter | Konfigurasi Operasional | Keterangan |
|---|---|---|
| Frekuensi Cron | Setiap 15 menit (*/15 * * * *) | Memastikan trending topics selalu mutakhir mengikuti dinamika opini publik. |
| Worker Pelaksana | B3 Scraper di Phone Farm | Menggabungkan fungsi scheduler, extractor trending, parser, dan direct ingester. |
| Platform Sumber | X, Facebook, Instagram, TikTok | Mengintegrasikan 4 ekosistem medsos terbesar di Indonesia. |
| Filter Validasi | taxonomy_nodes & 7 Pilar Strategis | Mengeliminasi derau hiburan dan fokus pada topik ketahanan nasional & kamtibmas. |
| Penyimpanan Tren | social_trending_topics & snapshots | Tabel master topik dan time-series 15 menit untuk analitik laju kenaikan tren (velocity). |
| Target Data Akhir | PostgreSQL & Elasticsearch postings | Memasok modul visualisasi /dashboard/aktivis dan /dashboard/overview. |
| Status Worker D2 | Tidak 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"
}articles
Alur terdistribusi pengisian tabel PostgreSQL articles dan indeks Elasticsearch articles—mulai dari perayapan otonom B1 berbasis Google News, penyimpanan MinIO & auto-discovery target, pembersihan C1, deduplikasi vektor C2, hingga ekstraksi AI SPOK D1.
province_dashboard
Alur pemrosesan data situasi kamtibmas 38 provinsi dan representasi Situational Digital Twin wilayah ke dalam indeks Elasticsearch province_dashboard.