> ## Documentation Index
> Fetch the complete documentation index at: https://docs.poesius.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Two-Step Process

> Generate content first, then create slides separately for more control

## Overview

The two-step process gives you more control over the generation workflow:

1. **Step 1**: Generate presentation narrative and markdown content (McKinsey-style story with key findings and insights)
2. **Step 2**: Create actual PPTX slides from the content using template layouts

This approach is useful when you want to review or edit the narrative before creating slides. The narrative generation step automatically:

* Summarizes key findings from your content
* Reveals insights and patterns
* Structures the story in McKinsey consulting style

## Step 1: Generate Presentation Content

### Tool: `generate_presentation_content`

Generate presentation narrative and markdown content (Step 1 of 2). This tool creates a McKinsey-style story that summarizes key findings and reveals insights from your content.

### Parameters

| Parameter         | Type    | Required | Description             |
| ----------------- | ------- | -------- | ----------------------- |
| `topic`           | string  | Yes      | Main topic or title     |
| `instructions`    | string  | Yes      | Detailed instructions   |
| `document_base64` | string  | No       | Base64-encoded document |
| `num_slides`      | integer | No       | Target number of slides |
| `template_id`     | string  | No       | Template UUID           |

### Example Request

```json theme={null}
{
  "method": "tools/call",
  "params": {
    "name": "generate_presentation_content",
    "arguments": {
      "topic": "AI in Healthcare",
      "instructions": "Generate comprehensive content for 20 slides",
      "num_slides": 20,
      "document_base64": "<base64_document>"
    }
  }
}
```

### Response

```json theme={null}
{
  "content": "Generated markdown content...",
  "slides": [
    {
      "slide_number": 1,
      "title": "Introduction",
      "content": "Slide content..."
    }
  ],
  "presentation_id": "uuid",
  "slide_ids": ["uuid1", "uuid2"],
  "conversation_id": "uuid"
}
```

## Step 2: Create Slides from Content

### Tool: `slide_from_content`

Create actual PPTX slides from existing markdown content (Step 2 of 2). This tool:

* Retrieves layout details (colors, layout zones, typography) from your template
* Applies layouts based on content type
* Creates slides aligned to template specs and your narrative

### Parameters

| Parameter         | Type   | Required | Description                            |
| ----------------- | ------ | -------- | -------------------------------------- |
| `content`         | string | Yes      | Markdown content                       |
| `instructions`    | string | Yes      | Instructions for slide generation      |
| `template_id`     | string | No       | Template UUID (required if no default) |
| `layout_name`     | string | No       | Specific layout within template        |
| `conversation_id` | string | No       | Existing conversation UUID             |
| `presentation_id` | string | No       | Existing presentation UUID             |

### Example Request

```json theme={null}
{
  "method": "tools/call",
  "params": {
    "name": "slide_from_content",
    "arguments": {
      "content": "<markdown_content_from_step_1>",
      "instructions": "Create professional slides with consistent styling",
      "template_id": "123e4567-e89b-12d3-a456-426614174000",
      "presentation_id": "<presentation_id_from_step_1>"
    }
  }
}
```

### Response

```json theme={null}
{
  "slides": [
    {
      "slide_id": "uuid",
      "slide_number": 1,
      "layout": "Title Slide",
      "thumbnail_url": "https://...",
      "download_url": "https://..."
    }
  ],
  "presentation_id": "uuid",
  "total_slides": 20
}
```

## Complete Example

### Python Implementation

```python theme={null}
import requests
import base64

API_KEY = "pk_your_api_key_here"
BASE_URL = "https://poe.poesius.com/api/v1/mcp"

def read_document(file_path):
    with open(file_path, 'rb') as f:
        return base64.b64encode(f.read()).decode('utf-8')

def call_mcp_tool(tool_name, arguments):
    response = requests.post(
        f"{BASE_URL}/messages",
        headers={
            "X-API-Key": API_KEY,
            "Content-Type": "application/json"
        },
        json={
            "method": "tools/call",
            "params": {
                "name": tool_name,
                "arguments": arguments
            }
        }
    )
    return response.json()

# Step 1: Generate content
document_base64 = read_document("document.pdf")
content_result = call_mcp_tool("generate_presentation_content", {
    "topic": "AI in Healthcare",
    "instructions": "Generate comprehensive content for 20 slides",
    "num_slides": 20,
    "document_base64": document_base64
})

presentation_id = content_result["result"]["presentation_id"]
markdown_content = content_result["result"]["content"]

print("Content generated. Review and edit if needed.")
print(f"Content preview: {markdown_content[:200]}...")

# Step 2: Create slides from content
slide_result = call_mcp_tool("slide_from_content", {
    "content": markdown_content,
    "instructions": "Create professional slides with consistent styling",
    "template_id": "123e4567-e89b-12d3-a456-426614174000",
    "presentation_id": presentation_id
})

print(f"Created {len(slide_result['result']['slides'])} slides")
print(f"Presentation ID: {presentation_id}")
```

## When to Use Two-Step Process

### Use Two-Step When:

* You want to review/edit content before creating slides
* You need to modify the generated content
* You want to generate content once but create slides multiple times
* You're building a workflow with manual review steps

### Use One-Step (`generate_slides`) When:

* You want the fastest workflow
* You trust the AI-generated content
* You don't need to review content before slides
* You're automating the entire process

## Best Practices

* **Review Content**: Take time to review the generated markdown content
* **Edit if Needed**: You can edit the content before creating slides
* **Reuse Content**: Use the same content to create slides with different templates
* **Consistent IDs**: Use the same `presentation_id` and `conversation_id` across steps

<Card title="Generate Slides (One-Step)" icon="wand-magic" href="/mcp/generate-slides">
  Learn about the one-step generation process
</Card>

<Card title="Examples" icon="code" href="/examples/two-step-process">
  See complete two-step process examples
</Card>
