なろうデベロッパーの API を fluent interface で利用できる TypeScript ライブラリです。
A TypeScript wrapper library for Narou Developer APIs with fluent interface.
- 🔗 メソッドチェーン対応: 直感的な fluent interface で API を操作
- 🌐 マルチ環境対応: Node.js とブラウザの両方で動作
- 📝 TypeScript 完全対応: 型安全性と IntelliSense サポート
- 🔀 デュアル実装: fetch (Node.js) と JSONP (ブラウザ) を自動選択
- 📚 全 API カバー: なろうデベロッパーの全 API に対応
API | 説明 | 関数 |
---|---|---|
なろう小説 API | 小説の検索・絞り込み | search() |
なろう小説ランキング API | ランキング取得 | ranking() |
なろう殿堂入り API | ランキング履歴取得 | rankingHistory() |
なろう R18 小説 API | 18禁小説検索 | searchR18() |
なろうユーザ検索 API | ユーザー検索 | searchUser() |
# 推奨: pnpm
pnpm add narou
# または
npm install narou
yarn add narou
import { search, ranking } from "narou";
import { Genre, Order, RankingType } from "narou";
// 異世界恋愛小説を検索
const result = await search("異世界")
.genre(Genre.RenaiIsekai)
.order(Order.FavoriteNovelCount)
.limit(10)
.execute();
console.log(`${result.allcount}件の小説が見つかりました`);
// ブラウザでは専用のインポートを使用(JSONP対応)
import { search } from "narou/browser";
const result = await search("魔法").execute();
- 🔗 完全な API ドキュメント - TypeDoc で生成された詳細なドキュメント
- 🤖 LLM 向けドキュメント - AI/LLM が理解しやすい形式のドキュメント(TypeDoc JSON から自動生成)
import { search, ranking, rankingHistory, searchR18 } from "narou";
import {
Genre,
GenreNotation,
Order,
NovelTypeParam,
RankingType,
R18Site,
R18SiteNotation,
} from "narou";
// なろう小説 API
const searchResult = await search("word")
.genre(Genre.RenaiIsekai) // 異世界〔恋愛〕
.order(Order.FavoriteNovelCount) // ブックマーク数の多い順
.type(NovelTypeParam.RensaiNow) // 連載中
.execute();
console.log(searchResult.allcount);
for (const novel of searchResult.values) {
console.log(novel.title);
console.log(novel.ncode);
console.log(GenreNotation[novel.genre]); // 値から名前を取得できるヘルパーもあります
}
// なろう小説ランキング API
const rankingResult = await ranking()
.date(new Date("2023-04-01"))
.type(RankingType.Daily)
.execute();
for (const novel of rankingResult) {
console.log(novel.ncode);
console.log(novel.rank);
console.log(novel.pt);
}
// なろう小説ランキング API となろう小説 API を組み合わせたヘルパーもあります
const rankingResultWithDetail = await ranking()
.date(new Date("2023-04-01"))
.type(RankingType.Daily)
.executeWithFields();
for (const novel of rankingResultWithDetail) {
console.log(novel.ncode);
console.log(novel.rank);
console.log(novel.pt);
console.log(novel.title);
}
// なろう殿堂入り API
const rankingHistoryResult = await rankingHistory("**NCODE**");
for (const history of rankingHistoryResult) {
console.log(history.type);
console.log(history.date);
console.log(history.pt);
console.log(history.rank);
}
// 18禁小説 API
const searchR18Result = await searchR18("word")
.r18Site(R18Site.Nocturne) // ノクターン
.order(Order.FavoriteNovelCount) // ブックマーク数の多い順
.type(NovelTypeParam.RensaiNow) // 連載中
.execute();
console.log(searchR18Result.allcount);
for (const novel of searchR18Result.values) {
console.log(novel.title);
console.log(novel.ncode);
console.log(R18SiteNotation[novel.nocgenre]); // 値から名前を取得できるヘルパーもあります
}
このプロジェクトでは pnpm を使用しています。
# 依存関係のインストール
pnpm install
# ビルド
pnpm run build
# テスト実行
pnpm run test
# 型チェック
pnpm run check
# ドキュメント生成(TypeDoc + llms.txt)
pnpm run docs
- このリポジトリをフォーク
- フィーチャーブランチを作成:
git checkout -b my-new-feature
- 変更をコミット:
git commit -am 'Add some feature'
- ブランチにプッシュ:
git push origin my-new-feature
- プルリクエストを作成
MIT License - 詳細は LICENSE ファイルを参照してください。