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

@shikytemo/shitools

v1.3.0

Published

Reusable scraping tools collection.

Downloads

1,421

Readme

Shitools

Tempat ngumpulin tools scrape dan automation kecil.

Fokus

  • Scraper reusable.
  • Helper request/fetch.
  • Output rapi buat dipakai ulang.
  • Struktur simpel biar gampang nambah module baru.

Install

npm install

Example

npm run example
npm run example -- https://example.com

Catbox

Wrapper Catbox buat upload file, mirror URL, hapus file, dan album.

npm run catbox -- upload-file ./image.jpg
npm run catbox -- upload-url https://example.com/image.jpg
npm run catbox -- delete-files abc123.jpg
npm run catbox -- create-album "My Album" abc123.jpg def456.png
npm run catbox -- edit-album albumshort "New Title" abc123.jpg

Kalau mau pakai akun Catbox, isi:

CATBOX_USER_HASH=your_user_hash

Pinterest

Scraper Pinterest reusable. Bisa mode pin URL dan search keyword dalam satu API. Mengambil metadata dan media yang bisa ditemukan: image, video, thumbnail, pinimg.com, JSON-LD, script JSON, dan meta tag. Fetch utama memakai Axios + Cheerio, lalu fallback ke Jina Reader (r.jina.ai) untuk bypass halaman yang susah dibaca.

npm run check
node examples/pinterest.js https://www.pinterest.com/pin/123456789/
node examples/pinterest.js anime girl

Pemakaian module:

import { pinterest, scrapePinterest, searchPinterest } from '@shikytemo/shitools'

const result = await pinterest('anime girl', { limit: 10 })
console.log(result.media)

Converter

Helper converter media berbasis ffmpeg buat bot WhatsApp atau script Node.js.

import { toAudio, toPTT, toSticker, toVideo } from '@shikytemo/shitools'

const sticker = await toSticker({ buffer, mimetype: 'image/png' })
const audio = await toAudio({ buffer, mimetype: 'video/mp4' })
const voiceNote = await toPTT({ buffer, mimetype: 'audio/mpeg' })
const video = await toVideo({ buffer, mimetype: 'image/webp' })

Pastikan binary ffmpeg tersedia di device/server.

Scraper Tools

Scraper tambahan yang aman dipakai ulang di bot atau REST API kecil.

node examples/scrapers.js web https://example.com
node examples/scrapers.js npm @shikytemo/shitools
node examples/scrapers.js npm-search whatsapp bot
node examples/scrapers.js github Shikytemo/shitools
node examples/scrapers.js github-search whatsapp bot scraper
node examples/scrapers.js anime one piece
node examples/scrapers.js samehadaku gnosia episode 20
node examples/scrapers.js samehadaku-legacy one-piece-episode-1155
node examples/scrapers.js samehadaku-latest latest

Source Catalog

Katalog source reusable berisi scraper internal dan 600+ public API no-auth HTTPS yang bisa dicari/filter.

node examples/sources.js list
node examples/sources.js list Anime
node examples/sources.js find weather
node examples/sources.js get weather-open-meteo
node examples/sources.js search samehadaku "one piece"
node examples/sources.js scrape samehadaku "gnosia episode 20"
node examples/sources.js latest samehadaku
node examples/sources.js fetch animals-axolotl

Pemakaian module:

import {
	fetchSource,
	getSource,
	listSources,
	scrapeSource,
	searchSource,
	searchSources,
	sourceCatalog,
	sources
} from '@shikytemo/shitools'

console.log(sourceCatalog.length)
console.log(listSources({ category: 'Anime' }))
console.log(searchSources('weather'))

const samehadaku = await searchSource('samehadaku', 'one piece')
const stream = await scrapeSource('samehadaku', 'gnosia episode 20')
const metadata = getSource('weather-open-meteo')
const publicApi = await fetchSource('animals-axolotl')
const pin = await sources.pinterest.scrape('https://www.pinterest.com/pin/123456789/')

Pemakaian module:

import {
	getGithubRepo,
	getNpmPackage,
	getSamehadakuLegacyStream,
	getSamehadakuStream,
	scrapeWebsite,
	searchAnime,
	searchGithubRepos,
	searchNpmPackages
} from '@shikytemo/shitools'

const page = await scrapeWebsite('https://example.com')
const anime = await searchAnime('one piece')
const stream = await getSamehadakuStream('gnosia episode 20')
const legacyStream = await getSamehadakuLegacyStream('one-piece-episode-1155')
const repo = await getGithubRepo('Shikytemo/shitools')
const npmPackage = await getNpmPackage('@shikytemo/shitools')

Anime scraper pakai Jikan v4. Export yang tersedia:

import {
	getAnimeById,
	getAnimeCharacters,
	getAnimeEpisodes,
	getAnimeGenres,
	getAnimePictures,
	getAnimeRecommendations,
	getAnimeReviews,
	getCurrentSeasonAnime,
	getRandomAnime,
	getSeasonAnime,
	getTopAnime,
	searchAnime,
	searchCharacters,
	searchManga
} from '@shikytemo/shitools'

API publik Indonesia yang aman dipasang:

import {
	getKatanimeAnimeList,
	getKatanimeQuotesByAnime,
	getRandomKatanimeQuotes,
	searchKatanimeQuotes
} from '@shikytemo/shitools'

const quotes = await getRandomKatanimeQuotes()
const narutoQuotes = await getKatanimeQuotesByAnime('naruto')
const search = await searchKatanimeQuotes('kuat')

Samehadaku stream scraper mengambil halaman langsung tanpa Jina Reader. Bisa input query, URL series, atau URL episode:

import {
	getSamehadakuLegacyStream,
	getSamehadakuStream,
	searchSamehadaku,
	getSamehadakuSeriesEpisodes
} from '@shikytemo/shitools'

const result = await getSamehadakuStream('gnosia episode 20')
console.log(result.episode.mirrors)

const legacy = await getSamehadakuLegacyStream('one-piece-episode-1155')
console.log(legacy.episode.mirrors.find(item => item.directVideo))

Struktur

src/             core helper
src/anime.js    Jikan anime/manga REST wrapper
src/catbox.js   Catbox API wrapper
src/converter.js Media converter helper
src/indo.js     Public Indonesia anime quote APIs
src/pinterest.js Pinterest scraper
src/registry.js GitHub/NPM public REST wrapper
src/samehadaku.js Samehadaku search/episode stream scraper
src/source-profiles.js Public source profile catalog
src/sources.js Source catalog router/search/fetch helpers
src/utility.js Shortlink, QR, and lightweight social helper
src/web.js      Generic website metadata scraper
examples/        contoh pemakaian
data/            output lokal, tidak ikut git

Catatan

Gunakan scraper dengan batas wajar, hormati robots/rate limit website, dan jangan commit token atau data private.