← Back to Plugins
Tools

Powerpost

tarekhoury By tarekhoury 👁 19 views ▲ 0 votes

OpenClaw plugin for PowerPost. Generate captions, images, and publish posts via AI.

GitHub

Install

npm install
npm

Configuration Example

{
  "plugins": {
    "entries": {
      "openclaw-powerpost": {
        "enabled": true,
        "config": {
          "apiKey": "YOUR_POWERPOST_API_KEY",
          "workspaces": {
            "main": {
              "id": "YOUR_WORKSPACE_UUID",
              "label": "My Workspace"
            }
          }
        }
      }
    },
    "allow": ["openclaw-powerpost"]
  }
}

README

# openclaw-powerpost

[![npm version](https://img.shields.io/npm/v/openclaw-powerpost)](https://www.npmjs.com/package/openclaw-powerpost)
[![license](https://img.shields.io/npm/l/openclaw-powerpost)](LICENSE)

[OpenClaw](https://github.com/openclaw/openclaw) plugin for [PowerPost](https://powerpost.ai). Generate captions, create AI images, and publish posts to social media platforms, all from your OpenClaw agent.

**Supported platforms:** Instagram · TikTok · YouTube · X (Twitter) · Facebook

## Installation

```bash
openclaw plugins install openclaw-powerpost
```

## Configuration

Add the plugin to your `openclaw.json`:

```json
{
  "plugins": {
    "entries": {
      "openclaw-powerpost": {
        "enabled": true,
        "config": {
          "apiKey": "YOUR_POWERPOST_API_KEY",
          "workspaces": {
            "main": {
              "id": "YOUR_WORKSPACE_UUID",
              "label": "My Workspace"
            }
          }
        }
      }
    },
    "allow": ["openclaw-powerpost"]
  }
}
```

| Key          | Required | Description                                    |
| ------------ | -------- | ---------------------------------------------- |
| `apiKey`     | Yes      | PowerPost API key                              |
| `workspaces` | Yes      | Map of workspace name → `{ id, label? }`       |
| `baseUrl`    | No       | API base URL (default: `https://powerpost.ai`) |

### Getting Your API Key

1. Log in to [PowerPost](https://powerpost.ai)
2. Go to **Settings** → **API Keys**
3. Create a new key and copy it into your config

### Getting Your Workspace ID

1. Go to **Settings** → **Workspaces** in PowerPost
2. Copy the workspace UUID

### Multiple Workspaces

You can configure as many workspaces as you need. The agent will ask which one to use when you start a task.

```json
"workspaces": {
  "personal": { "id": "uuid-1", "label": "Personal Brand" },
  "client":   { "id": "uuid-2", "label": "Client Account" }
}
```

## Usage

Once installed, talk to your OpenClaw agent naturally:

- _"Create an Instagram post about our new product launch"_
- _"Generate captions for all platforms from this photo"_
- _"Make me 4 square images for a fitness post"_
- _"How many credits do I have left?"_
- _"Publish the draft we just created"_

The plugin ships with a bundled skill (`skills/powerpost/SKILL.md`) that teaches the agent the full workflow: generate captions, review with you, optionally generate images, assemble a draft, and publish with your confirmation.

### Typical Workflow

```
1. powerpost_upload_media          → upload photos/video (optional)
2. powerpost_generate_captions     → generate captions for target platforms
3. (review & edit captions with the user)
4. powerpost_generate_images       → create AI images (optional)
5. powerpost_create_post           → assemble the draft
6. powerpost_publish_post          → publish (after user confirmation)
```

## Tools

| Tool                                                          | Description                                         |
| ------------------------------------------------------------- | --------------------------------------------------- |
| [`powerpost_list_workspaces`](#powerpost_list_workspaces)     | List configured workspaces                          |
| [`powerpost_generate_captions`](#powerpost_generate_captions) | Generate captions from text, images, or video       |
| [`powerpost_generate_images`](#powerpost_generate_images)     | Generate AI images from prompts or reference images |
| [`powerpost_upload_media`](#powerpost_upload_media)           | Upload a local image or video file                  |
| [`powerpost_create_post`](#powerpost_create_post)             | Create a draft post with one or more platform items |
| [`powerpost_publish_post`](#powerpost_publish_post)           | Publish a draft to social platforms                 |
| [`powerpost_check_credits`](#powerpost_check_credits)         | Check account credit balance                        |

---

### `powerpost_list_workspaces`

List all configured workspaces. Call this first to discover available workspace names.

---

### `powerpost_generate_captions`

Generate social media captions from a text prompt, uploaded images, or video.

| Parameter       | Type       | Required | Description                                                      |
| --------------- | ---------- | -------- | ---------------------------------------------------------------- |
| `workspace`     | `string`   | Yes      | Workspace name from `powerpost_list_workspaces`                  |
| `prompt`        | `string`   | \*       | Text prompt. Required if no `media_ids`                          |
| `media_ids`     | `string[]` | \*       | Media IDs from `powerpost_upload_media`. Required if no `prompt` |
| `post_types`    | `string[]` | Yes      | Target post types (e.g. `instagram-feed`, `x-post`)              |
| `research_mode` | `string`   | No       | `regular` (default) or `deep`                                    |
| `tone`          | `string`   | No       | Tone of voice (e.g. `Professional`, `Casual`, `Witty`)           |

---

### `powerpost_generate_images`

Generate AI images from a prompt, reference images, or a previous caption generation.

| Parameter          | Type       | Required | Description                                                     |
| ------------------ | ---------- | -------- | --------------------------------------------------------------- |
| `workspace`        | `string`   | Yes      | Workspace name                                                  |
| `prompt`           | `string`   | No       | Text prompt                                                     |
| `size`             | `string`   | No       | `square`, `feed`, `portrait`, or `landscape`. Default: `square` |
| `quantity`         | `number`   | No       | Number of images to generate. Default: `1`                      |
| `style_images`     | `string[]` | No       | Media IDs of reference images for style matching                |
| `generation_id`    | `string`   | No       | Caption generation ID to use as context                         |
| `source_post_type` | `string`   | No       | Post type to pull caption from when using `generation_id`       |

---

### `powerpost_upload_media`

Upload a local image or video file to PowerPost. Returns a `media_id` for use with other tools.

| Parameter   | Type     | Required | Description               |
| ----------- | -------- | -------- | ------------------------- |
| `workspace` | `string` | Yes      | Workspace name            |
| `file_path` | `string` | Yes      | Absolute path to the file |
| `type`      | `string` | Yes      | `image` or `video`        |

---

### `powerpost_create_post`

Create a draft post with one or more platform items.

| Parameter       | Type     | Required | Description                                         |
| --------------- | -------- | -------- | --------------------------------------------------- |
| `workspace`     | `string` | Yes      | Workspace name                                      |
| `generation_id` | `string` | No       | Caption generation ID to auto-populate content from |
| `items`         | `array`  | Yes      | Post items, one per platform/format combo           |

Each item in `items`:

| Field       | Type       | Required | Description                                            |
| ----------- | ---------- | -------- | ------------------------------------------------------ |
| `post_type` | `string`   | Yes      | Platform and format (e.g. `instagram-feed`)            |
| `content`   | `string`   | No       | Caption text (optional if `generation_id` provides it) |
| `title`     | `string`   | No       | Title (required for YouTube post types)                |
| `media_ids` | `string[]` | No       | Media IDs to attach                                    |

---

### `powerpost_publish_post`

Publish a draft post to its configured social platforms. **This is irreversible.** Always confirm with the user before calling.

| Parameter   | Type     | Required | Description                          |
| ----------- | -------- | -------- | ------------------------------------ |
| `workspace` | `string` | Yes      | Workspace name                       |
| `post_id`   | `string` | Yes      | Post ID from `powerpost_create_post` |

Returns per-item results showing which platforms succeeded or failed.

---

### `powerpost_check_credits`

Check the account's remaining credit balance. Only called when the user explicitly asks.

| Parameter   | Type     | Required | Description    |
| ----------- | -------- | -------- | -------------- |
| `workspace` | `string` | Yes      | Workspace name |

## Post Types

| Platform  | Post Types                                            |
| --------- | ----------------------------------------------------- |
| Instagram | `instagram-feed`, `instagram-reel`, `instagram-story` |
| TikTok    | `tiktok-video`, `tiktok-photos`                       |
| YouTube   | `youtube-video`, `youtube-short`                      |
| X         | `x-post`                                              |
| Facebook  | `facebook-post`, `facebook-reel`, `facebook-story`    |

## Credits

PowerPost operations consume credits. See [PowerPost pricing](https://powerpost.ai/pricing) for current credit costs.

## Development

```bash
git clone https://github.com/PowerPost/openclaw-powerpost.git
cd openclaw-powerpost
npm install
npm run build          # compile TypeScript → dist/
npm run typecheck      # type-check without emitting
```

To test locally with OpenClaw, link the plugin:

```bash
openclaw plugins install -l .
```

## Requirements

- [OpenClaw](https://github.com/openclaw/openclaw) with plugin support
- A [PowerPost](https://powerpost.ai) account with an API key

## Contributing

Contributions are welcome! Please open an issue or submit a pull request.

## License

[MIT](LICENSE)
tools

Comments

Sign in to leave a comment

Loading comments...