Duck Scraper — Panduan Pengguna

Scraping snippet DuckDuckGo + gambar Bing, export HTML berbasis Blade (.blade.php7).

Prasyarat

Struktur Folder Utama

duck-scraper/
├─ composer.json
├─ config.json
├─ convert.cmd        ← convert keywords → sqlite (insert-or-ignore)
├─ scrape.cmd         ← scraping (gambar → artikel)
├─ export.cmd         ← export HTML + sitemap
├─ clean.cmd          ← hapus cache+export+db (tanpa konfirmasi)
├─ keywords/          ← taruh file .txt keyword (1 keyword per baris)
├─ sqlite/            ← database .sqlite (otomatis)
├─ export/            ← hasil export HTML (otomatis)
├─ writable/
│  └─ blade/
│     └─ theme/
│        ├─ layout.blade.php7
│        ├─ index.blade.php7
│        └─ article.blade.php7
└─ resources/tmp/cache/blade/  ← cache Blade

Langkah Cepat (3 langkah)

  1. Taruh keywords ke folder keywords/ (contoh: home garden.txt).
  2. Jalankan:
    convert
    scrape
    export
  3. Cek hasil di folder export/<nama-db>/ (mis. export/home-garden/).

Perintah (CMD) di Root

1) Convert (insert-or-ignore + niche)

Membuat/menambah database dari semua file .txt di keywords/. Niche otomatis diisi dari nama file (yang juga jadi nama database). Duplikat keyword (berdasarkan slug) otomatis diabaikan.

convert
2) Scrape

Urutan: scrape gambar semua keyword → lanjut scrape artikel (snippet DuckDuckGo). Default concurrency mengikuti config.json.

scrape                       :: semua database
scrape <db-name> [min]       :: contoh: scrape home-garden 12
3) Export

Hasilkan HTML (tanpa subfolder /p), index per grup, dan sitemap.xml. Related post disusun per grup dan mengikuti split.

export                       :: semua DB, split=true (default)
export <db-name> false       :: export 1 DB tanpa split
4) Clean

Menghapus SEMUA: cache Blade + folder export + semua database sqlite. Tidak ada konfirmasi.

clean

Menambahkan Keywords & Niche

Konfigurasi Utama (config.json)

Kustom Template (Blade .blade.php7)

File berada di writable/blade/theme/ dengan ekstensi .blade.php7. Nama view:

Variabel di view article:

Catatan: Export akan skip artikel yang tidak lengkap (harus ada gambar & paragraf).

Helper Template (Shortcut)

Untuk menulis Blade lebih singkat, tersedia helper global:

Contoh: 2 paragraf acak di bawah tiap gambar
@foreach($IMAGES as $img)
  <img src="{{ $img['url'] }}" alt="{{ $img['alt'] ?? $TITLE }}" class="img-fluid rounded mb-2">
  @foreach(paragraphs_pick($PARAGRAPHS_ALL, 2) as $p)
    <p class="mb-2">{{ $p }}</p>
  @endforeach
@endforeach
Contoh: Filter panjang 80–300, ambil 3
@foreach(paragraphs_pick($PARAGRAPHS_ALL, 3, true, 80, 300) as $p)
  <p>{{ $p }}</p>
@endforeach
Contoh: Ambil 4 gambar acak
@foreach(tpl_pick($IMAGES, 4) as $img)
  <img src="{{ $img['url'] }}" alt="{{ $img['alt'] ?? $TITLE }}" class="img-fluid">
@endforeach

Hasil Export

Index & paragraf diacak saat export untuk variasi natural.

Troubleshooting

FAQ

Q: Bisa tambah keyword ke DB yang sudah ada?
A: Ya. Jalankan convert lagi—sistem menambah keyword baru dan mengabaikan duplikat.

Q: Apa itu niche?
A: niche diisi dari nama file keywords. Dipakai untuk grouping/label di DB.

Q: Bagaimana menghapus semuanya?
A: Jalankan clean. Hati-hati, ini menghapus cache Blade, folder export, dan semua file .sqlite.

Q: Bisa export tanpa split?
A: Ya. export <db> false. Sitemap & related post mengikuti grup (tanpa split = 1 grup).