コンテンツ制作 · heygen-com/hyperframes-community-skills

session-story

エージェントが、ユーザーとの普段のセッションの始まりから終わりまでを、ユーザーの実際のメッセージを使ってアニメーション映画にします。日頃の作業(コード、執筆、データ、デザイン、動画など)の内容は問いません。エージェントはユーザーについて把握している情報で飾られた部屋のデスクに座り、モニターにはその作業内容が映し出されます。リクエストは紙飛行機となって舞い込み、開かれます。修正指示は3Dカートゥーンの木槌となって叩きつけられ、向きを変えて打面に文字を表示します。称賛はリボンに文字を引いた蝶として現れます。エージェントは各返答を用紙にタイプし、折りたたんで投げ返します。映像はモニターが「<name> とのセッションを開始します」と起動するまで眠っているエージェントから始まります。エージェントはすべてのアクションに合わせてオリジナルのオーケストラ劇伴を作曲します。p5.brush による水彩調で、HyperFrames を用いてレンダリングされます。トリガーワード: 「セッションの動画を作って」「私とのセッションをアニメ化して」「セッションストーリー」「私との共同作業の様子を見せて」「私とエージェントの映画を作って」

L4 高権限 · 段階的認可と監査V1 コミット固定コマンド実行ネットワーク通信ファイル書き込みDual-pass Audit
Author heygen-comGitHub heygen-com/hyperframes-community-skills ↗Stars 156License Apache-2.0(仓库根 LICENSE)Commit ba7a0bb6d3
管理レベルは Skill の能力と推奨統制措置を示すものであり、品質や安全性の認証、利用可否の判定ではありません。使用の可否はユーザーおよび管理者が決定します。Agent 環境によって制約が異なるため、自動保護を仮定しないでください。第三者製 Skill の著作権は原著作者に帰属し、利用リスクは利用者が負います。

1仕組みと動作原理

パイプライン全体の入力となるのは、エージェント自身の履歴です。ユーザーの日常的なパターンを割り出し、1回の典型的なセッションを時系列順に沿って40〜70秒の映像に仕上げます。素材はユーザー自身の生の発言であり、画面上の部屋やデスクはエージェントが持つユーザーのコンテキストから形作られます。

skills/session-story/SKILL.md
The agent reads its own history with its user, finds their routine, and turns one typical session into a 40 to 70 s film, in the order it happened:
ここで行っていること: 「ドキュメンタリー」としての信頼性を本物の引用の上に築きます。モデルにユーザーのセリフを捏造させるのではなく、トランスクリプトから連続したセグメントを抽出します。

創作のための入力は story.json の1点のみです。演出(滑空、折りたたみ、投擲、木槌の殴打、蝶の羽ばたき)は scenes/*.js 配下のエンジンが担当し、エージェント側が変更すべきではありません。画面に表示されるすべての文言は引用であり、レンダリング前に1行ずつユーザーの承認を得る必要があります。

skills/session-story/SKILL.md
Write `story.json` and the engine does the choreography. Nothing on screen is invented: every line is a quote, and the user approves every line before a frame is rendered.
ここで行っていること: 「モデルの即興」を story.json の階層に限定します。モーション層は事前に調整済みの物理アクションとして固定し、出力ごとのアニメーションのブレを抑えます。

素材の抽出はローカルで行われ、ユーザーの明確な合意が前提となります。harvest.py が現在のプロジェクトの Claude Code(~/.claude/projects/<slug>/*.jsonl)および Codex(~/.codex/sessions)のログを読み込み、「最も劇的」ではなく「最も典型的」な順にソートします。各メッセージにはローカル時刻、種別の推測、機密フラグが付与されます。

skills/session-story/references/sources.md
It prints the routine first: messages and minutes in a median session, the usual start time, the mix of kinds, and the words that come up most.
ここで行っていること: 選択前にまず定量化します。日常的なものを優先することで「これこそ普段の自分たちの姿だ」という実感を保証します。フラグ(secret/email/path/url/number/name?)はあくまで手がかりであり、漏れがある場合は人間が確認する必要がある旨がドキュメントに明記されています(小文字の人名などは検出されません)。

schedule.mjs は「本編のレンダリングで動作する同一のコード」を使用して story.json をコンパイルします。VM 内で scenes/compile.js を実行し、story.js、score/timeline.json、index.html の再生時間、kit/config.js を生成します。同時にバリデータとしても機能し、サンプルの流用を拒否し、部屋の小道具名とスロットの適合性を検証し、source のない引用に警告を発し、80秒超過に警告を出し、冒頭が返答から始まっている場合や引用が長すぎる場合には exit 1 で即座に終了します。

skills/session-story/scripts/schedule.mjs
// schedule.mjs: compile a project's story.json with the same code the film runs (scenes/compile.js) … refusing: this is the example story ( … vm.runInContext(fs.readFileSync(P('scenes/compile.js'), 'utf8'), ctx, { filename: 'compile.js' });
ここで行っていること: コンパイルとプレビューを兼ねます。再生時間やキーフレームをエンジン側から確定させることで「完成後に長さの不整合に気づく」事態を防ぎます。またサンプル保護機能により、エージェントが作者のサンプルセッションで誤魔化すのを防止します。

プライバシーゲートは厳格な関門です。デザインパスの前に、ユーザーに一覧表(フック、ネームプレート、各引用文、各返答文、小道具とその選定理由)をソース元付きで提示し、明示的な yes を得て初めて approved: true を書き込みます。承認前は全フレームに DRAFT の透かしが入ります。ユーザー本人以外の氏名、クライアント名、企業名、NDA 対象製品、パス、URL、メールアドレス、特定可能な数値、秘密情報はすべてカットする必要があります。

skills/session-story/SKILL.md
7. **Privacy gate:** show the user one table of every on-screen line (hook, nameplate, each quote, each reply, each prop and why), each with its source. Take their edits, get an explicit yes, then set `"approved": true`. Until then every frame carries a DRAFT stamp.
ここで行っていること: 「画面表示前の人間による確認」を作法任せにせずパイプラインに組み込みます。story.json 内で approved されていなければ、スナップショットプレビューであっても DRAFT の刻印が入ります。

劇伴音楽は独自作曲ですが、厳格な数値基準が設けられています。score/score.py(独自の主題、キー、音色)を記述し、build.sh が compose → render → master → check の順で進行します。macOS では swift 経由でシステム標準の General MIDI を使用し、その他の環境では fluidsynth + SOUNDFONT が必要となります。ffmpeg で -16 LUFS にラウドネスノーマライズし、最後に qc.py がビート単位で音量と無音区間(デッドエア)を検証します。

skills/session-story/scripts/score/build.sh
# build.sh: compose → render → master → check. Run from anywhere: sh score/build.sh … python3 qc.py ../assets/audio/score.wav timeline.json
ここで行っていること: 楽譜は映像のタイムライン(schedule.mjs が生成する timeline.json)に厳格に合わせる必要があり、「fails on dead air(無音区間で失敗)」によって拍の欠落を演出ではなく不具合として扱います。

2コア機能

01ローカルのトランスクリプトから「1回の典型的なセッション」を選定し、日常プロファイル(メッセージ数や所要時間の中央値、一般的な開始時刻、種別の構成比、頻出語)を提示可能
02画面上への一字一句違わぬ引用表示: ユーザー発言は連続した抜粋(短縮は可、改変は不可)、返答はそのターンの原文を採用し、プライバシー検証用に全件 source を保持
03データ駆動型の部屋とアクターの生成: 部屋のスロット配置に加え、小道具は実在かつスロット条件に合致(棚は3点以内)が必須。Claude 以外のエージェントは cast.md に沿って自身を描画
04オリジナルの作曲・音源制作パイプライン: score.py の記述 → swift/fluidsynth によるレンダリング → ffmpeg で -16 LUFS にノーマライズ → qc.py で拍ごとの音量と無音区間を検証
05ローカルでの完パケ出力と検収: 24fps / crf 12 で MP4 をレンダリングし、長さは schedule.mjs の出力値と一致、音声トラックを必須とし、キーフレームを抽出して目視確認を実施
06明確でテスト可能なエラー挙動: 返答から始まる構成や引用の文字数超過がある場合、schedule.mjs は対象のビートを指定して exit 1 を返却

3外部依存関係

KindDependency / Endpoint
cliHyperFrames CLI(钉版 npx --yes [email protected];check/preview/render/snapshot)
cliffmpeg(配乐母带 loudnorm/afade + 渲染后抽帧核对)
packagep5 2.3.3(LGPL-2.1)/ p5.brush 2.2.3(MIT)/ @fontsource/permanent-marker 5.3.0(Apache-2.0),经 npm ci 按锁文件安装
cli配乐渲染器:macOS 的 swift(系统 General MIDI 音色库)或其他平台的 fluidsynth + 用户自备 SOUNDFONT
network构建期声明无网络;唯一潜在外发是 snapshot 把帧送 Gemini(仅在 GEMINI_API_KEY 存在时),skill 要求一律带 --describe false 规避
network本地隐私数据读取(非凭证):当前项目的 Claude Code / Codex 会话记录,以及用于填房间的 memory 与指令文件

4推奨統制措置と判定根拠

安全運用のための推奨統制措置
Agent 向け
段階的・都度認可、サンドボックス推奨
管理者向け
承認フロー、ロールバック可能、全履歴監査
判定根拠(ファイルパスと抜粋)
  • scripts/: ローカルスクリプトまたはコマンドの実行: sh scripts/setup.sh(固定バージョンの依存関係を読み取り専用でダウンロードする初回 npm ci)
  • 网络端点: 外部ネットワークアクセスの宣言: ビルド時の外部送信なし(SKILL.md 内の記載: Network at build time: none)
  • 本地工作目录: ファイルの読み書きと成果物の出力: session-story-candidates.json(ユーザーの生の発言を含む harvest の出力成果物)
監査ノート: 評価対象 = スキルリポジトリ自身(SKILL.md + scripts/ 配下の6つのエントリポイント + scripts/score/ + assets/engine + assets/example + リファレンス6件)。スキルの挙動は完全にローカルで完結しています。harvest.py はローカルのセッション jsonl のみを読み込み(Python 標準ライブラリ)、schedule.mjs は同梱されたエンジンを VM 上で実行してコンパイルを行い、score/* はローカルの python/ffmpeg/swift|fluidsynth で動作し、engine の描画も assets/vendor/p5.min.js から p5 を読み込みます(CDN 不使用、完全オフラインでレンダリング可能)。認証情報の読み込みは一切行わず(SKILL.md: No credentials, no paid calls.)、外部への素材送信もなく、スナップショットのアップロード処理も明示的に禁止されています(一律 --describe false)。唯一の外部通信は、公式レジストリからの固定バージョンの依存関係インストール(setup.sh による npm ci および npx 経由の [email protected] 取得)のみであり、これは実行時ではなくインストール時の動作に該当します(バッチ4の先行事例 baoyu-translate の npm 依存関係と同様、Blue/安全判定)。留意すべき事項はローカル環境におけるプライバシーと生成物の扱いです。ユーザーセッションの生データが読み込まれ、story.json や candidates.json にユーザーの原文が保存されるため、ドキュメントではこれらを決してコミットや共有しないよう強く義務付けています。

5二重目の独立検証

  • [ok] 『No credentials』与『Network at build time: none』是否成立 — 目录内 process.env 命中只有 SOUNDFONT(build.sh 交给 fluidsynth 的音色库路径)与 GEMINI_API_KEY 的**提示文本**;无键值读取、无 fetch。engine/index.html 引用 assets/vendor/p5.min.js(本地),渲染链路不需联网。
  • [discrepancy] harvest 的敏感 flag 能否替代人工审核 — 不能,文档自己说明了:FLAGS 是正则模式匹配(secret/email/path/url/number/name?/person?),sources.md 明写 'The flags miss what they can't see: a name typed in lowercase ("like peter said") has no flag.'。故能力清单不写成『自动脱敏』,隐私门本质是人读。
  • [ok] 示例故事冒充是否真会被拦 — schedule.mjs 读取随包 assets/example/story.json,用 quotes() 归一化小写比对引用;命中 ≥2 条且未加 --example 时 exit 1 并提示写自己用户的故事。防糊弄逻辑真实存在。
  • [ok] 配乐链是否真有三平台分支与母带门禁 — build.sh 依序判断:Darwin + 系统 gs_instruments.dls + swift → swift 渲染;否则 fluidsynth + SOUNDFONT → 渲染;都不满足则报错退出(并明说两者都不下载东西)。母带为 ffmpeg loudnorm=I=-16:TP=-1.5:LRA=14 + 首尾淡入淡出,最后 python3 qc.py 检响度与死气。
  • [ok] 引擎代码来源是否交代 — assets/engine/NOTICE.md 写明 kit/core.js、kit/clawd.js、kit/timeline.js 改编自 ClaudeAnimationBase(commit b1d7e89,MIT),并随包分发 LICENSE-ClaudeAnimationBase;非自有代码有交代。
  • [unlocatable] 『40 到 70 s 抓得住注意力』的时长论断 — 该区间是设计声明(schedule.mjs 仅对 >80s 打 warning),源码内无实测依据;本次只读侦查未运行 harvest 与渲染,故不作为已核事实使用。

6結論

  • 徹底した信憑性の維持: 画面に表示される文言はすべてローカル履歴の連続した断片でなければならず、返答も自身の原文を使用。改変やツギハギは禁止
  • マナーではなくステートマシンとして実装されたプライバシーゲート: approved: true が設定されるまで各フレームに DRAFT が刻印され、デザイン着手前に出典付き一覧を提示して人間による1行ずつの承認が必須
  • クリエイティブと演出制御の明確な分離: エージェントは story.json、部屋、アクター、劇伴のみを担当し、モーション層は固定。毎回アニメーションを再構築することなくエンジンの再現性により安定した出力を確保
  • 確実な検収可能性: schedule.mjs によるビート表およびキーフレームの出力、劇伴の 'ok: no dead air' による通過確認、および exit 1 による明示的なエラー検証ケースを用意
  • 完全なローカル完結: 描画は CDN に依存せず(p5 は同梱)、楽曲生成もシステムやローカルのシンセサイザーを利用し、認証情報の保持や有償 API の呼び出しは不要
  • 最適な用途: エージェントが特定のユーザーとの間で確かな対話履歴(Claude Code / Codex のローカルログ)を持ち、プライバシーシートを確認した上で映像を出力したい用途に最適です。「普段どのように協力し合っているか」を40〜70秒の手触り感あるショートフィルム(紙飛行機のリクエスト、木槌による修正、蝶の称賛、折り紙の返答、オリジナル劇伴、p5.brush による水彩レンダリング)へと仕上げます。特定のユーザーへの記念品としての制作や、「エージェントが自身の活動履歴を客観的に観察する」デモンストレーションにも適しています。
    不向きな用途: 不向きなケース: ① 第三者の対話履歴、チーム共有ログ、または架空の引用文を用いたプロモーション映像(SKILL.md で明確に禁止されています)。② まったく対話履歴がなく、ユーザーからもメッセージ提供が得られない場合(素材がなければ抽出できません)。③ 長編や複数シーンにまたがるストーリー映像(設計基準は40〜70秒であり、80秒を超えると警告対象となります)。④ macOS 以外の環境で fluidsynth + サウンドフォントが整っていない場合(劇伴生成パイプラインが動作しません)。⑤ プロジェクトファイル内にユーザーの生の発言を保存することが許容されないワークフロー。⑥ 1行ずつのプライバシー確認を行わず、ワンクリックでの動画生成を求める場合。
    Install Agent-Ready
    ① Verified Mirror 2026-09-28
    Option A · Direct DownloadDownload session-story.tar.gz
    sha256: 0e83cbb985854ae8…
    Option B · Copy Guide for Agent
    install.json
    Agent はこの JSON ガイドから自動的にダウンロードして検証します。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit ba7a0bb6d3.