Kobutai 角色
Kobutai(小舞台)是一個瀏覽器擴充功能與桌面應用程式:當播放音樂、影片、直播或 Podcast 時,一個小巧的 Q 版角色會在頁面上表演。此技能可將使用者最喜愛的角色圖片(或一段描述)轉換成 Kobutai 可匯入的角色:
上傳 ─► 角色卡 ─► 設定集 + 基礎姿勢 ─► 狀態 GIF ─► make_pack.py ─► pet.json + spritesheet.webp
請以使用者的語言回覆(英文、日文或中文)。圖片提示詞請保留英文。
請在進行到需要這些文件的步驟時閱讀:
references/kobutai-contract.md- 設定集幾何、哪個 GIF 對應哪個 Kobutai 狀態、匯入與分享規則references/prompts.md- 所有圖片提示詞、風格區塊、以及每個表演動作列表references/originality.md- 如何處理第三方角色、原創角色、寵物與真人
圖片生成
所有圖片請使用主機內建的圖片生成功能:
- Codex:使用
$imagegen系統技能(內建的image_gen工具)。除非使用者明確要求,否則請勿直接呼叫圖片 API 或 CLI;那條路徑需要他們的 API 金鑰。 - ChatGPT:使用原生圖片生成。
Images 2.6(2025年11月)可以回傳動畫 GIF。每個動畫狀態都請要求產生 GIF。如果主機回傳的是靜態圖片、拒絕 GIF 輸出,或產生的 GIF 無法使用,請使用 references/prompts.md 中的網格備用方案(8 幀排列成 4 x 2 的 PNG 網格);make_pack.py 會將其裁切。
每次產生狀態圖片時,請附上 base.png(以及使用者上傳的原圖,並標示為「身分參考僅供參考」)。若未附上基礎圖而生成的狀態視為無效:請重新生成。
進度檢查表
請顯示並更新此檢查表(如果主機支援,可使用任務清單):
- 讀取你的角色
- 繪製設定集
- 製作動畫狀態
- 打包成 Kobutai 格式
- 檢查與交付
工作流程
1. 讀取角色
檢視所有上傳的圖片,並寫入 RUN/character.json(RUN = 工作目錄中的 kobutai-<id>/;在 ChatGPT 中為 /mnt/data/kobutai-<id>/)。欄位與範例請參閱 references/prompts.md § 角色卡。請決定:
- mode -
original/own/personal,依據references/originality.md。若為可辨識的第三方角色,預設為original:一個受其氛圍、顏色和角色啟發的原創角色,而非複製品。 - style -
kobutai(預設的小舞台 Q 版風格,與內建角色一致;預設值)或keep(保留上傳圖片的藝術風格,但仍維持緊湊的全身形態)。 - scene - 角色在播放內容時做什麼(唱歌、跳舞、當 DJ、演奏樂器、舒適聆聽、觀看並反應、做筆記...)。請從 § 表演場景中選取。
- genres / type - 建議的 Kobutai 標籤,稍後會在擴充功能的分享對話框中使用。
- chroma -
#00FF00,或者當角色含有綠色時使用#FF00FF。
向使用者發送一條簡短的訊息,內容包含角色卡(名稱、外觀一行描述、模式、風格、場景、標籤),並請他們確認或提出修改。如果使用者回覆「繼續」或不在意,則使用預設值繼續。如果上傳的圖片中沒有明確的單一角色,請詢問是哪一個。
2. 設定集與基礎姿勢
- 根據 § 設定集生成
RUN/profile.png:包含正面、四分之三側面、側面與背面視圖、四種表情以及一條色票條,無文字。這是使用者的設定集;請展示給他們看。 - 根據 § 基礎姿勢生成
RUN/base.png,並附上profile.png:一個放鬆的全身直立姿勢,四分之三側面視角,位於純色去背背景上。每個狀態都以此為基礎繪製。
如果角色特徵有誤(臉部、頭髮、服裝、色票),請在此處修正;後續每個步驟都會複製 base.png。
3. 製作動畫狀態
將檔案生成到 RUN/states/ 中,每個檔案一個作業,每次均附上 base.png:
| 檔案 | Kobutai 用途 | 必要與否 |
|---|---|---|
idle.gif | 待機狀態,無播放內容時 | 是 |
playing.gif | 播放內容時的表演循環(最重要) | 是 |
paused.png | 一個靜態的「等你回來」姿勢(Kobutai 僅顯示單一幀) | 建議 |
appear.gif | 出場動畫,角色被召喚時播放一次 | 建議 |
click.gif | 被點擊時的反應,播放一次 | 建議 |
error.gif | 困惑/悲傷的循環 | 選填 |
walk.gif, review.gif | 僅在套件也作為 Codex 寵物時使用 | 選填 |
使用針對所選場景的動作列表的 § 狀態 GIF。順序:先做 idle 和 playing,檢查它們,然後再做其他。每個檔案完成後,快速檢查:角色一致、約 8 個不同的幀、單一純色背景、全身在畫面內、腳部在一條基準線上、無文字、無漂浮特效。如果某個狀態失敗,請使用 § 修復單獨重新生成該狀態;切勿因為一個壞掉的狀態就重頭開始整個流程。
從 ChatGPT 或 $CODEX_HOME/generated_images/ 下載的 GIF/PNG 必須使用完全相同的名稱複製到 RUN/states/ 中。
4. 打包
python3 <skill_dir>/scripts/make_pack.py RUN # Kobutai 格式(每行最多 8 幀)
python3 <skill_dir>/scripts/make_pack.py RUN --target codex # 精確的 Codex 寵物幀數
需要 Pillow + numpy(pip install pillow numpy,scipy 為選填)。此腳本會去除背景(或保留真實透明度)、移除重複幀、統一各 GIF 間的縮放比例、對齊腳部、寫入 1536 x 1872 的 Petdex/Codex 紋理集,並以與 Kobutai 匯入器完全相同的方式進行驗證。選項:--grid playing=4x2 可為網格圖片使用其他佈局,--scale click=0.9 用於某個來源過大或過小時,--key-low/--key-high 用於難以處理的背景。
結束代碼 2 表示驗證失敗;請閱讀 out/qa/report.json,修正來源後重新執行。
如果主機無法執行 Python(例如某些 ChatGPT 設定),請將 profile.png、base.png、狀態檔案和 character.json 打包成 zip 檔案,並告知使用者在本機執行相同的指令。
5. 檢查與交付
開啟 out/qa/contact.png 和 out/qa/preview.gif 並仔細檢視。在以下情況下拒絕並修復:
- 任何一列改變了臉部、頭髮、服裝、色票或道具
- 角色在幀與幀之間或狀態與狀態之間突然變大或跳躍
- 姿勢被裁切到格子邊緣,或背景殘留有顏色的邊緣或斑點
- playing 循環在視覺上靜止不動,或 idle 動作過大
- 在約 120 像素高(Kobutai 顯示的大小)時角色不再可辨識
然後交付:
kobutai-<id>.zip,內含<id>/pet.json和<id>/spritesheet.webp- 可供觀看和分享的
profile.png和preview.gif - 使用說明(來自
references/kobutai-contract.md§ 匯入): Kobutai → 匯入 → 同時選擇pet.json和spritesheet.webp。可選:將資料夾複製到~/.codex/pets/<id>/以同時作為 Codex 寵物使用。 - 僅限
original和own模式:他們可以從擴充功能將角色提交至每週社群圖書館(我的匯入角色 → 與所有人分享,CC BY 4.0,需標註作者姓名),並使用角色卡中的類型。對於personal模式,請明確說明僅限他們個人使用。
保留 RUN/ 目錄(角色卡、設定集、基礎姿勢、狀態檔案),以便後續執行「讓舞蹈更快」或「重做點擊反應」時,只需重新生成一個狀態。
費用
一次完整的流程大約需要 8 次圖片生成(設定集、基礎姿勢、idle、playing、paused、appear、click、可選的 error)加上修復。在開始第二次完整流程之前,請先告知使用者。