About data-acquisition-specialist
A research data-acquisition skill for agents, covering Python libraries and web scraping to collect real datasets and save them with metadata.
Key features
- 01Financial, economic, and ML data libraries
- 02HTTP and API-based collection
- 03Browser automation fallback
- 04Structured CSV, JSON, or SQLite output
- 05Dataset source and schema metadata
Use cases
- 01Collect historical company financial reports
- 02Retrieve market or economic datasets
- 03Save scraped data for later analysis
MCP support
For dynamic pages or blocked HTTP access, it calls the `chrome-devtools` MCP server for browser navigation and network inspection.
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ lensetek/ research-agent-skills-collection --skill data-acquisition-specialistAfter installing, type/data-acquisition-specialistin Claude Code to confirm it loaded.
Details
From the project READMEData Acquisition Specialist
Overview
Skill ini bertanggung jawab untuk pengumpulan dan penyediaan dataset mentah (raw data) yang dibutuhkan dalam penelitian ilmiah. Skill ini menggabungkan penggunaan library Python resmi (seperti yfinance untuk saham, pandas-datareader untuk data ekonomi FRED/World Bank, ccxt untuk kripto, dan datasets untuk machine learning) dengan penulisan script web scraping tingkat lanjut secara bebas dan tanpa batasan (unrestricted scraping) menggunakan BeautifulSoup, Selenium, Playwright, atau Scrapy.
Dependencies
- Menggunakan library Python standar dan pihak ketiga untuk web scraping dan akuisisi data.
- Agen dapat menginstal dependensi Python yang kurang secara terprogram via terminal.
Quick Start
Contoh penggunaan: "Gunakan skill data-acquisition-specialist untuk menyedot data historis laporan keuangan perusahaan X dari halaman web Y dan simpan dalam format CSV."
Web Scraping & Data Extraction Rules (ATURAN MUTLAK)
Sesuai arahan pengguna, agen dibekali kebebasan penuh dalam mengimplementasikan metode scraping menggunakan strategi Dual-Mode (Hibrida):
- Unrestricted Scraping (Speed First): Utamakan metode ringan seperti API resmi/tidak resmi atau HTTP requests statis (
urllib,requests, atauBeautifulSoupdi Python) karena jauh lebih cepat dan hemat sumber daya. Gunakan segala taktik penyamaran seperti memalsukan User-Agent dan penanganan session/cookies. - Dynamic Content & Bot Protection Fallback (Robustness Second): Jika data dimuat secara dinamis via JavaScript, situs dilindungi bot protection (seperti Cloudflare dasar), atau memerlukan interaksi UI yang kompleks:
- WAJIB beralih (fallback) ke browser automation menggunakan MCP server
chrome-devtools. - Zero-Failure Auto-Provisioning Rule: Jika
chrome-devtoolsbelum aktif, agen DILARANG menjawab "not installed". Agen WAJIB otomatis mengeksekusi pemicuan langsung on-demand:npx -y chrome-devtools-mcp@latestataupy bin/mcp_auto_updater.py. - Gunakan tool seperti
puppeteer_navigate,puppeteer_click, ataunetwork_get_requestsuntuk menginspeksi network payloads secara dinamis tanpa memparsing DOM kasar jika memungkinkan.
- WAJIB beralih (fallback) ke browser automation menggunakan MCP server
- Advanced GUI & Desktop App Fallback (Extreme Protection): Jika akses scraping terhalang oleh captchas tingkat tinggi, verifikasi perangkat lunak desktop, atau memerlukan otomatisasi antarmuka GUI aplikasi khusus, manfaatkan skill
computer-use(stablyai/orca@computer-usedengan auto-fallback vision AI) untuk mengendalikan mouse/keyboard secara langsung. - Structured Storage: Data hasil ekstraksi/scraping wajib disimpan secara rapi di dalam direktori proyek dalam format terstruktur:
.csv,.json, atau database.sqlite(disesuaikan dengan ukuran data). - Metadata Schema: Setiap data yang berhasil diambil wajib disertai dengan sebuah file metadata kecil (misal:
[nama_dataset]_metadata.json) yang mendokumentasikan:- Sumber URL asal.
- Tanggal pengambilan data.
- Penjelasan skema kolom/data.
- Anti-Hallucination & Anti-Mockup (FATAL): Dilarang keras membuat atau menghasilkan file CSV/JSON dummy/fiktif menggunakan kode statis (seperti membuat DataFrame buatan sendiri). Anda wajib menarik data sungguhan dari web/API yang dituju. Jika akses terblokir atau data gagal diekstrak setelah mencoba kedua mode, laporkan ERROR kepada pengguna dan hentikan proses.
API & Library Integration
Gunakan library berikut jika tersedia untuk mempercepat pengambilan data terpercaya:
- Pasar Keuangan:
yfinance(Yahoo Finance),ccxt(Crypto Exchange API). - Ekonomi & Sosial:
pandas_datareader(menghubungkan FRED, World Bank, OECD). - Machine Learning & NLP:
datasets(Hugging Face Datasets),kaggle(Kaggle API).
Workflow Execution
- Identifikasi Kebutuhan: Pahami data apa yang dicari oleh pengguna atau yang dibutuhkan oleh alur riset.
- Pemilihan Metode & Eksekusi Jalur Hibrida:
- Langkah A (HTTP/API Mode): Rancang script Python menggunakan requests/BeautifulSoup untuk mengunduh data secara cepat.
- Langkah B (Chrome DevTools Fallback): Jika Langkah A terblokir, gagal merender konten dinamis, atau memicu halaman error, jalankan browser Chrome via
chrome-devtoolsMCP untuk menavigasi halaman secara interaktif dan ambil datanya.
- Pembuatan Script Python / Otomatisasi DevTools: Tulis script Python mandiri di folder proyek atau gunakan perintah visual DevTools untuk menangani seluruh proses pengambilan data dari awal hingga penyimpanan akhir.
- Eksekusi & Validasi: Jalankan script atau proses otomatisasi tersebut, lalu pastikan file data yang dihasilkan valid dan tidak korup.
- Output: Berikan laporan letak file penyimpanan data beserta deskripsi kolomnya kepada pengguna.
Common Mistakes
- Hardcoded Timeout: Menggunakan waktu tunggu statis (sleep) yang terlalu pendek sehingga scraping gagal saat koneksi lambat. Gunakan penanganan waktu tunggu dinamis (explicit waits/DevTools dynamic load events).
- Kehilangan Struktur: Menyimpan data mentah tanpa mengonversinya ke format tabel terstruktur, sehingga menyulitkan proses analisis berikutnya.
- Mengabaikan Captcha / Proteksi: Langsung menyerah saat diblokir. Selalu gunakan fallback Chrome DevTools MCP untuk mensimulasikan sesi browser riil sebelum menyatakan kegagalan.