JanitorAI → SillyTavern カードエクスポーター

Tool

概要

JanitorAI → SillyTavern Card Exporter は、JanitorAI 上にあるキャラクターを SillyTavern の Chara Card V2 形式で使える PNG ファイルとしてエクスポートするための Tampermonkey 用ユーザースクリプトです。キャラクターページに浮かぶ操作ボタンからページ情報(名前、説明、アバターや設定)を取得し、JSON 形式のキャラ定義を PNG のテキストチャンクに埋め込んだ単一の PNG ファイルを生成・ダウンロードします。GUI は軽量で導入が容易、MIT ライセンスで配布されており、SillyTavern にキャラクターを移行したいユーザーやバックアップを取りたい開発者に便利なツールです。

GitHub

リポジトリの統計情報

  • スター数: 8
  • フォーク数: 0
  • ウォッチャー数: 8
  • コミット数: 4
  • ファイル数: 3
  • メインの言語: JavaScript

主な特徴

  • Tampermonkey 用の単一ユーザースクリプトで簡単インストール/使用
  • JanitorAI のキャラクター情報を SillyTavern 用 Chara Card V2 PNG に変換
  • 生成する PNG にキャラクター JSON を tEXt(または類似)チャンクとして埋め込み
  • 軽量な UI(浮動アクションボタン)でページから直接エクスポート可能

技術的なポイント

このスクリプトの肝は「ページ上のキャラクターデータを取得して、PNG ファイルにメタデータとして埋め込む」点にあります。実装の流れは大きく分けて (1) DOM から必要情報を抽出、(2) SillyTavern の Chara Card V2 フォーマットに合わせて JSON を生成・整形、(3) PNG イメージを用意して JSON を埋め込む、(4) ブラウザ経由でダウンロード、の 4 段階です。

JSON の埋め込みには PNG のテキストチャンク(tEXt / zTXt / iTXt など)を利用します。一般的な実装方法としては、まずキャラクターのアバターや背景を canvas に描画して PNG バイナリ(Data URL または ArrayBuffer)を得て、得られた PNG データのチャンク列をパースして tEXt チャンクを挿入、CRC を再計算して新しい PNG バイナリを組み立てる、という手順を踏みます。Tampermonkey のスコープ内で完結するため、外部依存を最小化する設計が多く、純粋な JavaScript で PNG バイナリ操作(バイナリ文字列、Uint8Array、DataView、CRC32 計算)を行うケースが見られます。

注意点としては、クロスオリジンの画像を canvas に描画する際の CORS 制約です。キャラクターのアバターを直接取得して canvas に描くと「tainted canvas」になり、toDataURL / toBlob が使えなくなることがあります。そのため、ユーザースクリプト側で画像 URL に対してプロキシ経由で取得するか、画像データを直接 Base64 化して埋め込む手法、あるいは最小限の画像(アイコン等)だけを利用する回避策が考えられます。

また、JanitorAI の DOM 構造や内部 JSON スキーマに依存するため、サイト側の更新でスクレイピング部分が壊れる可能性があります。SillyTavern 側の Chara Card V2 仕様に準拠していることが重要で、スクリプトは JSON のキー名や形式を合わせることで互換性を保ちます。ライセンスは MIT で、userscript の形態により個人用途・コミュニティ用途で扱いやすく、保守・拡張もしやすい構成です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • LICENSE: file
  • README.md: file
  • janitorai-sillytavern-exporter.user.js: file

まとめ

JanitorAI のキャラクターを手軽に SillyTavern 用にエクスポートできる実用的なユーザースクリプトです。

リポジトリ情報:

READMEの抜粋:

JanitorAI → SillyTavern Card Exporter

Version License Last Updated

A Tampermonkey userscript that exports JanitorAI characters as SillyTavern-compatible Chara Card V2 PNGs. The script surfaces a floating action button on character pages, captures page data, embeds the JSON definition inside a PNG text chunk, and s…