キャラタグ出力GPT
― Danbooru 投稿上位 約6,000キャラクターの外見情報を扱う
URL
※以前のヴァージョンでは一般公開していませんでしたが、ロジックを刷新したタイミングでGPTストアでの公開と本note記事の変更を行いました。
The English version of the description is available at the following URL.
はじめに
Illustrious・NoobAI など、Danbooruタグを強く意識したモデルを使っていると、
キャラクター名だけでは再現が安定しない
髪色・髪型・耳・尻尾などを正確に指定したい
GPTの推測が混ざると使いづらい
楽がしたい
と感じる場面が多いと思います。
そこで、Danbooruの実データのみを根拠として、キャラクターの外見情報をDanbooruタグ形式で出力するGPTsを作成しました。

このGPTは何をするものか
このGPTは、
キャラクターの外見情報を Danbooruタグ形式で出力
生成・補完・推測は一切しない
同じキャラを指定すれば、常に同じ結果を返す
という、再現性最優先の設計になっています。
GPT自身が知識から考えて答えているのではなく、
あらかじめ作成した参照データからタグをそのまま取り出して出力します。
なぜ信頼できるのか
このGPTsの信頼性の根拠は、
作成した参照データにあります。
このデータは、Danbooru APIから取得した実際の投稿データを元に、
サンプリング
ノイズ除外
出現率計算
閾値判定
という工程を経て作成されています。
つまり、
「そのキャラクターに、Danbooru上で実際にどういうタグが、
どの程度の頻度で付いているか」
を統計的に処理した結果を、固定データとして参照しています。

GPT の出力内容
GPTは、参照データの該当キャラクター行から、
外見属性タグ
(gender, character, copyright, eye color, skin color, hair color, length and volume(hair), hairstyle, tail, ears, horn, wing, halo)Danbooru Wiki URL
sample count / post count
を取得し、固定フォーマットで出力します。
出力時には、WebUI の挙動に合わせて以下の整形処理を行います。
キャラクター名や作品名に括弧が含まれる場合は、\( \) にエスケープ
アンダースコア _ はすべて半角スペースに変換
これにより、WebUIへ そのまま貼り付けて使用できる形式になります。
なお、sample count は外見分析に実際に使用できた投稿数を示しており、
値が多いほど、統計的な信頼性は高いと考えられます。
参照データ はどう作っているか
1. 対象キャラクター
Danbooruに存在する「characterタグ(カテゴリ4)」を投稿数順に取得し、
投稿数上位 約6,000キャラクターを対象にしています。
2. 投稿サンプルの取得(sample count)
各キャラクターにつき、Danbooru APIを用いて
1キャラクターごとに最大1,000件の投稿をランダムページ取得でサンプリングします。
ただし、サンプルは「何でもOK」ではありません。
sample count について
sample count は、
実際に外見分析に使用できた投稿数を表しています。
このプロジェクトでは、外見タグの統計精度を下げるノイズを減らすため、
以下のような投稿を 意図的にサンプルから除外しています。
ノイズ低減のために除外している投稿例
manga / monochrome / greyscale を含む投稿
→ 色情報(髪色・目の色など)の信頼性が低いため性別系タグが複数混在する投稿
例:
1girl と 1boy
2boys や 2girlsなど複数人を含む
→ 単一キャラクターの外見統計として不適切なため
これにより、Danbooru上の post count(総投稿数)が多くても、sample count は少なくなる場合があります。
sample count が少なくなるその他の理由
以下の理由でも sample count は少なくなることがあります。
そもそも post count 自体が少ないキャラクター
投稿取得時の Danbooru API エラー
429(Too Many Requests)
通信エラー / タイムアウト
ランダムページ取得方式のため、
条件を満たす投稿が結果的に少なくなった場合
つまり sample count は、
「そのキャラクターについて、
外見分析に 使える品質の投稿 を、
実際に取得・解析できた数」
を示しています。
このプロジェクトでは 件数よりもタグの信頼性を優先しています。
タグの採用方法
どのタグを採用するかは、
閾値に従っています。
各属性(髪色・目の色・髪型など)ごとに
「出現率が何%以上なら採用するか」を明示閾値は各属性毎に25%,30%50%,70%を使い分けて使用。
目の色や髪色は基本的に条件を満たしたタグ1つのみを採用
例外としてheterochromiaやmulticolored hairなどが閾値を超えている場合は閾値を超えるタグを全て採用する。
収集対象となるタグについて
このGPTsで収集・採用しているタグは、
Danbooru上で「tag group」に属しているタグのみです。
例えば hairstyle に関しては、
以下のように 明確に tag group として分類されているタグだけを対象にしています。
https://danbooru.donmai.us/wiki_pages/tag_group%3Ahair_styles
この仕組みにより、tag group に含まれていないタグは、たとえ投稿内に存在していても 収集・集計の対象になりません。
私が全てのタグを把握していないため、またサイト(Danbooru)自体も把握しきれていないために起こります。
ただし例外として、drill ponytail は
私自身がタグを把握していること、および
私の好きなキャラクターが採用している髪型であることから、
意図的に収集対象に含めています。
タグの階層構造について
特に髪型タグは、下記のように 階層構造 を持っています。
例えば、
multiple braids
└ twin braids
└ low twin braids
このように、下位タグほど具体的な髪型を表します。
このGPTでは、同一階層内で すべてのタグが閾値を超えている場合、
より下層(より具体的)なタグを優先して採用し、
上位の包括的なタグは出力しない仕様になっています。
これにより、
冗長な髪型指定を避け
より正確で具体的な外見指定
が行われるようになっています。
Copyright(作品タグ)の扱い
投稿に複数の copyright タグが付いている場合は、
Danbooruの tag implication(タグの包含関係)を参照し、
より具体的で“深い”copyright タグを優先的に採用しています。

注意点
閾値を超えなければ採用されない。
multicolored hairを例として説明すると、multicolored hairが閾値を超えていた場合、多くのケースでは black hair や white hair などの詳細な髪色タグも併せて採用されます。
ただし、multicolored hair のみが閾値を超え、他の髪色タグが基準に満たない場合は、髪色として multicolored hair のみが出力されるということがあります。
更新・変更についての注意
この GPT は、予告なく改変・更新される場合があります。
取得データの更新や集計ロジックの調整により、前回のバージョンと同一のキャラクターであっても、常に同じタグが採用されるとは限りません。
あらかじめご了承ください。
GPTの評価を( `・∀・´)ノヨロシク


余談
GPTの利用状況は公開者にもわかりません。
GPTやnote
X(https://x.com/YakiNamaShake/status/2002356470327787891)
でフィードバックを頂ければモチベになります。
反響があればデータの更新を行う可能性も上がりますし、気分で非公開にするなんてことが無くなります('ω')シランケド
2026年2月:取得データを更新しました。
2026年5月:取得データを更新しました。
