iArt.ai
AI motion graphics software — the After Effects alternative anyone can use. Create animations and explainer videos from a text prompt in minutes.
Rink, Konta, and Tanu‑ne will be by your stream, talking on their own. Free.
AI translation
りんく・こん太・たぬ姉があなたの配信のそばにいて、勝手に喋ります。無料。
MediaJavaScript · HTMLGitHub @kimito-linkOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
りんく・こん太・たぬ姉の3人が、ふわふわ浮いて喋る部品。 見た目と動きだけ。何を喋るか(会話AI)と声は入っていない — ただし受け口は開いている。 → http://localhost:5173/ を開くと、3人が浮いている。 demo.html を file:// で直接開くと 真っ白になる(ES module が CORS で読めない)。 必ず npm run demo 経由で開くこと。 素材は 1500×1500px・同じ位置でぴったり重なる透過PNG(assets/characters/)。 顔ベースの上に目と口を重ねる。 素材の正本は kimito-link/src/images/yukkuri-character-parts/。 ここへは取り込み済み(ファイル名は正本のまま=更新は単純コピーで済む)。 1. hidden は display:flex に負ける display:flex を持つ要素すべてに [hidden] { display: none; } の打ち消しが要る。 移植元は .nlcl-stage にだけ書いていたため、このリポで .nlcl-chara__think が同じ穴に落ちた(誰も考えていないのに「…」が3体とも出た)。 ★1箇所直して安心しない。Read the full README ↗
りんく・こん太・たぬ姉の3人が、ふわふわ浮いて喋る部品。
見た目と動きだけ。何を喋るか(会話AI)と声は入っていない — ただし受け口は開いている。
npm install
npm run demo
→ http://localhost:5173/ を開くと、3人が浮いている。
demo.htmlを file:// で直接開くと 真っ白になる(ES module が CORS で読めない)。 必ずnpm run demo経由で開くこと。
import { startCharaLive } from './src/index.js';
const live = startCharaLive({
doc: document,
mount: document.getElementById('stage'), // ★body 直下に置かないこと(後述)
resolveUrl: (p) => p // 拡張なら chrome.runtime.getURL
});
startCharaLive が返すもの:
| API | 何をするか |
|---|---|
setVisible(bool) | 表示/非表示。false の間は描画を止める(CPU を食わない) |
onCommentSpoken({commentKey}) | 誰か1体が相槌を入れる。★音声が鳴り始めた瞬間に呼ぶ |
onCommentSpokenEnd() | 相槌を畳む。音が止まったのに口が動き続ける事故を防ぐ |
onStreamerAddressed({prompt, answer}) | 話しかける。名指しがあればその子が答える |
beginThinking() / endThinking() | 考え込む表現。★endThinking は必ず finally で呼ぶ |
destroy() | 片付け |
charaLiveState.js … 判断(誰が喋る・どの表情・どこに浮かぶ)。DOM に触らない純関数
charaLiveStage.js … 描画(状態を DOM に落とすだけ。判断を書かない)
charaLiveController.js … 配線とタイミング(rAF・相槌の間引き)
charaParts.js … 表情+口 → 重ねる3枚のパーツパス
charaLiveCensus.js … 計器(本当に見えているかを実測して1行にする)
素材は 1500×1500px・同じ位置でぴったり重なる透過PNG(assets/characters/)。
顔ベースの上に目と口を重ねる。
| 合成済み(移植元) | ★パーツ(このリポ) |
|---|---|
| 表情4×口2 = 8通りで固定 | 目と口が独立して動く |
| ★口パク中にまばたきできない | ★喋りながらまばたきできる |
| 表情を足すには絵が要る | 重ね方を変えるだけ |
| 先読み24枚 | 先読み21枚で全組み合わせ |
素材の正本は kimito-link/src/images/yukkuri-character-parts/。
ここへは取り込み済み(ファイル名は正本のまま=更新は単純コピーで済む)。
hidden は display:flex に負ける
display:flex を持つ要素すべてに [hidden] { display: none; } の打ち消しが要る。
移植元は .nlcl-stage にだけ書いていたため、このリポで
.nlcl-chara__think が同じ穴に落ちた(誰も考えていないのに「…」が3体とも出た)。
★1箇所直して安心しない。
mount 先に注意 — body 直下に置かない
移植元では body 直下に置いたら、同じ z-index の全画面要素に覆われて
一度も見えなかった(同値 z-index は DOM 順で後勝ち)。
★寄生先の z-index は「最大値を名乗る」でなく実測して1つ上。
transform は1本にまとめて書く
translate/rotate/scale を別々に当てると上書き事故になる。
pointer-events:none は elementFromPoint に現れない
素朴に「最前面が自分か」で覆われ検出すると必ず誤診する(正常なのに赤が出た)。
★自分ではなく祖先が返るかで見る。計器の誤診は一番高くつく。
npm test
73件。★「緑を出しっぱなしにしない」ことも試験している (打ち消しを外すと実際に赤が出ることを確認するテストが入っている)。
芯の一文:
ただ一人で抱え込まないように そばにいることしかできない
配信者がまだかけだしのとき/だれもいないときに、間を持たせる。
詳しい構想は tsuioku-no-kirameki.com/_docs/CONCEPT-aibou-3nin-2026-09-04.md。