

Airtableから自動プレゼンテーション生成ワークフローガイド(2026年版)
Airtableは数千のチームにとって信頼できる情報源データベースです — CRMパイプライン、プロジェクトトラッカー、コンテンツカレンダー、投資家CRM、在庫システムなど。2026年版のAirtableからプレゼンテーション生成パイプラインは、任意のAirtableビューを1分以内に完成したPowerPointデッキに変換します。2つのアプローチがあります:(1) AirtableオートメーションとMake/Zapier、そして2Slides APIを使用したノーコード方式。レコード単位やビュー単位のデッキ生成に最適(週次クライアントレビュー、月次投資家報告など)。(2) 2Slides V1 APIを使用したカスタムAirtable Extension。Airtable内部からのオンデマンドデッキ生成に最適。本ガイドでは、実際に動作するコード、正確な2Slides APIペイロード、そして4つの実用的なAirtable駆動型デッキパターン(営業パイプラインレビュー、コンテンツカレンダー月次レポート、プロジェクトトラッカーQBR、投資家CRM更新)を紹介します。これらはあなた自身のベースに適応可能です。各パターンには、正確なフィールドマッピング、プロンプト構築ロジック、ポーリング戦略が含まれており、あなたのワークスペースにペーストするだけで、その日の午後には本番環境対応の統合を実現できます。
2026年のAirtableからデッキへのアーキテクチャ
ほとんどのAirtableベースには、すでにデッキの80%が含まれています。数値、名前、日付、ステータスフラグなど。欠けているのはナラティブレイヤー、つまり見出し、フレーミング、「これがビジネスにとって何を意味するか」です。これこそが大規模言語モデルのデッキジェネレーターが埋めるギャップです。
2026年のアーキテクチャは3つの関心事を分離します:
- データレイヤー(Airtable) — レコード、ビュー、フィルター、ロールアップ。これが信頼できる唯一の情報源が存在する場所です。デッキ生成ワークフローでは、データを他の場所に複製する必要は一切ありません。
- オーケストレーションレイヤー(Airtable Automations、Zapier、Make、またはカスタムExtension) — トリガー(ボタンの押下、ステータス変更、スケジュールされたcron)をリッスンし、関連するレコードをクエリし、プロンプトにフォーマットし、2Slides APIを呼び出す接着剤。
- 生成レイヤー(2Slides V1 API) — エンドポイントは、プロンプトとオプションのテーマおよびページ数パラメータを受け入れ、AIが生成したナラティブ、構造化されたチャート、スピーカーノート、オプションのナレーション音声を含むPowerPointファイルを非同期に生成します。
/api/v1/slides/generate
オーケストレーションレイヤーは、実装の選択が重要になる場所です。コードなしを希望するチームは、Airtable Automations + Zapier webhooksに頼ります。Airtable内に「デッキを生成」ボタンが欲しいチームは、カスタムExtensionを構築します。どちらのパスも同じAPIコントラクトに収束するため、ノーコードパスでプロトタイプを作成し、後でExtensionパスに堅牢化できます。
方法1: ノーコード (Airtable Automations + Zapier + 2Slides)
ノーコードの方法は、最も早く本番環境に導入できる方法で、通常1時間以内に完成します。トリガーがレコードベースの場合(新規案件が「提案」ステージに入る、プロジェクトが「QBR準備完了」とマークされる、キャンペーンが月末を迎えるなど)に最適な選択肢です。
ステップ1: Airtableベースを準備する
プレゼンテーションを生成したいテーブルに、以下の3つのフィールドを追加します:
- (単一選択: Queued, Generating, Ready, Failed)
Deck Status - (URL)
Deck URL - (1行テキスト)
Deck Job ID
これらのフィールドにより、オートメーションが進捗状況をレコードに書き戻すことができ、ユーザーはトリガーを実行したのと同じ行にデッキが表示されるのを確認できます。
ステップ2: Airtable Automationを構築する
新しいオートメーションを作成し、トリガーを**「レコードが条件に一致したとき」に設定します。例: Deck Status が Queued。「スクリプトを実行」**アクションを追加して、レコードをプロンプトにフォーマットします:
const inputConfig = input.config(); const record = inputConfig.record; const prompt = `Create a 10-slide account review deck for ${record.accountName}. Pipeline value: $${record.pipelineValue.toLocaleString()}. Current stage: ${record.stage}. Last touchpoint: ${record.lastTouchpoint}. Open risks: ${record.risks}. Recommended next action: ${record.nextAction}. Structure: title, executive summary, relationship history, pipeline status, risks and blockers, opportunity sizing, recommended next steps, appendix.`; output.set('prompt', prompt); output.set('recordId', record.id);
ステップ3: Zapier(またはMake)にWebhookを送信する
**「Webhookを送信」**アクションを追加して、Zapierのキャッチフックに POST します。Zapierの2番目のステップで2Slides APIを呼び出します:
POST https://2slides.com/api/v1/slides/generate Headers: Authorization: Bearer {{YOUR_2SLIDES_API_KEY}} Content-Type: application/json Body: { "prompt": "{{prompt from Airtable}}", "pages": 10, "theme": "corporate-navy", "language": "en", "webhook": "https://hooks.zapier.com/hooks/catch/XXXXX/airtable-deck-ready" }
レスポンスには
jobIdDeck Statusステップ4: 完了Webhookを処理する
2Slidesは、ジョブが完了すると、指定したWebhook URLを呼び出します。そのZapは
downloadUrlDeck URLDeck Status = ReadyWebhookを使用したくない場合は、スケジュールトリガーで起動する2番目のZapから、5秒ごとに
/api/v1/jobs/:id方法2: カスタムAirtable Extension
Airtable UIに直接埋め込まれた「デッキ生成」ボタンが必要な場合 — 外部Zapなし、Webhookルーティングなし — カスタムExtensionが適切な選択です。Airtable ExtensionはReactアプリケーションで、ベース内でレンダリングされ、
fetch以下は、選択されたレコードを読み取り、
/api/v1/slides/generate/api/v1/jobs/:idimport { initializeBlock, useBase, useCursor, useRecordById, Button, Text, Box, useGlobalConfig, } from '@airtable/blocks/ui'; import React, { useState } from 'react'; function DeckGenerator() { const base = useBase(); const cursor = useCursor(); const globalConfig = useGlobalConfig(); const apiKey = globalConfig.get('TWO_SLIDES_API_KEY'); const table = base.getTableByIdIfExists(cursor.activeTableId); const record = useRecordById(table, cursor.selectedRecordIds[0] || ''); const [status, setStatus] = useState('idle'); const [deckUrl, setDeckUrl] = useState(null); async function generateDeck() { if (!record) return; setStatus('submitting'); const prompt = buildPrompt(record); const res = await fetch('https://2slides.com/api/v1/slides/generate', { method: 'POST', headers: { 'Authorization': `Bearer ${apiKey}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ prompt, pages: 10, theme: 'corporate-navy' }), }); const { jobId } = await res.json(); setStatus('generating'); pollJob(jobId); } async function pollJob(jobId) { const interval = setInterval(async () => { const res = await fetch(`https://2slides.com/api/v1/jobs/${jobId}`, { headers: { 'Authorization': `Bearer ${apiKey}` }, }); const job = await res.json(); if (job.status === 'success') { clearInterval(interval); setDeckUrl(job.downloadUrl); setStatus('ready'); await table.updateRecordAsync(record, { 'Deck URL': { url: job.downloadUrl }, 'Deck Status': { name: 'Ready' }, }); } else if (job.status === 'failed') { clearInterval(interval); setStatus('failed'); } }, 5000); } return ( <Box padding={3}> <Button onClick={generateDeck} disabled={status === 'generating'}> {status === 'generating' ? '生成中…' : 'デッキを生成'} </Button> {deckUrl && <Text>デッキの準備完了: <a href={deckUrl}>ダウンロード</a></Text>} </Box> ); } function buildPrompt(record) { return `${record.getCellValueAsString('Account')}向けの10スライドデッキを作成してください。 パイプライン: ${record.getCellValueAsString('Pipeline Value')}。 ステージ: ${record.getCellValueAsString('Stage')}。 備考: ${record.getCellValueAsString('Notes')}。`; } initializeBlock(() => <DeckGenerator />);
これにより、任意のAirtableビュー内にワンクリックの「デッキを生成」ボタンが提供されます。Extensionパターンは、
globalConfigAirtable データ用の 2Slides API ペイロード
/api/v1/slides/generatepromptpagesthemelanguage{ "prompt": "Acme Corp. の第4四半期パイプラインレビューを12スライドで作成。パイプライン価値: 7件の進行中案件で $420,000。トップアカウント: Globex ($180,000、提案段階)。リスク: Initech ($60,000、28日間停滞)。構成: タイトル、エグゼクティブサマリー、パイプライン概要チャート、アカウント別詳細、リスク、予測、推奨される次のアクション、付録。", "pages": 12, "theme": "corporate-navy", "language": "en", "aspectRatio": "16:9", "tone": "executive", "includeSpeakerNotes": true, "webhook": "https://your-app.com/webhooks/deck-ready" }
レスポンス:
{ "jobId": "tl_a1b2c3d4e5", "status": "pending" }
Webhook を使用せずに進捗を確認するには、
GET /api/v1/jobs/:idsuccessdownloadUrl.pptxpdfUrlpagesAirtable ワークフローで知っておくべき関連 V1 エンドポイント:
- — プロンプトからデッキを生成する主要エンドポイント。
POST /api/v1/slides/generate - — ソース PDF(例: Airtable にアップロードされた添付ファイル)を受け取り、それを要約したデッキを生成します。
POST /api/v1/slides/create-pdf-slides - — 既存のデッキから構造を複製。毎週のクライアントレビューをテンプレートに合わせたい場合に便利です。
POST /api/v1/slides/create-like-this - — 各スライドのナレーション音声を生成。Loom スタイルの非同期更新用に動画エクスポートパイプラインと組み合わせて使用します。
POST /api/v1/slides/generate-narration - — すべてのページ画像と音声ファイルを ZIP として一括取得。Airtable の添付ファイルフィールドに便利です。
GET /api/v1/slides/download-slides-pages-voices/:jobId - — ジョブステータスのポーリングエンドポイント。
GET /api/v1/jobs/:id - — 検索可能なテーマディレクトリ。Airtable ユーザーがリンクされたレコードフィールドからテーマを選択できるようにします。
GET /api/v1/themes/search?q=corporate
4 つの実践的な Airtable 連携デッキパターン
パターン 1: 営業パイプラインレビュー
ベース構造:
DealsAccountStageARROwnerLast ContactRisksNext Stepトリガー: 毎週金曜日午前 8:00 にスケジュール実行。
Stageプロンプト構築: 該当するすべてのレコードを単一のプロンプトに集約し、ステージ別の合計、ARR 上位 5 件のリスト、14 日以上未対応の案件をフラグ付けリストとして含める。
pages: 12theme: corporate-navytone: executive成果物: 毎週月曜日の朝、営業リーダーが Airtable を開くと、「Pipeline Review — Week of {date}」というタイトルのデッキが、同期された「Weekly Reviews」テーブルに既に添付されている。手動でのスライドコピー&ペーストは不要。
パターン 2: コンテンツカレンダー月次レポート
ベース構造:
ContentTitlePublish DateChannelViewsEngagement RateAuthorトリガー: 毎月 1 日に、過去 30 日間のレコードに対して自動実行。
プロンプト構築: エンゲージメント順にランク付け、前月比の変化を計算、チャネル別にグループ化。モデルに対して以下の構成で 10 スライドのデッキを依頼:要約、トップパフォーマー、低調なコンテンツ、チャネルミックス、著者ランキング、推奨事項。
pages: 10theme: editorialincludeSpeakerNotes: true成果物: コンテンツ担当者は PowerPoint を触ることなく、月次レビュー会議で使えるデッキを入手。
パターン 3: プロジェクトトラッカー QBR
ベース構造:
ProjectsClientStatusCompletion %MilestonesBlockersHours UsedHours Budgetedトリガー: Airtable Extension 内の手動ボタン、1 クライアントずつスコープを限定。
プロンプト構築: 過去四半期のクライアント向けプロジェクトをすべて取得、完了ステータス別に要約、ブロッカーを抽出、工数使用率を計算。デッキの構成:タイトル、四半期の概要、プロジェクト別の振り返り、ブロッカー + リスク、次四半期の予測、推奨されるスコープ調整。
pages: 14theme: consulting-slate成果物: プロジェクトマネージャーがクライアントのレコードを開き、「Generate QBR Deck」をクリックすると、1 分以内に 14 スライドの成果物が完成。レビュー後、必要に応じて PowerPoint で編集し、送付。
パターン 4: 投資家 CRM 更新
ベース構造:
InvestorsFundStage InterestLast MeetingNotesIntro Viaトリガー:
Statusプロンプト構築: その投資家の表明されたステージへの関心に合わせた会社アップデートデッキを構築。リンクされた
KPIspages: 15theme: startup-moderncreate-like-this成果物: すべての投資家フォローアップに対して、創業者がマスターテンプレートから再構築することなく、パーソナライズされたブランド統一デッキを提供。
よくある質問
Airtableのアタッチメント(PDF、デッキ)を2Slides APIに渡すにはどうすればいいですか?
Airtableはアタッチメントをレコードペイロード内のURLとして公開します。PDFを入力する場合は、
POST /api/v1/slides/create-pdf-slidessourcePdfUrlcreate-like-thisjobIdgenerateAirtableのロールアップや数式フィールドをプロンプトで使用できますか?
はい、使用できますし、使用すべきです。ロールアップ(総ARR、平均取引規模、リスクのあるプロジェクト数)は、デッキを有用にする要約数値を正確に生成します。Automationスクリプト内で他のフィールドと同じ方法で参照します —
record.getCellValueAsString('Total ARR')2Slidesのジョブが失敗した場合はどうなりますか?
失敗したジョブは
/api/v1/jobs/:idstatus: "failed"errorDeck Status = Failed2Slides APIキーをAirtableスクリプトから隠すにはどうすればいいですか?
Automationsスクリプトの場合は、単一レコードの設定テーブルにキーを保存して動的に読み取るか、Zapier/Makeの環境シークレットを参照する入力変数として渡します。Extensionsの場合は、一度限りの管理者セットアップ画面を介して
globalConfig.setAsync('TWO_SLIDES_API_KEY', value)複数のチームメンバーが1つのAPIキーをレート制限に引っかからずに共有できますか?
はい。2Slidesのレート制限は、Teamプランのキーでかなり余裕があります(通常、60リクエスト/分、500/時間)。これは10〜20人のアクティブなAirtableユーザーがデッキをトリガーする場合に快適に対応します。より高ボリュームのプログラマティックワークフロー — たとえば、2,000人の顧客に対して毎晩顧客ごとにデッキを生成する — の場合は、バッチに分割して呼び出しをずらすか、より高い制限を持つEnterpriseキーをリクエストしてください。
まとめ
Airtableは、構造化されたリレーショナルなチーム共有データの保存に優れています。PowerPointは、人間に対するナラティブの伝達に優れています。その間にあるギャップ――「これをデッキにする」というギャップ――は、営業リーダー、コンテンツマーケター、PM、創業者にとって、毎週何時間もの時間を消費していました。2026年、そのギャップは単一のwebhookまたは単一のボタンで解消されます。
このガイドの2つの方法は、全範囲をカバーしています。ノーコードパスは、インフラストラクチャなしで午後のうちに本番環境に到達でき、Extensionパスは、Airtable内部に存在するネイティブな感覚の「デッキを生成」ボタンをチームに提供します。どちらも同じ
/api/v1/slides/generate任意のAirtableビューをPowerPointに変換――2Slides APIキーを取得して、1時間以内にAirtable automationsに接続しましょう。
About 2Slides
Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.
Try For Free