npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

Iโ€™ve always been into building performant and accessible sites, but lately Iโ€™ve been taking it extremely seriously. So much so that Iโ€™ve been building a tool to help me optimize and monitor the sites that I build to make sure that Iโ€™m making an attempt to offer the best experience to those who visit them. If youโ€™re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, ๐Ÿ‘‹, Iโ€™m Ryan Hefnerย  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If youโ€™re interested in other things Iโ€™m working on, follow me on Twitter or check out the open source projects Iโ€™ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soonโ€“ish.

Open Software & Tools

This site wouldnโ€™t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you ๐Ÿ™

ยฉ 2026 โ€“ย Pkg Stats / Ryan Hefner

sate.js

v1.1.1

Published

๐Ÿข Skewer web data perfectly - Smart Indonesian web crawler library

Readme

๐Ÿข Sate.js

Skewer web data perfectly - Smart Indonesian web crawler library

npm version License: MIT Made in Indonesia Node.js

Sate.js adalah library web crawler yang powerful, cepat, dan mudah digunakan, dibuat khusus untuk developer Indonesia. Seperti sate yang menusuk daging dengan sempurna, Sate.js menusuk data web dengan presisi tinggi.

โœจ Mengapa Sate.js?

  • ๐Ÿข Perfect Skewering - Menusuk data web dengan presisi seperti sate
  • ๐Ÿš€ Super Cepat - Tanpa Chromium, pure Node.js
  • ๐Ÿค– AI-Powered - Sentiment analysis, keyword extraction, language detection
  • ๐Ÿ‡ฎ๐Ÿ‡ฉ Made in Indonesia - Dokumentasi bahasa Indonesia & English
  • ๐Ÿ”ง Feature Rich - 35+ fitur canggih untuk web crawling
  • ๐Ÿ“Š Smart Analytics - Quality scoring & performance monitoring
  • ๐ŸŒ Universal - Mendukung semua jenis website
  • ๐Ÿ’ก Easy to Use - API yang intuitif dan dokumentasi lengkap

๐Ÿ“ฆ Installation

npm install sate.js

๐Ÿš€ Quick Start

const SateJS = require('sate.js');

// Inisialisasi sate ๐Ÿข
const sate = new SateJS({
  userAgent: 'Sate.js Bot ๐Ÿข',
  timeout: 30000,
  delay: 1000
});

// Tusuk data dari website
async function runBasicExample() {
  try {
    const hasil = await sate.tusuk('https://example.com');

    console.log('Quality Score:', hasil.quality.overall);
    console.log('Sentiment:', hasil.sentiment.sentiment);
    console.log('Keywords:', hasil.keywords.slice(0, 5));
    console.log('Language:', hasil.language.fullName);
  } catch (error) {
    console.error('Error during basic usage:', error.message);
  }
}

runBasicExample();

๐Ÿข Core Features

Sate.js menawarkan lebih dari 35 fitur canggih untuk kebutuhan web crawling dan analisis data Anda:

Data Extraction & Parsing

  1. tusuk(url, options): Metode utama untuk mengekstrak semua data dari URL.
  2. Metadata Extraction: Mengambil judul, deskripsi, kata kunci, canonical URL, Open Graph, dan Twitter Card.
  3. Link Extraction: Mengidentifikasi dan mengekstrak semua tautan internal dan eksternal.
  4. Image Extraction: Mengambil semua URL gambar beserta atribut alt dan title.
  5. Text Extraction: Mengekstrak teks lengkap, judul (H1-H6), jumlah kata, dan paragraf.
  6. Schema Extraction: Mendeteksi dan mengekstrak data terstruktur (JSON-LD).
  7. Form Extraction: Mengidentifikasi formulir HTML dan bidang inputnya.
  8. Table Data Extraction: Mengekstrak data dari tabel HTML menjadi format terstruktur.
  9. Contact Info Extraction: Mengekstrak alamat email, nomor telepon, dan tautan media sosial.
  10. Price Extraction: Mendeteksi dan mengekstrak informasi harga dari halaman.
  11. Date Extraction: Mengidentifikasi dan mengekstrak tanggal dari konten.
  12. Breadcrumbs Extraction: Mengekstrak struktur breadcrumb navigasi.
  13. Reviews Extraction: Mengidentifikasi dan mengekstrak ulasan atau testimoni.

AI-Powered Analysis

  1. Sentiment Analysis: Menganalisis sentimen (positif, negatif, netral) dari teks.
  2. Keyword Extraction: Mengekstrak kata kunci paling relevan dari konten.
  3. Language Detection: Mendeteksi bahasa utama konten.
  4. Readability Analysis: Menganalisis tingkat keterbacaan teks (Flesch Reading Ease Score).

Advanced Crawling & Monitoring

  1. tusukMassal(urls, options): Memproses banyak URL secara bersamaan dengan kontrol konkurensi dan penundaan.
  2. pantauPerubahan(url, interval, callback): Memantau perubahan konten pada URL tertentu secara berkala.
  3. jelajahiSitus(seedUrl, options): Menjelajahi struktur situs dari URL awal hingga kedalaman tertentu.
  4. buatPetaSitus(baseUrl, options): Membuat peta situs (sitemap) dalam format XML dari hasil penjelajahan.
  5. periksaTautanRusak(url, options): Memeriksa semua tautan di halaman dan melaporkan yang rusak.

Analytics & Insights

  1. analisisWarung(urls, options): Melakukan analisis kompetitor dengan membandingkan kualitas, kata kunci, dan sentimen.
  2. deteksiTeknologi(url): Mendeteksi teknologi yang digunakan oleh sebuah situs web (CMS, framework, analytics, CDN, dll.).
  3. bandingkanHalaman(urls, metrics): Membandingkan beberapa halaman berdasarkan metrik kualitas, performa, dan SEO.
  4. Quality Scoring: Memberikan skor kualitas keseluruhan dan perincian untuk SEO, aksesibilitas, performa, konten, dan teknis.
  5. Performance Monitoring: Melacak statistik performa crawling seperti waktu respons rata-rata, tingkat keberhasilan, dan permintaan tercepat/terlambat.
  6. Duplicate Content Detection: Mengidentifikasi konten yang duplikat atau hampir duplikat.
  7. URL Pattern Analysis: Mengkategorikan URL berdasarkan pola (gambar, dokumen, video, e-commerce, blog, dll.).

Utility & Quick Access

  1. ambilJudul(url): Mengambil judul halaman dengan cepat.
  2. ambilMetadata(url): Mengambil metadata halaman dengan cepat.
  3. ambilLink(url): Mengambil semua tautan dari halaman dengan cepat.
  4. ambilTeks(url, options): Mengambil teks lengkap dari halaman dengan cepat.
  5. ambilInsight(url): Memberikan ringkasan insight penting dari sebuah URL.
  6. getStatistikPerforma(): Mendapatkan statistik performa crawling saat ini.
  7. resetStatistikPerforma(): Mereset statistik performa.
  8. eksporData(format): Mengekspor data yang dikumpulkan dalam format JSON, CSV, atau XML.

๐Ÿ“š More Examples

1. Mass Data Processing

// Tusuk banyak URL sekaligus
const urls = [
  'https://github.com',
  'https://stackoverflow.com',
  'https://dev.to'
];

const massResults = await sate.tusukMassal(urls, {
  concurrent: 2,
  delay: 1000
});

console.log('Mass Processing Results:');
massResults.forEach((result, index) => {
  if (result.error) {
    console.log(`   ${index + 1}. ${result.url} - ERROR: ${result.error}`);
  } else {
    console.log(`   ${index + 1}. ${result.url} - Quality: ${result.quality?.overall || 0}/100`);
  }
});

2. Competitor Analysis

// Analisis kompetitor
const competitors = await sate.analisisWarung([
  'https://httpbin.org/html',
  'https://httpbin.org/json'
]);

console.log('Average Quality:', competitors.analisis.kualitasRataRata);
console.log('Popular Keywords:', competitors.analisis.katakunciPopuler.slice(0, 3));
console.log('Duplicate Content Detected:', competitors.analisis.kontenDuplikat.length);

3. Broken Link Check

// Periksa tautan rusak di sebuah halaman
const brokenLinksResult = await sate.periksaTautanRusak('https://example.com');

console.log('Total Links Checked:', brokenLinksResult.totalLinksChecked);
console.log('Broken Links Found:', brokenLinksResult.brokenLinks.length);
if (brokenLinksResult.brokenLinks.length > 0) {
  console.log('First Broken Link:', brokenLinksResult.brokenLinks[0]);
}