Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kidoku — 小説サイトの既読マーカー

なろう・ハーメルン・カクヨムなどの小説サイトで、読んだ作品を自動でマークして、評価とメモを残せるブラウザ拡張機能です。

  • 話ページを開くだけで既読として記録されます(何話まで読んだかも残ります)
  • 既読の作品を開くと「読んだことがあります」と出ます
  • ランキングや検索結果でも、開く前に既読が分かります
  • 評価(1〜10 または ★5)・良かった点・悪かった点・メモを作品に紐づけて残せます
  • データはこの端末の中だけに保存します。外部への送信は一切ありません
  • JSON で書き出し・読み込みができます(バックアップ・別PCへの移動)

対応サイト

同梱の定義は次の3サイトです。

サイト 作品ページ 一覧・ランキング
小説家になろう ncode.syosetu.com yomou.syosetu.com
ハーメルン syosetu.org 同じ
カクヨム kakuyomu.jp 同じ

対応サイトは設定画面から自分で追加・修正できます(後述)。

入れ方

開発版として読み込む(Chrome / Vivaldi / Edge など Chromium 系)

  1. このリポジトリをダウンロードして展開します
  2. ブラウザで chrome://extensions(Vivaldi なら vivaldi://extensions)を開きます
  3. 右上の「デベロッパー モード」をオンにします
  4. パッケージ化されていない拡張機能を読み込む」を押し、展開したフォルダ(manifest.json がある階層)を選びます

使い方

  • 話を開く → 自動で既読になります(設定でオフにできます)
  • 既読の作品ページを開く → 上部(または右下)にバナーが出ます
  • バナーの「評価・メモ」 → 状態(読了 / 切った / 積み)、評価、良かった点・悪かった点・メモを書けます
  • ツールバーのアイコン → いま開いている作品の状態を確認し、同じパネルを開けます
  • 設定画面(アイコン → 「設定・記録の一覧」) → 記録した作品の一覧、書き出し・読み込み、サイト定義の編集

既読の粒度

主データは「読んだ話の識別子の集合」です。「第N話まで」は表示のための派生情報で、

  • 話IDが連番のサイト(なろう・ハーメルン)→ 「12話まで」
  • 話IDが連番でないサイト(カクヨム)→ 作品ページの目次を見た時に順番を覚え、「全33話中 12話目まで」

と出します。話リンクが1つも無い作品ページは短編とみなして既読にします(設定でオフにできます)。

対応サイトを自分で足す

設定画面の「対応サイト」に JSON で書きます。1件はこの形です。

{
  "id": "example",
  "name": "サンプル小説サイト",
  "enabled": true,
  "hosts": ["example.com"],
  "listHosts": ["ranking.example.com"],
  "work":    { "pathPattern": "^/novel/(\\d+)/?$", "queryParam": null },
  "episode": { "pathPattern": "^/novel/(\\d+)/(\\d+)/?$", "sequential": true },
  "idCase": null,
  "title": { "selector": "h1", "episodeSelector": null, "suffixes": [" - サンプル"], "pattern": null },
  "workUrl": "https://example.com/novel/{id}/"
}
項目 意味
hosts 作品ページ・話ページのあるホスト
listHosts ランキングや検索結果など、リンクにマークを付けたいホスト
work.pathPattern 作品ページのパスに当てる正規表現。1番目の括弧が作品ID
work.queryParam 作品IDがクエリに出るサイト用(例: ?nid=123 なら "nid"
episode.pathPattern 話ページ。1番目が作品ID、2番目が話ID
episode.sequential 話IDが連番なら true(「N話まで」の表示に使う)
idCase "lower" にすると作品IDを小文字に揃えます
title.selector 題名の要素。話ページ用は episodeSelector
title.suffixes / pattern 上で取れない時の保険。document.title から末尾を落とすか、正規表現の1番目の括弧を題名として使います(話ページ用は episodePattern

題名は「①セレクタ → ②話ページに必ずある作品ページへのリンクの文字 → ③document.title の整形」の順で拾います。②はサイトの作りに依存しないので、title を空にしてもだいたい動きます。

保存したら、同じ画面の「権限」で、そのホストへのアクセスを許可してください(許可するまでは動きません)。

正規表現は URL 全体ではなくパス(/…)だけに当たります。ホスト名の一部を作品IDとして拾わないための作りです。

プライバシー

  • 保存先は chrome.storage.local(この端末の中)だけです
  • サーバー送信・解析・広告の類は一切ありません
  • 権限は、対応サイトのページを読むために必要なものだけを求めます(storagescripting のみ)

詳細は PRIVACY.md を見てください。

開発

node --test "test/*.test.mjs"   # URL解釈・進捗計算・保存のテスト
node tools/make-icons.mjs       # アイコンPNGの生成
node tools/make-promo.mjs       # ストア用の販促画像の生成
node tools/build.mjs            # ストア提出用の dist/store を作る

ストアへの提出に必要な文面と手順は docs/store-listing.md にまとめてあります。

dist/store は、成人向けサイトの定義(src/core/defaults.r18.js)と、その権限を外したビルドです。 必要な人は、設定画面から同じ形式のサイト定義を自分で足せます。

ライセンス

MIT License(LICENSE

About

小説サイト横断の既読マーカー。読んだ作品を自動でマークし、ランキングや検索結果でも開く前に既読が分かるブラウザ拡張(データは端末内のみ)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages