Communitygithub.com

portfolio-reel

約30秒のクリエイター/フリーランサー/開発者向けポートフォリオ紹介リール(1080p60 MP4)を、固定された親しみやすいモーションデザインスタイル(テンプレート「skill 2」)で作成します。

portfolio-reel とは?

`portfolio-reel` は、1つの設定ファイル `promo.json` から、約30秒のプロフェッショナルなポートフォリオ紹介リール(1080p60 MP4)を生成するAIエージェントスキルです。テンプレート「skill 2」と呼ばれる、親しみやすくモダンなモーションデザインスタイルを採用し、すべてのフレームをコードで描画します。ユーザーが提供する写真や動画クリップ、テキスト情報を基に、フック質問、プロフィールヒーロー、1~4つの作品セクション、クロージング、ソーシャルプロフィールカードで構成されるリールを自動生成します。Claude CodeやCursor、Codexなど、任意のAIエージェントと連携して動作し、ユーザーが「ポートフォリオリールが欲しい」「イントロ動画が欲しい」とリクエストした際に、エージェントが自動的に素材を収集・設定ファイルを作成・レンダリングを実行します。5つのカラースタイル(マスタード、ミッドナイト、サンセット、アンバー、ミント)と10種類のエフェクト(ボケ、ライトスイープ、ハイライター、オービットリング、モーションブラー、セクションラベルなど)をサポートし、2つのUI(クラシックとアプリ)から選択可能。音声合成によるタイピング音やポップ音、ループビートなども自動生成され、最終的な動画は-14 LUFSでノーマライズされます。

対応~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/chydevit/Skill-create-videos/tree/HEAD/plugins/video-skills/skills/portfolio-reel

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Portfolio reel (テンプレート: "skill 2")

このスキルは、1つの設定ファイル promo.json から、完成された約30秒のイントロリールを生成します。CanvasシーンがヘッドレスChromeですべてのフレームを描画し、ユーザーのクリップをカード内で再生します。ストックフッテージ、AI動画、テンプレートサービスは使用しません。構造は参考リール skill2.MP4(TikTokクリエイターイントロ)のペース配分を模倣しています。手法のみをコピーし、そのフッテージ、言葉、名前、ハンドル、透かしは一切使用しません。

時間(3セクション)シーン
0-2.3秒マスタードグラデーション、2つの大きな柔らかな円がスライドイン;hook[0] が1文字ずつタイプされ、続いて hook[1] が大きく太字でポップアップ
2.3-2.9秒白い円が下からワイプアップ;アバターが小さな黄色い円盤としてポップイン
2.9-6.4秒白背景のプロフィールヒーロー:アバターが大きな円に成長(黄色いリングまたは黄色いデュオトーン)、次に星付きのアウトライン badge ピル、hello が1語ずつ、細い棒で区切られた roles、そして↑付きの黒い button ピル(白色円内)。矢印が上に飛び出し、ページがスクロール
6.4-20.5秒ライトグレー背景に柔らかな窓明かりの影が付いたセクションページ(各4.6秒):グラデーションタイトル、次にスクロールに追従して浮遊する1~3枚の丸みを帯びたカード。動画は再生され、写真はゆっくりズーム。ポートレートカードは縦長に、ランドスケープカードは横長に、混合行は千鳥配置
20.5-24.4秒左下から黄色い光が広がりグラデーションに;cta[0]、次に cta[1] が1語ずつ表示
24.4-30.3秒黒いプロフィールカードが点からポップ(アバターまたは logo、handle、name、最大3つのカウント stats、2つのボタン)。カーソルが最初のボタンをクリックするとグレーになり clicked と表示、その後カードが3Dで裏返り back を表示

長さは3セクションで約30秒、セクションごとに約4.6秒増減し、長いテキストでやや長くなります。

2つのUI: "ui": "classic"(デフォルト)または "app"

app は同じタイムラインとテキストを維持しますが、すべてのシーンが動くメッシュグラデーション上のモダンなアプリ画面になります:

時間app シーン
hookガラス製の検索バーが hook[0] hook[1] をタイプ;結果ドロップダウンに人物(アバター、名前、役割)と最初の2セクションがリスト表示;カーソルが人物をクリック
heroクリックされた結果がベントーダッシュボードに拡大:ガラスタイルのフォトタイル(名前とハンドル)、グリーティングタイル(バッジ、ハイライター付き hello、役割チップ)、profile.stats をカウントする統計タイル、カーソルがクリックする button タイル、セクションをリストするタイル
sections水平カルーセル、セクションごとに1スライド:大きな数字、タイトル、「n works」、上部にプログレスバー。作品はデバイスモックアップで表示:ランドスケープクリップはブラウザウィンドウ(信号機、アドレスバー site/section-title)、ポートレートクリップは電話機内、右側にカスケード配置
ctaチャット画面:タイピングドット、次に cta[0] と cta[1] が人物からのメッセージバブルとして到着(最後のバブルはアクセントカラー)
cardグラデーションカバーバナー付きプロフィールカード、オーバーラップするアバター、ハンドル、名前、カウント統計、2つのピルボタン;カーソルが「フォロー」をクリック(紙吹雪)、その後QRコード(profile.qr / profile.back から、qrencode がインストールされていれば生成)に裏返り、下部にアドレスが表示

site(オプション)はブラウザモックアップに表示するアドレスを設定します。デフォルトは profile.back です。すべてのスタイルとエフェクトは両方のUIで機能します(app では orbit と ticker は使用されません)。

スタイルとエフェクト

"style" でカラーテーマを選択します。ダークスタイルは、薄いグリッドと窓明かりの影の代わりに光るカードを持つダークページになります。

スタイル外観
mustard(デフォルト)テンプレート:マスタードイエローグラデーション、白いヒーロー、ライトグレーページ、黒いピル、青いボタン
midnightインディゴから黒、ネオンシアンとバイオレット、ダークページ、光るカード
sunsetピーチからピンク、暖かい白いページ、コーラルのタイトルとボタン
amberほぼ黒地にゴールド(開発者/ポートフォリオ風)、ダークページ、アンバーのピルとボタン
mintミントからティール、白いページ、緑のタイトル

"colors" はスタイルの任意の単色を上書きします。

すべてのエフェクトはデフォルトでオンです。"effects": {"ticker": false} で1つオフにするか、"effects": false ですべてオフにしてプレーンなテンプレート外観にできます:

エフェクト動作
bokeh柔らかな光の粒子がグラデーションシーンで漂い上昇
shine大きな質問、ボタン、プロフィールカード上を光がスイープ、さらに円ワイプにエコーリング、ボタンにパルスリング
marker名前の下にハイライターがスワイプ(text.highlight で単語を指定、または2番目の単語以降すべて)
orbit3つのドットを持つ破線リングがアバターの周りを回転
blurページスクロール中の垂直方向のモーションブラー
labels各セクションタイトルの上に「01 / 03」と、描画されるアンダーライン
glare各ワークカードが着地した後、斜めのグレアが通過
ticker大きなアウトラインタグがクロージングラインの後ろをスクロール(text.tags、または役割とセクションタイトル)
confettiボタンがクリックされたときにスタイルカラーの紙吹雪バースト
grainすべてにフィルムグレインとソフトなビネット効果

ユーザーに選択させるには、フルレンダリング前にすべてのスタイルで同じ4つの瞬間をレンダリングします(「スタイルボード」)。promo.json のコピーで style のみを変更し、render.mjs --times を使用します。

要件: ffmpeg、Node 22+、Google Chrome または Chromium(CHROME_PATH)、および numpy と scipy がインストールされたPython(PROMO_PY;promo.sh は自動で見つけます)。

ワークフロー

1. リールに必要なものを集める

  • アバター: ポートレート写真、顔と肩。crop: [x, y, size](ピクセル)を指定して顔が円に収まるようにし、プレビューで確認します。背景が込み入っているか明るい場合、"avatarStyle": "duotone" でテンプレートのように黄色の上に暗いシルエットを作成できます。
  • セクション(1~4): それぞれ短いタイトル(2~4語)と1~3のクリップ:動画({"file", "at"}、at から5.5秒間カード内で再生)または静止画。ユーザーの最高の作品を使用し、バラエティのためにポートレートとランドスケープを混ぜます。
  • テキスト: 短く保ちます。
    • hook: 小さい行と大きな1~2語の質問。
    • badge: 約50文字までのスローガン。
    • hello: 「Hello, I'm …」。
    • roles: 2~4の短い役割。
    • button: ボタンのラベル。
    • cta: 2つのクロージングライン。
  • プロフィールカード: handle、name、最大3つの stats、buttons、clicked、back。実際の数字のみ使用(ユーザー、そのサイト、またはプロフィールから)。文字列値("2023" など)はカウントせずにそのまま表示されます。
  • 言語: クメール語の場合、"lang": "km" を設定し、自然なクメール語を書きます。Kantumruy Pro がバンドルされています。
  • オプション: style、effects、logo(カードの円内)、colors、text.highlight、text.tags、music(+ musicStart)、sfxDir。

2. プロジェクトを作成する

プロジェクトフォルダを作成し、examples/creator-reel.json を promo.json としてコピーし、編集します。すべてのキーは references/config.md で説明されています。パスはプロジェクトフォルダからの相対パスです。

3. プレビュー(約10秒)

<skill>/scripts/promo.sh <project>/promo.json --preview

これによりクリップがカットされ、約13枚の静止画が out/<name>-preview.png にレンダリングされます。それを読んで以下を確認します:

  • アバターのクロップ;
  • どの行も詰まっていないか(長いテキストは縮小されます);
  • 各セクションのカードが良いフレームを表示しているか:at を変更;
  • プロフィールカードの数字。

4. レンダリング(約2分;バックグラウンドで実行)

<skill>/scripts/promo.sh <project>/promo.json --jobs 4

ステージは次の順序で実行されます:assets、plan、render、mix、encode。--from mix はフレームを再レンダリングせずにサウンドをリミックスします。

出力:out/<name>-1080p60.mp4 と out/<name>-contact.png。

5. 引き渡す前に確認する

  • コンタクトシートを読む。
  • ffprobe が build/cues.json の示す長さを表示するはずです。ミックスは -14 LUFS / -1 dBTP にノーマライズされています。
  • 結果の音声は聞こえないので、確認したことをユーザーに伝え、聞いてもらうよう依頼します。

チューニング

  • タイミング: scripts/scene.mjs の plan()。SEC はセクションの長さ、SCROLL はページスクロールの長さ。buildCues() のキューは自動的に追従します。
  • 外観:
    • テーマは scene.mjs の STYLES、エフェクトは EFFECTS;色は colors からも取得可能。
    • カードレイアウトは layout()。
    • 窓明かりの影は buildShade()。
    • フリップは drawFlip()、遠近感のあるストリップ。
  • サウンド: scripts/audio.py の SFX が sfxDir で試行されるファイル名をリストします。make_bed() がローファイビートです。

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

brand-loop

Make a seamless looping background video of glossy 3D liquid blobs in a brand's colours. Two colour families float slowly in zero gravity, each merging and pinching off like mercury, on a soft off-white studio backdrop with a warm gradient, faint ripple rings, soft drop shadows and shallow depth of field. It renders in Blender EEVEE at 4K 60 fps as H.264, HEVC 10-bit and 1080p, and the last frame flows into the first. Use it whenever the user wants a looping background, brand backdrop, abstract 3D or liquid loop, motion background for a website, stream, event screen or presentation, a "seamless loop", or a background for their logo or text, or types /brand-loop.

brand-promo

Make a ~50-second dark, kinetic studio showreel / promo video from a brand's own videos, its logo animation and a few lines of text. It has a typed intro, a ring of 3D cards, a glitchy title drop, and 3-5 spotlights (each work on a tilted card or a phone, playing its own sound). Then "Your story… next.", a 3D rush of clips, and the liquid logo reveal with the name, chips and website. It comes with an original synthesised score, narration (VoxCPM2, English or Khmer) and sound effects, as a 1080p60 MP4. Use it whenever the user wants a showreel, studio reel, portfolio video, agency or brand promo, "demo video" of their work, a promo like a template video, or a Khmer version of one, or types /brand-promo, even if they only hand over a few videos and a logo.

generate-logo

Turn any logo image (PNG, JPG, WebP or SVG) into finished 5-second animated logo reveals in five styles (liquid, neon, bounce, lens, rise). Each comes as a 1080p60 MP4 with synthesised sound effects, a transparent WebM (optional ProRes 4444 .mov) for video editors, and a keyframe sheet. It can add a two-tone wordmark, render square or vertical versions for social media, and build a bespoke style for a particular logo. Use it whenever the user wants a logo animation, animated logo, logo reveal, intro, outro or sting, motion logo, a brand intro for a video, or "make my logo move", or types /generate-logo, even if they only attach a logo and say "animate this".

saas-promo

Make a kinetic SaaS / startup / product / developer promo video (1080p60 MP4) in one fixed, fast motion-design style: an ~11-second teaser, or a ~50-second version with chapters (one per product or project) cut on the beat of the user's own song. It opens with glyph flashes and purple/lime neon shapes, then types a word with a cursor while a 3D swirl of your screenshots orbits it. Cards slide onto a painted meadow and build a bento wall with words typing inside them, and the camera zooms into a card. A glowing gradient orb then reveals the headline word by word, and a glitch drops into a long-exposure flower on a blue-to-orange sky with flying symbols and "From … / To …". Every frame is drawn in code, with typing, whoosh, riser and impact sound effects and a synthesised ambient bed or your own song (its tempo and drop are measured, so every cut lands on the beat), mixed to -14 LUFS. English or Khmer. Use it whenever the user wants a SaaS promo, product or app teaser, a developer or...

関連スキル