Cari skripsi full text dari 75+ repository perguruan tinggi Indonesia — sekali jalan.
Tidak perlu buka satu per satu website kampus. Tidak perlu tebak-tebak mana yang bisa diunduh lengkap.
Cukup satu perintah, script ini yang kerja.
Siapapun yang pernah riset atau nulis skripsi pasti tahu frustrasinya:
- Buka repository kampus A → hanya tersedia Bab 1
- Buka repository kampus B → perlu login atau akses kampus
- Buka repository kampus C → 404, situsnya down
- Ulangi untuk 20 kampus lain... 😮💨
Pencari Skripsi Indonesia mengotomatisasi seluruh proses itu. Script mencari di 75+ repository sekaligus, mendeteksi mana yang benar-benar bisa diunduh penuh (Bab 1 sampai Daftar Pustaka), dan langsung menyajikan hasilnya lengkap dengan link PDF-nya.
- 🔍 75+ repository PTN, PTS, dan Politeknik dari Sabang sampai Merauke
- 📡 OAI-PMH harvesting — protokol standar EPrints & DSpace, lebih andal dari scraping biasa
- 🔬 Analisis konten PDF langsung — baca isi file PDF, deteksi heading bab di dalam dokumen, bukan cuma label di HTML
- 📂 Deteksi multi-file per bab — otomatis kenali repository yang pecah skripsi jadi
bab1.pdf,bab2.pdf, dst., lalu verifikasi tiap file - 🎯 Status full text akurat —
FULLhanya diberikan jika Bab 1, 3, 4, 5, dan Daftar Pustaka terdeteksi di dalam PDF - ⚡ Concurrent fetch — cari di beberapa universitas secara paralel, lebih cepat
- 💾 Cache 24 jam — tidak re-fetch halaman yang sama, hemat bandwidth dan waktu
- 📊 Output lengkap — CSV, JSON, dan Excel berwarna (hijau = full text, kuning = partial)
- 🗂️ Konfigurasi terpisah — tambah atau ubah universitas cukup edit
repositories.json, tanpa sentuh kode - 🖥️ Mode interaktif — cocok untuk yang tidak familiar dengan CLI
# 1. Clone repo ini
git clone https://github.com/yingtze/pencari-skripsi-indonesia.git
cd pencari-skripsi-indonesia
# 2. Install dependensi wajib
pip install requests beautifulsoup4 lxml tqdm colorama openpyxl
# 3. Install dependensi opsional — untuk analisis konten PDF (direkomendasikan)
pip install pdfminer.sixButuh Python 3.8 atau lebih baru. Cek versi Python kamu dengan
python --version.Tanpa
pdfminer.six, script tetap berjalan normal tapi deteksi full text hanya berbasis HTML — tidak membaca isi PDF secara langsung.
python pencari_skripsi.py --keyword "machine learning"# Cari di PTN wilayah Jawa Timur saja
python pencari_skripsi.py --keyword "ekonomi syariah" --tipe PTN --provinsi "jawa timur"
# Pilih universitas spesifik
python pencari_skripsi.py --keyword "sistem informasi" --universitas ums umm umy
# Tampilkan hanya yang bisa diunduh penuh
python pencari_skripsi.py --keyword "hukum pidana" --hanya-full# OAI-PMH — lebih cepat dan terstruktur (direkomendasikan)
python pencari_skripsi.py --keyword "kesehatan masyarakat" --metode oai
# HTML scraping — jangkauan lebih luas, cocok untuk repo yang tidak punya OAI
python pencari_skripsi.py --keyword "arsitektur" --metode html# Simpan ke CSV, JSON, dan Excel sekaligus (default)
python pencari_skripsi.py --keyword "pendidikan" --output hasil_pendidikan
# Hanya Excel
python pencari_skripsi.py --keyword "kimia" --format xlsxTidak suka CLI? Jalankan mode tanya-jawab:
python pencari_skripsi.py --interactive# Semua universitas yang didukung
python pencari_skripsi.py --list-universitas
# Filter berdasarkan tipe atau provinsi
python pencari_skripsi.py --list-universitas --tipe PTS --provinsi "jawa barat"Setiap skripsi yang ditemukan akan diberi status:
| Status | Arti |
|---|---|
| ✅ FULL | Bab 1, 3, 4, 5, dan Daftar Pustaka terdeteksi di dalam isi PDF |
| 🟡 PARTIAL | Sebagian bab ditemukan — belum lengkap atau hanya terdeteksi dari HTML |
| 🔴 LOCKED | PDF ada tapi tidak bisa diakses (login, embargo, campus-only) |
| ⚪ UNKNOWN | Status tidak bisa ditentukan secara otomatis |
Sejak v1.3, status ditentukan berdasarkan isi file PDF secara langsung — script mengunduh ~250KB dari tiap PDF (bagian awal + akhir via HTTP Range request) lalu mencari heading bab di dalam dokumen. Jauh lebih akurat dibanding hanya membaca label di halaman HTML.
Untuk repository yang memecah skripsi menjadi banyak file terpisah, script juga mendeteksi dan memverifikasi akses ke masing-masing file, lalu melaporkan bab mana yang tersedia dan mana yang terkunci.
| Parameter | Pendek | Keterangan | Default |
|---|---|---|---|
--keyword |
-k |
Kata kunci pencarian | (wajib) |
--universitas |
-u |
Satu atau lebih ID universitas | semua |
--tipe |
Filter PTN atau PTS |
semua | |
--provinsi |
-p |
Filter berdasarkan provinsi | semua |
--max |
-m |
Maksimal hasil per universitas | 10 |
--metode |
auto / oai / html |
auto |
|
--hanya-full |
Sembunyikan hasil yang locked/unknown | false |
|
--output |
-o |
Prefix nama file output | auto (timestamp) |
--format |
-f |
csv / json / xlsx / semua |
semua |
--workers |
Jumlah thread paralel | 3 |
|
--delay |
Jeda antar request dalam detik | 1.2 |
|
--no-cache |
Nonaktifkan cache lokal | false |
|
--list-universitas |
Tampilkan daftar universitas | — | |
--interactive |
-i |
Mode tanya-jawab interaktif | — |
--quiet |
-q |
Kurangi output ke terminal | false |
📁 pencari-skripsi-indonesia/
├── pencari_skripsi.py ← Script utama
├── pdf_analyzer.py ← Modul analisis konten PDF (v1.3+)
├── repositories.json ← Data 75+ universitas (edit di sini untuk tambah kampus)
├── CHANGELOG.md ← Riwayat perubahan tiap versi
├── README.md
└── .cache_skripsi/ ← Cache otomatis, dibuat saat pertama kali dijalankan
pencari_skripsi.py,pdf_analyzer.py, danrepositories.jsonharus selalu berada di folder yang sama.
Konfigurasi repository sepenuhnya ada di repositories.json — tidak perlu mengubah kode Python sama sekali.
Tambahkan entri baru seperti ini:
{
"id": "contoh_univ",
"nama": "Universitas Contoh",
"kota": "Kota",
"provinsi": "Nama Provinsi",
"tipe": "PTN",
"platform": "eprints",
"url_base": "https://repository.contoh.ac.id",
"oai_endpoint": "https://repository.contoh.ac.id/cgi/oai2",
"search_url": "https://repository.contoh.ac.id/cgi-bin/search/search.cgi",
"search_params": {"q": "{keyword}", "action_search": "Search"},
"search_method": "GET",
"parser": "eprints"
}Cara mengenali platform repository:
| Tanda di URL | Platform | Parser |
|---|---|---|
/cgi-bin/search atau /cgi/oai2 |
EPrints | eprints |
/xmlui/ atau /handle/ |
DSpace | dspace |
slims atau senayan |
SLiMS | senayan |
| Lainnya | — | generic |
Cara menemukan OAI-PMH endpoint:
- EPrints →
https://[domain]/cgi/oai2 - DSpace →
https://[domain]/oai/request
Buka URL tersebut di browser. Jika muncul XML dengan tag <OAI-PMH>, berarti endpoint aktif dan bisa digunakan.
PTN — Pulau Jawa (27 universitas)
UI, UGM, ITB, ITS, IPB, Universitas Airlangga, Universitas Diponegoro, Universitas Padjadjaran, UNY, Universitas Negeri Malang, Unnes, UPI, UNS, Universitas Brawijaya, Universitas Jember, Universitas Jenderal Soedirman, UPN Veteran Jakarta, UPN Veteran Yogyakarta, UPN Veteran Jawa Timur, UIN Sunan Ampel Surabaya, UIN Sunan Kalijaga Yogyakarta, UIN Sunan Gunung Djati Bandung, UIN Maulana Malik Ibrahim Malang, UIN Syarif Hidayatullah Jakarta, UIN Walisongo Semarang, IAIN Purwokerto, Universitas Sultan Ageng Tirtayasa
PTN — Luar Jawa (19 universitas)
Universitas Sumatera Utara, Universitas Andalas, Universitas Sriwijaya, Universitas Riau, Universitas Bengkulu, Universitas Jambi, Universitas Lampung, Universitas Hasanuddin, Universitas Mataram, Universitas Nusa Cendana, Universitas Pattimura, Universitas Cenderawasih, Universitas Khairun, Universitas Negeri Medan, Universitas Negeri Padang, Universitas Lambung Mangkurat, Universitas Mulawarman, Universitas Udayana, Universitas Pendidikan Ganesha
PTS (26 universitas)
Universitas Islam Indonesia, Universitas Muhammadiyah Yogyakarta, Universitas Muhammadiyah Surakarta, Universitas Muhammadiyah Malang, Universitas Ahmad Dahlan, Universitas Surabaya, Universitas Islam Bandung, Institut Teknologi Nasional Bandung, Universitas Telkom, Binus University, Universitas Mercu Buana, Universitas Gunadarma, Universitas Jenderal Ahmad Yani, STIKOM Bali, Universitas Kristen Duta Wacana, Universitas Kristen Krida Wacana, Universitas Katolik Soegijapranata, Universitas Tarumanagara, Universitas 17 Agustus 1945 Jakarta, Universitas Islam Sultan Agung, Universitas Nahdlatul Ulama Sidoarjo, Universitas Islam Malang, Universitas Bhayangkara Jakarta Raya, Universitas Muhammadiyah Jakarta, STIKI Malang, Universitas Atma Jaya Yogyakarta
Politeknik (3)
Politeknik Negeri Malang, Politeknik Elektronika Negeri Surabaya, Politeknik Kesehatan Kemenkes Surabaya
Fitur terbesar di v1.3 adalah kemampuan membaca isi file PDF secara langsung — bukan hanya metadata di halaman HTML.
Script mengunduh ~250KB per file menggunakan HTTP Range request (bagian awal + akhir dokumen), lalu mengekstrak teks dengan pdfminer.six dan mencari 12 penanda struktural:
| Bagian | Contoh yang Dideteksi |
|---|---|
| Cover / Judul | Halaman judul, nama universitas |
| Abstrak | abstrak, abstract, intisari |
| Bab 1 | BAB I Pendahuluan, Latar Belakang Masalah |
| Bab 2 | Tinjauan Pustaka, Landasan Teori |
| Bab 3 | Metodologi Penelitian, Desain Penelitian |
| Bab 4 | Hasil dan Pembahasan, Analisis Data |
| Bab 5 | Kesimpulan dan Saran, Penutup |
| Daftar Pustaka | References, Bibliography |
| Lampiran | Appendix |
Status FULL hanya diberikan jika semua bab utama (1, 3, 4, 5, dan Daftar Pustaka) ditemukan di dalam PDF — bukan dari label di halaman repository.
Beberapa repository (terutama DSpace lama) memecah skripsi menjadi banyak file terpisah. Script mendeteksi ini secara otomatis dan menampilkan status per bab:
📂 Multi-file: 6 bab tersedia
✓ bab 1 - pendahuluan https://repo.../bab1.pdf
✓ bab 2 - tinjauan pustaka https://repo.../bab2.pdf
✓ bab 3 - metodologi https://repo.../bab3.pdf
✗ bab 4 - hasil [TERKUNCI]
✓ bab 5 - kesimpulan https://repo.../bab5.pdf
✓ daftar pustaka https://repo.../pustaka.pdf
Script tetap berfungsi normal — hanya deteksi multi-file yang aktif, analisis isi PDF dinonaktifkan. Status ditentukan dari HTML seperti versi sebelumnya.
Script ini menggunakan OAI-PMH (Open Archives Initiative Protocol for Metadata Harvesting) sebagai metode fetch utama. Ini adalah protokol standar internasional yang diimplementasikan oleh hampir semua platform repository ilmiah — termasuk EPrints dan DSpace yang dipakai oleh 80%+ perguruan tinggi di Indonesia.
Bedanya dengan scraping HTML biasa: OAI-PMH memberikan data terstruktur langsung (judul, penulis, abstrak, URL, tahun) tanpa perlu menafsirkan HTML. Hasilnya lebih konsisten dan jauh lebih jarang rusak saat tampilan website berubah.
- Script menambahkan jeda antar request (default 1.2 detik) untuk tidak membebani server universitas
- Hasil cache disimpan di
.cache_skripsi/dan otomatis kedaluwarsa setelah 24 jam - Analisis PDF mengunduh maksimal ~250KB per file — tidak mengunduh dokumen secara penuh
- Beberapa universitas membatasi akses dari luar kampus — hasilnya tetap muncul dengan status
unknown - PDF berbasis scan/gambar tidak bisa dianalisis teksnya — status otomatis
unknown, perlu cek manual - URL dan struktur repository bisa berubah sewaktu-waktu; perbarui
repositories.jsonjika ada yang tidak lagi berfungsi
Lihat CHANGELOG.md untuk riwayat lengkap perubahan tiap versi.
Pull request sangat disambut, terutama untuk:
- Menambah universitas baru ke
repositories.json - Memperbaiki parser untuk repository dengan struktur HTML yang tidak umum
- Memperbarui URL repository yang sudah berubah domain atau path
- Meningkatkan pola deteksi bab di
pdf_analyzer.pyuntuk format penulisan yang belum ter-cover
MIT License — bebas digunakan, dimodifikasi, dan didistribusikan.