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_createdAlur 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 15 Menit: B3 Scraper di Phone Farm & Ekstraksi Trending X/Twitter
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.
Pencocokan Taksonomi Isu & 7 Pilar Strategis (Taxonomy Matcher)
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.
Normalisasi & Upsert ke Database Relasional
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.
Pengambilan Postingan Multichannel (X, FB, IG, TikTok)
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.
D2 AI Enrichment & Persistensi ke Tabel & Indeks (`postings`, `post_author`)
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.
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: 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:
- 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.
- 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.
- 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.
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 (B3 Scraper & Phone Farm Swarm)
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.
postings, post_authorpostings8. 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 penjadwalan taksonomi A1, perayapan B1/B2, 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.