ppt-template-creator
ユーザーが提供したPowerPointテンプレートをもとに、再利用可能な自己完結型のPPTテンプレートスキルを作成します。ユーザーが自分のテンプレートからスキルを作成したい場合にのみ使用してください。実際のプレゼンテーションを作成する場合は、代わりにpptxスキルを使用してください。
description の原文を見る
Creates self-contained PPT template SKILLS (not presentations) from user-provided PowerPoint templates. Use ONLY when a user wants to create a reusable skill from their template. For creating actual presentations, use the pptx skill instead.
SKILL.md 本文
PPT Template Creator
このスキルはプレゼンテーションではなくSKILLを作成します。 ユーザーがPowerPointテンプレートを後でプレゼンテーション生成に使用できる再利用可能なスキルに変換したい場合に使用してください。ユーザーがプレゼンテーションを作成するだけの場合は、pptxスキルを使用してください。
生成されるスキルには以下が含まれます:
assets/template.pptx- テンプレートファイルSKILL.md- 完全な説明書(このメタスキルへの参照は不要)
スキル構築の一般的なベストプラクティスについては、skill-creatorスキルを参照してください。このスキルはPPT固有のパターンに焦点を当てています。
ワークフロー
- ユーザーがテンプレートを提供 (.pptx または .potx)
- テンプレートを分析 - レイアウト、プレースホルダー、寸法を抽出
- スキルを初期化 -
skill-creatorスキルを使用してスキル構造をセットアップ - テンプレートを追加 - .pptxを
assets/template.pptxにコピー - SKILL.mdを作成 - 以下のテンプレートに従い、PPT固有の詳細を記入
- 例を作成 - サンプルプレゼンテーションを生成して検証
- パッケージ化 -
skill-creatorスキルを使用して.skillファイルにパッケージ化
ステップ2: テンプレートを分析
重要: プレースホルダーの正確な位置を抽出します - これによってコンテンツ領域の境界が決まります。
from pptx import Presentation
prs = Presentation(template_path)
print(f"Dimensions: {prs.slide_width/914400:.2f}\" x {prs.slide_height/914400:.2f}\"")
print(f"Layouts: {len(prs.slide_layouts)}")
for idx, layout in enumerate(prs.slide_layouts):
print(f"\n[{idx}] {layout.name}:")
for ph in layout.placeholders:
try:
ph_idx = ph.placeholder_format.idx
ph_type = ph.placeholder_format.type
# 重要: インチ単位で正確な位置を抽出
left = ph.left / 914400
top = ph.top / 914400
width = ph.width / 914400
height = ph.height / 914400
print(f" idx={ph_idx}, type={ph_type}")
print(f" x={left:.2f}\", y={top:.2f}\", w={width:.2f}\", h={height:.2f}\"")
except:
pass
記録すべき主要な測定値:
- タイトル位置: タイトルプレースホルダーはどこに位置していますか?
- サブタイトル/説明: サブタイトル行はどこにありますか?
- フッタープレースホルダー: フッター/ソースはどこに表示されますか?
- コンテンツ領域: サブタイトルとフッターの間のスペースがコンテンツ領域です
真のコンテンツ開始位置を見つける
重要: コンテンツ領域は必ずしもサブタイトルプレースホルダーの直後に始まるわけではありません。多くのテンプレートには、サブタイトルとコンテンツ領域の間に視覚的な境界線、線、または予約スペースがあります。
最適なアプローチ: レイアウト2またはOBJECTプレースホルダーを持つ同様の「コンテンツ」レイアウトを確認します - このプレースホルダーのy位置がコンテンツが実際に開始すべき場所を示しています。
# OBJECTプレースホルダーを見つけて、真のコンテンツ開始位置を決定
for idx, layout in enumerate(prs.slide_layouts):
for ph in layout.placeholders:
try:
if ph.placeholder_format.type == 7: # OBJECTタイプ
top = ph.top / 914400
print(f"Layout [{idx}] {layout.name}: OBJECT starts at y={top:.2f}\"")
# このy値がコンテンツが実際に開始すべき場所です!
except:
pass
例: テンプレートは以下のようになっている可能性があります:
- サブタイトルがy=1.38"で終了
- ただしOBJECTプレースホルダーがy=1.90"で開始
- ギャップ(0.52")は境界線/線用に予約されています - そこにコンテンツを配置しないでください
サブタイトルの終了位置ではなく、OBJECTプレースホルダーのy位置をコンテンツ開始として使用します。
ステップ5: SKILL.mdを作成
生成されたスキルは以下の構造を持つ必要があります:
[company]-ppt-template/
├── SKILL.md
└── assets/
└── template.pptx
生成されたSKILL.mdテンプレート
生成されたSKILL.mdは自己完結型で、すべての説明書が組み込まれている必要があります。このテンプレートを使用して、分析から角括弧の値を埋めてください:
---
name: [company]-ppt-template
description: プレゼンテーション作成用の[Company] PowerPointテンプレート。[Company]ブランドのピッチデック、取締役会資料、またはクライアントプレゼンテーション作成時に使用します。
---
# [Company] PPTテンプレート
テンプレート: `assets/template.pptx` ([WIDTH]" x [HEIGHT]", [N]レイアウト)
## プレゼンテーション作成方法
```python
from pptx import Presentation
prs = Presentation("path/to/skill/assets/template.pptx")
# 既存スライドをすべて削除
while len(prs.slides) > 0:
rId = prs.slides._sldIdLst[0].rId
prs.part.drop_rel(rId)
del prs.slides._sldIdLst[0]
# レイアウトからスライドを追加
slide = prs.slides.add_slide(prs.slide_layouts[LAYOUT_IDX])
```
## 主要なレイアウト
| インデックス | 名前 | 用途 |
|-------|------|---------|
| [0] | [レイアウト名] | [カバー/タイトルスライド] |
| [N] | [レイアウト名] | [箇条書き付きコンテンツ] |
| [N] | [レイアウト名] | [2カラムレイアウト] |
## プレースホルダーマッピング
**重要: 各プレースホルダーの正確な位置(x、y座標)を含めます。**
### レイアウト [N]: [名前]
| idx | タイプ | 位置 | 用途 |
|-----|------|----------|-----|
| [idx] | TITLE (1) | y=[Y]" | スライドタイトル |
| [idx] | BODY (2) | y=[Y]" | サブタイトル/説明 |
| [idx] | BODY (2) | y=[Y]" | フッター |
| [idx] | BODY (2) | y=[Y]" | ソース/注記 |
### コンテンツ領域の境界
**カスタム図形/表/グラフのための安全なコンテンツ領域をドキュメント化:**
```
コンテンツ領域 (レイアウト [N]用):
- 左マージン: [X]" (コンテンツがここから始まります)
- 上部: [Y]" (サブタイトルプレースホルダーの下)
- 幅: [W]"
- 高さ: [H]" (フッター前に終了)
4象限レイアウトの場合:
- 左列: x=[X]", 幅=[W]"
- 右列: x=[X]", 幅=[W]"
- 上行: y=[Y]", 高さ=[H]"
- 下行: y=[Y]", 高さ=[H]"
```
**なぜこれが重要か:** カスタムコンテンツ(テキストボックス、表、グラフ)は、タイトル、フッター、ソース行などのテンプレートプレースホルダーと重ならないようにこれらの境界内に留める必要があります。
## コンテンツを埋める
**手動で箇条書き文字を追加しないでください** - スライドマスターが書式を処理します。
```python
# タイトルを埋める
for shape in slide.shapes:
if hasattr(shape, 'placeholder_format'):
if shape.placeholder_format.type == 1: # TITLE
shape.text = "Slide Title"
# 階層構造でコンテンツを埋める (レベル0 = ヘッダー、レベル1 = 箇条書き)
for shape in slide.shapes:
if hasattr(shape, 'placeholder_format'):
idx = shape.placeholder_format.idx
if idx == [CONTENT_IDX]:
tf = shape.text_frame
for para in tf.paragraphs:
para.clear()
content = [
("Section Header", 0),
("First bullet point", 1),
("Second bullet point", 1),
]
tf.paragraphs[0].text = content[0][0]
tf.paragraphs[0].level = content[0][1]
for text, level in content[1:]:
p = tf.add_paragraph()
p.text = text
p.level = level
```
## 例: カバースライド
```python
slide = prs.slides.add_slide(prs.slide_layouts[[COVER_IDX]])
for shape in slide.shapes:
if hasattr(shape, 'placeholder_format'):
idx = shape.placeholder_format.idx
if idx == [TITLE_IDX]:
shape.text = "Company Name"
elif idx == [SUBTITLE_IDX]:
shape.text = "Presentation Title | Date"
```
## 例: コンテンツスライド
```python
slide = prs.slides.add_slide(prs.slide_layouts[[CONTENT_IDX]])
for shape in slide.shapes:
if hasattr(shape, 'placeholder_format'):
ph_type = shape.placeholder_format.type
idx = shape.placeholder_format.idx
if ph_type == 1:
shape.text = "Executive Summary"
elif idx == [BODY_IDX]:
tf = shape.text_frame
for para in tf.paragraphs:
para.clear()
content = [
("Key Findings", 0),
("Revenue grew 40% YoY to $50M", 1),
("Expanded to 3 new markets", 1),
("Recommendation", 0),
("Proceed with strategic initiative", 1),
]
tf.paragraphs[0].text = content[0][0]
tf.paragraphs[0].level = content[0][1]
for text, level in content[1:]:
p = tf.add_paragraph()
p.text = text
p.level = level
```
ステップ6: 出力例を作成
サンプルプレゼンテーションを生成して、スキルが機能することを検証します。参照用にスキルの隣に保存します。
生成されたスキルのPPT固有ルール
- assets/内のテンプレート - 常に.pptxファイルをバンドル
- 自己完結型のSKILL.md - すべての説明書が組み込まれ、外部参照なし
- 手動箇条書きなし - 階層構造に
paragraph.levelを使用 - スライドを最初に削除 - 新しいスライドを追加する前に常に既存スライドをクリア
- プレースホルダーをidxでドキュメント化 - プレースホルダーidx値はテンプレート固有です
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- anthropics
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/anthropics/financial-services-plugins / ライセンス: Apache-2.0
関連スキル
superfluid
Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper
civ-finish-quotes
実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。
nookplot
Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。
web3-polymarket
Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。
ethskills
Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。
xxyy-trade
このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。