go-character-kit

module
v1.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 25, 2026 License: MIT

README

🎨 Go Character Kit

Language Go Version GitHub tag (latest by date) Status

🚀 概要 (About) - キャラクターDNA管理キット

Go Character Kit は、画像生成・漫画生成ワークフローで利用する キャラクターDNA を、JSON 定義として安全に読み込み・検証・参照するための小さな Go ライブラリです。

キャラクターごとの Seed値参照アセットURLVisualCues/外見指示デフォルトキャラクター を一元管理し、生成パイプライン側から安定して利用できる形に整えます。


✨ コア・コンセプト (Core Concepts)

  • 🧬 Character DNA Definition:
    • id / name / seed / reference_url / reference_urls / visual_cues をまとめて定義し、キャラクターの一貫性維持に必要な情報を扱います。
  • 🔒 Immutable Collection:
    • Characters は構築時に検証・複製され、以降は読み取り専用です。参照系APIはコピーを返すため、利用側から内部状態を壊せません。
  • 🔍 Safe Lookup Helpers:
    • ID 検索(大小文字を吸収)、未指定時のデフォルトキャラクター fallback、アスペクト比別参照URLの解決(ReferenceURLFor)、Seed差し替え済み集合の派生(WithSeedOverride)を提供します。
  • 🛡 Validation First:
  • 📦 Embedded Character Assets:
    • assets パッケージから、リポジトリ同梱のキャラクター定義JSONを go:embed されたデータとして読み込めます。

🎨 キャラクター定義 (Character Definition)

キャラクターは JSON 配列として定義します。

[
  {
    "id": "zundamon",
    "name": "Zundamon",
    "seed": 10001,
    "reference_url": "gs://bucket/zundamon.png",
    "reference_urls": {
      "16:9": "gs://bucket/zundamon-16x9.png",
      "9:16": "gs://bucket/zundamon-9x16.png"
    },
    "visual_cues": [
      "vibrant emerald green hair",
      "soybean earmuffs",
      "strictly following the design from reference"
    ],
    "is_default": true
  }
]
フィールド 必須 内容
id キャラクターを識別する安定ID。前後の空白は許可されません。
name 表示名・管理名。
visual_cues 生成プロンプトへ注入する外見上の特徴。
reference_url 一貫性保持のための参照画像URL(既定のフォールバック)。gs://... などを指定可能。
reference_urls - "16:9" のようなアスペクト比文字列をキーにした参照画像URL。ReferenceURLFor が生成対象と同じアスペクト比のエントリを優先して解決します。
seed - キャラクターに紐づく任意の生成シード。
is_default - fallback 用のデフォルトキャラクター。指定できるのは1人まで。

⚙️ 使い方 (Usage)

1. JSON から読み込む
package main

import (
	"fmt"
	"log"

	"github.com/shouni/go-character-kit/character"
)

func main() {
	chars, err := character.ParseCharacters([]byte(`[
		{
			"id": "zundamon",
			"name": "Zundamon",
			"reference_url": "gs://bucket/zundamon.png",
			"visual_cues": ["green hair"],
			"seed": 10001,
			"is_default": true
		}
	]`))
	if err != nil {
		log.Fatal(err)
	}

	char := chars.GetCharacterWithDefault("ZUNDAMON")
	fmt.Println(char.ID, char.Name)
}
2. Go の構造体から初期化する
chars, err := character.NewCharacters([]character.Character{
	{
		ID:           "zundamon",
		Name:         "Zundamon",
		ReferenceURL: "gs://bucket/zundamon.png",
		VisualCues:   []string{"green hair"},
		IsDefault:    true,
	},
})
3. 同梱キャラクター定義を読み込む
chars, err := assets.LoadCharacters() // import "github.com/shouni/go-character-kit/assets"
4. 検索・派生ヘルパー
chars.Len()                            // キャラクター数
chars.All()                            // 定義順の一覧(コピー)
chars.GetCharacter("ZUNDAMON")         // 大小文字を無視したID検索。無ければ nil
chars.GetDefault()                     // is_default のキャラクター。無ければ nil
chars.GetCharacterWithDefault("xxx")   // 見つからなければデフォルトに fallback
char.ReferenceURLFor("9:16")           // アスペクト比に合う参照URL。無ければ reference_url

// zundamon の Seed だけ差し替えた新しい集合を派生(元の集合は不変)
overridden := chars.WithSeedOverride("zundamon", 999)

🧩 パッケージ構成 (Packages)

パッケージ 内容
github.com/shouni/go-character-kit/character キャラクターのドメインモデル、初期化、JSONパース、検証、検索ヘルパー。
github.com/shouni/go-character-kit/assets go:embed された同梱キャラクター定義JSONの読み込み。

🛡 バリデーション (Validation)

NewCharacters / ParseCharacters は、初期化時に以下の設定ミスを検出します。

  • キャラクター定義が空(空配列・nil)
  • id / name / reference_url / visual_cues の不足
  • id の前後空白
  • 大小文字を無視した重複ID
  • reference_urls のアスペクト比キーの形式不正("16:9" 形式のみ許可。"16x9" などのタイポを検出)
  • reference_urls の空URL
  • is_default が複数指定されている状態(該当IDをエラーメッセージに列挙)

📜 ライセンス (License)

このプロジェクトは MIT License の下で公開されています。

Directories

Path Synopsis
Package assets は、既定のキャラクター定義を埋め込みリソースとして提供します。
Package assets は、既定のキャラクター定義を埋め込みリソースとして提供します。
Package character は、生成プロンプトへ注入するキャラクター定義の型と その検索・検証を提供します。
Package character は、生成プロンプトへ注入するキャラクター定義の型と その検索・検証を提供します。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL