返回 Skill 列表
extension
分类: 开发与工程无需 API Key

gamma-core-workflow-b

实现核心Gamma工作流程,用于演示文稿的编辑和导出。在修改现有演示文稿、导出为各种格式或管理演示文稿资源时使用。可以通过诸如“gamma edit presentation”、“gamma export”、“gamma PDF”、“gamma update slides”、“gamma modify”等短语触发。

person作者: jakexiaohubgithub

Gamma Core Workflow B: Editing and Export

Overview

Implement workflows for editing existing presentations and exporting to various formats.

Prerequisites

  • Completed gamma-core-workflow-a setup
  • Existing presentation to work with
  • Understanding of export formats

Instructions

Step 1: Retrieve and Edit Presentation

import { GammaClient } from '@gamma/sdk';

const gamma = new GammaClient({ apiKey: process.env.GAMMA_API_KEY });

async function editPresentation(presentationId: string) {
  // Retrieve existing presentation
  const presentation = await gamma.presentations.get(presentationId);

  // Update title and style
  const updated = await gamma.presentations.update(presentationId, {
    title: 'Updated: ' + presentation.title,
    style: 'modern',
  });

  return updated;
}

Step 2: Slide-Level Editing

async function editSlide(presentationId: string, slideIndex: number, content: object) {
  const presentation = await gamma.presentations.get(presentationId);

  // Update specific slide
  const updatedSlide = await gamma.slides.update(
    presentationId,
    slideIndex,
    {
      title: content.title,
      content: content.body,
      layout: content.layout || 'content',
    }
  );

  return updatedSlide;
}

async function addSlide(presentationId: string, position: number, content: object) {
  return gamma.slides.insert(presentationId, position, {
    title: content.title,
    content: content.body,
    generateImage: content.imagePrompt,
  });
}

async function deleteSlide(presentationId: string, slideIndex: number) {
  return gamma.slides.delete(presentationId, slideIndex);
}

Step 3: Export to Various Formats

type ExportFormat = 'pdf' | 'pptx' | 'png' | 'html';

async function exportPresentation(
  presentationId: string,
  format: ExportFormat,
  options: object = {}
) {
  const exportJob = await gamma.exports.create(presentationId, {
    format,
    quality: options.quality || 'high',
    includeNotes: options.includeNotes ?? true,
    ...options,
  });

  // Wait for export to complete
  const result = await gamma.exports.wait(exportJob.id, {
    timeout: 60000,
    pollInterval: 2000,
  });

  return result.downloadUrl;
}

// Usage examples
const pdfUrl = await exportPresentation('pres-123', 'pdf');
const pptxUrl = await exportPresentation('pres-123', 'pptx', { includeNotes: false });
const pngUrl = await exportPresentation('pres-123', 'png', { slideIndex: 0 }); // First slide only

Step 4: Asset Management

async function uploadAsset(presentationId: string, filePath: string) {
  const fileBuffer = await fs.readFile(filePath);

  const asset = await gamma.assets.upload(presentationId, {
    file: fileBuffer,
    filename: path.basename(filePath),
    type: 'image',
  });

  return asset.url;
}

async function listAssets(presentationId: string) {
  return gamma.assets.list(presentationId);
}

Output

  • Updated presentation with modifications
  • Exported files in various formats
  • Managed presentation assets
  • Download URLs for exports

Error Handling

| Error | Cause | Solution | |-------|-------|----------| | Export Timeout | Large presentation | Increase timeout or reduce slides | | Format Not Supported | Invalid export format | Check supported formats | | Asset Too Large | File exceeds limit | Compress or resize image | | Slide Not Found | Invalid index | Verify slide exists |

Resources

Next Steps

Proceed to gamma-common-errors for error handling patterns.