← Plugin catalog
Business & Operations

Simplified for AI

Simplified v2.1.0

Plan, create, schedule posts

Create a free account to save this plugin.

From the developer

Declared capabilities

  • Interactive
  • Write

Not specified in the available declarations: limitations, pricing & account requirements.

Onboarding example

Plan a month of content for my connected channels.
Sources & dates

Developer declarations; not independently tested. Listing last checked Nov 10, 2026. Package observed Nov 10, 2026.

View package source →

Description

From the marketplace listing

Plan, create, and schedule social media posts across 13 platforms, with on-brand images and video, from one conversation. Simplified for AI helps marketers, agencies, and small businesses plan content calendars and campaigns, draft and schedule posts, and turn analytics into next steps. It also manages brand kits, marketing projects, and client review bundles, all through the hosted Simplified connector. Requires a Simplified account. Posts are drafted for your review and only scheduled or published after you confirm, and image and video generation uses your workspace credits.

Language: English · Automatically detected from descriptions.

Matches for “creation”

Exact text from the indicated source. A mention alone does not establish support for your task.

Publisher keywords · listing

ai-social-media-management ai-content-creation social-media-scheduling social-media-analytics content-calendar image-generation social-media content-creation scheduling analytics video-generation brand-management brand-kit marketing-automation marketing-workflows project-management todos simplified

Publisher description

AI social media management, on-brand content creation, scheduling, analytics, and marketing workflows with Simplified.

What changed

· 16 observations

Capabilities & instructions

Skill instructions changed from “Workflow 1. Resolve the reporting period. Use the previous complete calendar month for "last month" and the last 30 completed days ending today for an...” to “Workspace and handoff Before connected operations, use `simplified-workspace` when the client/workspace/teamspace is named or...

View comparison →
Capabilities & instructions

Skill instructions changed from “any `schedule` or `add_to_queue` call, show the final posts, accounts, dates, media, and platform settings and obtain explicit confirmation. - Stop on `401`...” to “`schedule` or `add_to_queue`, verify that explicit authorization covers the final posts, accounts, dates, media,...

View comparison →
Capabilities & instructions

Full description changed from “Manage your entire social media from Codex with Simplified — post, schedule, queue, draft, and analyze across Facebook, Instagram, TikTok, YouTube, LinkedIn,...” to “Create, retrieve, revise, schedule, or queue Simplified social posts and drafts; manage auto-comments and review...

View comparison →
Capabilities & instructions

Full description changed from “marketing work in Simplified projects and project items. Use when the user asks to create or inspect a marketing project, campaign workspace, content...” to “creative marketing projects and their deliverable items in Simplified, including collections, ordering, asset handoffs,...

View comparison →
Capabilities & instructions

Supporting files updated; open the comparison for details. Skill instructions changed from “Confirm before deleting a context document. Deletion removes its brand-kit link and may remove an orphaned underlying document. - Predefined context types...” to “Delete a context document only within the user’s authorized...

View comparison →
Capabilities & instructions

Supporting files updated; open the comparison for details. Skill instructions changed from “- Verify business name, locations or service area, hours, availability, prices, offer terms, event dates, phone/booking destination, and required disclaimers...” to “Existing explicit authorization for unchanged content,...

View comparison →
Capabilities & instructions

Full description changed from “Generate AI videos with Simplified from text, reference images, first and last frames, multiple images, or source video. Use when the user asks to create an...” to “Use when the user asks Simplified to generate an AI video, animate an image, create a product teaser, guide motion with...

View comparison →
Pricing references

Full description changed from “Generate AI images with Simplified — text-to-image, image editing, and reference-guided generation across Flux, Google (Gemini/Imagen), OpenAI GPT Image,...” to “Create images or broad prompt/reference-guided transformations with Simplified. Use for new photos, graphics, illustrations,...

View comparison →
Capabilities & instructions

Supporting files updated; open the comparison for details. Skill instructions changed from “- Do not label time-sensitive offers, statistics, platform features, event dates, seasonal advice, or changing regulations as evergreen. - Treat brand...” to “Existing explicit authorization for unchanged content, accounts,...

View comparison →
Capabilities & instructions

Skill instructions changed from “- Do not publish or schedule without explicit approval of the final campaign matrix. - Create safe previews with `action: "draft"` when the user asks to...” to “Existing explicit authorization for unchanged content, accounts, timing, media, and comments is sufficient; ask only when...

View comparison →
Capabilities & instructions

Supporting files updated; open the comparison for details. Skill instructions changed from “- Do not claim statistical significance from ordinary organic social comparisons, small samples, unequal delivery, or platform-reported totals without a...” to “Existing explicit authorization for unchanged content, accounts,...

View comparison →
Capabilities & instructions

Full description changed from “Transform one source asset into multiple channel-native social posts and a reusable content sequence. Use when the user asks to repurpose a blog post, video,...” to “Adapt source material into channel-specific written posts and content sequences with Simplified. Use for captions,...

View comparison →
Capabilities & instructions

Skill instructions changed from ““All” means all drafts in the resolved client scope, never all drafts across other client teamspaces. 4. Present a review manifest with client/teamspace,...” to “This covers drafts discoverable for connected accounts in the resolved client scope. Accountless drafts can exist, but the...

View comparison →
Capabilities & instructions

Plugin name changed from “Simplified” to “Simplified for AI”. App-6a1ea93307208191b5fe82494caf73a8 updated; open the comparison for details. Simplified updated; open the comparison for details. Full description changed from “Simplified brings your marketing workspace into ChatGPT. Generate AI images and video,...

View comparison →
Capabilities & instructions

Plugin name changed from “Simplified” to “Simplified for AI”. App-6a1ea93307208191b5fe82494caf73a8 updated; open the comparison for details. Simplified updated; open the comparison for details. Full description changed from “Simplified brings your marketing workspace into ChatGPT. Generate AI images and video,...

View comparison →

Technical updates · 1

Package or technical metadata updated

View technical comparison →

Keywords

Files & skills

File archives

Plugin package71 files · 153 KBBrowse files →
Skill instructions
campaign-review6.24 KB

View saved version →

---
name: campaign-review
description: Prepare Simplified social drafts for client, stakeholder, or team review and manage approval-ready revisions. Use when the user asks to package selected or all drafts for approval, create and present a social review link or review bundle, collect a campaign for client review, inspect draft status, revise selected drafts, or prepare approved content for a later publishing step.
---

# Campaign Review

Turn a group of social drafts into a clear approval package without publishing them.

## Guardrails

- A review bundle is not publishing authorization. Never schedule or queue posts from approval language alone.
- Create a shareable review bundle when the user explicitly asks to package or send drafts for review. Otherwise preview the proposed bundle first.
- For agencies or multi-client work, create one review bundle per client and
  campaign. Never combine drafts from different clients, workspaces, or teamspaces
  in the same bundle.
- Modify only drafts the user selected or changes they approved.
- Do not expose internal IDs as the primary presentation; use names, channels, dates, and short copy previews.
- Present returned review URLs as clickable links, never embedded content.
- Stop on `401` or when Simplified is not connected.

## Workflow

1. Establish the client, campaign or review scope, reviewer, desired deadline, and
   which drafts should be included. Infer scope from the active campaign only when
   unambiguous.
2. For a named client workspace or teamspace, hand off first to
   `$simplified-workspace`: call `api_getWorkspaceInfo`, resolve the exact numeric
   teamspace ID with `api_listTeamspaces` when needed, state the selected client
   context, and pass the same `space_id` on every downstream account, draft,
   update, and review-bundle call. Re-resolve context when switching clients.
3. If exact draft IDs are already known, reuse them only after verifying they belong
   to the selected client scope. Otherwise call `social_getSocialMediaAccounts`,
   select the relevant account IDs, then call `social_getSocialMediaDrafts` with
   those IDs as the required comma-separated `account_ids` string. If that
   multi-account lookup returns no rows when drafts are expected, use the read-only
   per-account fallback: query each selected account separately, merge the results,
   and deduplicate by exact draft ID. Never create replacement drafts, invent draft
   IDs, assume that every draft belongs in the bundle, or reuse IDs from another
   client scope.
   - If the user explicitly asks for **all drafts**, select every connected account
     in the resolved client scope. Retrieve every draft page for those accounts,
     using `per_page: 100` and incrementing `page` until the response is exhausted.
     Apply the per-account fallback when needed, merge the results, and deduplicate
     by exact draft ID. This covers drafts discoverable for connected accounts in the resolved client
     scope. Accountless drafts can exist, but the current listing requires account
     IDs and does not establish coverage of accountless drafts. Disclose this
     limitation rather than claiming complete workspace coverage; include separately
     supplied draft IDs only after scoped verification.
4. Present a review manifest with client/teamspace, draft, channel/account, copy
   preview, media status, planned timing, and issues requiring attention. If the
   user did not identify the drafts, let them choose from this manifest before
   creating the bundle.
5. Apply requested supported changes with `social_updateSocialMediaDraft`: its
   current schema accepts `draft_id`, `message`, `media`, `tags`, `date`, `time`,
   and `timezone`. Carry the selected `space_id`. Account reassignment and platform
   `additional` settings are not exposed by this update operation. Explain that
   limitation; create a replacement draft only when explicitly requested, retaining
   the original unless its removal is separately 

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 3 — file references are metadata, not package contents.

content-repurposer5.44 KB

View saved version →

---
name: content-repurposer
description: Adapt source material into channel-specific written posts and content sequences with Simplified. Use for captions, summaries, carousels, and clip concepts from articles, transcripts, interviews, webinars, or podcasts. For rendered video clips or source-time excerpts, use repurpose-video; for transcripts/subtitles, use transcribe-media.
---

# Content Repurposer

For rendered video highlights, Reels, Shorts, or source-time excerpts, use `repurpose-video`; this skill handles source-grounded channel copy. Use `transcribe-media` first when a recording needs an actual transcript or subtitle export. Never call written clip concepts completed video files.

Extract the strongest ideas from supplied source material and reshape them for the intended channels without inventing facts.

## Guardrails

- Treat the source as authoritative. Preserve names, numbers, claims, qualifications, links, and offer terms.
- Clearly label any interpretation that is not directly supported by the source.
- Return copy in conversation unless the user asks to save drafts.
- Create remote content with `action: "draft"`; require explicit approval before scheduling or queueing.
- Pause affected connected operations on authorization failure. Continue source-grounded copy or requested accountless drafts without connected accounts; omit `account_ids`. Publishing and account analytics require suitable connected accounts.
- Use a native media preview when the client supports it and the user wants to review the result. Otherwise show a usable link. Refresh expired asset URLs; do not download remote media merely to bypass client display restrictions. Review bundles and other web pages remain links.

## Workspace and handoff

Before connected operations, use `simplified-workspace` when the client/workspace/teamspace is named or uncertain. Resolve the exact numeric teamspace and carry its `space_id` on every related account, analytics, asset, generation, draft, tag, review, and continuation call. Re-list scoped resources after switching clients; stop on access failures rather than falling back to another space. Pass the resolved context to every delegated skill.

## Workflow

1. Read the complete source material available to the user. If only a link is provided, retrieve it with an available browsing or connector tool before writing; do not guess its contents. If retrieval, transcription, or attachment access is unavailable, state which material was actually read and request the missing text/transcript; do not imply a complete review.
2. Build a source ledger: central thesis, useful facts, proof points, quotes that may be paraphrased, stories, objections, CTA, and prohibited or unsupported claims.
3. Identify reusable angles such as insight, checklist, contrarian point, customer proof, behind-the-scenes detail, FAQ, short tip, and offer.
4. Select an output sequence that matches the source depth. Prefer fewer distinct posts over padded variations.
5. Adapt each post to the channel's audience behavior, length, hook, CTA, and media format. Do not merely shorten the same caption.
6. Call `social_getSocialMediaAccounts` once when the user wants connected-channel drafts.
7. Show the proposed set with its source angle and intended channel. If asked to save it, call `social_createSocialMediaPost` with `action: "draft"` and the required settings from `../simplified-social/references/platform-settings.md`.
8. If new supporting visuals are explicitly requested, use `$generate-image` with `storage: "asset"` and pass each returned `asset_id` into social `media`.
   If the user supplies a local visual, follow `$simplified-social` through
   signed upload and `api_registerAsset`, then reuse the returned UUID.
9. Obtain explicit approval of the concrete final posts, accounts, timing, media, and settings before scheduling or queueing; preserve existing approval if that matrix is unchanged.

## Transformation Patterns

- Long-form article: insi

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 3 — file references are metadata, not package contents.

creative-testing5.81 KB

View saved version →

---
name: creative-testing
description: Design, produce, and evaluate disciplined social creative tests for marketers. Use when the user asks for A/B tests, hook tests, creative variants, message experiments, format tests, offer or CTA tests, an experimentation roadmap, ways to improve a campaign systematically, or draft variants whose results can produce a reusable marketing learning.
---

# Creative Testing

Create tests that isolate a meaningful decision and produce learning the team can reuse—not a pile of unrelated variants.

## Guardrails

Existing explicit authorization for unchanged content, accounts, timing, media, and comments is sufficient; ask only when that authorization is missing or the proposed effects change.

- Do not claim statistical significance from ordinary organic social comparisons, small samples, unequal delivery, or platform-reported totals without a valid experiment design.
- Hold audience, offer, placement, timing, and CTA constant when testing a creative variable unless one of those is the declared variable.
- Preserve factual claims and required disclaimers across variants. Never make a test “stronger” by inventing proof or urgency.
- Image or video generation spends credits. Confirm ambiguous generation and avoid generating variants that do not test a defined hypothesis.
- Create variants as drafts and require explicit approval before scheduling or queueing.
- Do not automatically declare a winner from the highest raw engagement count; match the decision metric to the objective.

## Workspace and handoff

Before connected operations, use `simplified-workspace` when the client/workspace/teamspace is named or uncertain. Resolve the exact numeric teamspace and carry its `space_id` on every related account, analytics, asset, generation, draft, tag, review, and continuation call. Re-list scoped resources after switching clients; stop on access failures rather than falling back to another space. Pass the resolved context to every delegated skill.

## Workflow

1. Define the business decision: what choice will change if this test succeeds? Resolve objective, audience, offer, channel/placement, conversion path, current control, constraints, and available volume.
2. Call `social_getSocialMediaAccounts` once when a connected baseline or connected-account drafts are needed. When a baseline exists, retrieve relevant aggregated, range, and post analytics. Distinguish observed patterns from hypotheses.
3. Write one falsifiable hypothesis: changing **X** for **Y audience/context** should improve **Z metric** because **reason**.
4. Select one primary variable: hook, promise framing, proof type, visual treatment, opening frame, format, CTA language, creator/brand voice, or offer framing. Use [references/experiment-design.md](references/experiment-design.md) to control confounds.
5. Define the control and two to four purposeful variants. Each variant must express a distinct strategic alternative, not superficial synonym changes.
6. Choose a primary decision metric and guardrails before production. Examples: qualified reach/video hold for attention, saves or substantive engagement for utility, clicks/leads/bookings for response, and negative feedback for audience cost.
7. Produce a test matrix with invariant elements, variable, hypothesis, assets, account/placement, run window, minimum practical evidence, and decision rule.
8. If new creative is authorized, use `$generate-image` or `$generate-video` with reusable asset storage. Keep composition, product, and brand constants unless visual treatment is the tested variable.
9. When the user requests saving/creating drafts, create each execution with `social_createSocialMediaPost` and `action: "draft"`, using required platform settings from `../simplified-social/references/platform-settings.md`. Never publish one variant early and call it a fair comparison.
10. After the run, use `$social-performance-analyst` to compare results. Record result, confidence/limitations, 

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 2 — file references are metadata, not package contents.

cross-platform-campaign5.04 KB

View saved version →

---
name: cross-platform-campaign
description: Turn a launch, promotion, event, announcement, or marketing brief into a coordinated campaign of channel-native social posts. Use when the user asks to launch or promote something across multiple platforms, create a campaign sequence, coordinate social messaging, generate campaign visuals, prepare drafts, or schedule a multi-channel rollout.
---

# Cross-Platform Campaign

Build one coherent campaign while respecting how each social channel works. Compose the `generate-image` and `simplified-social` capabilities when campaign visuals are needed.

## Guardrails

Existing explicit authorization for unchanged content, accounts, timing, media, and comments is sufficient; ask only when that authorization is missing or the proposed effects change.

- Do not publish or schedule without explicit approval of the final campaign matrix.
- Create safe previews with `action: "draft"` when the user asks to prepare the campaign.
- Image generation spends credits. Proceed when the image request is explicit; confirm first when visual generation is ambiguous.
- Carry a generated image's permanent `asset_id` into social `media`; never rely on its expiring signed URL.
- Pause affected connected operations on authorization failure. Continue planning or requested accountless drafts when no accounts are connected; omit `account_ids`. Scheduling, queueing, and account analytics require suitable connected accounts.
- Use a native media preview when the client supports it and the user wants to review the result. Otherwise show a usable link. Refresh expired asset URLs; do not download remote media merely to bypass client display restrictions. Review bundles and other web pages remain links.

## Workspace and handoff

Before connected operations, use `simplified-workspace` when the client/workspace/teamspace is named or uncertain. Resolve the exact numeric teamspace and carry its `space_id` on every related account, analytics, asset, generation, draft, tag, review, and continuation call. Re-list scoped resources after switching clients; stop on access failures rather than falling back to another space. Pass the resolved context to every delegated skill.

## Workflow

1. Distill the brief into audience, objective, offer, proof, CTA, dates, channels, tone, constraints, and success metric. State sensible assumptions instead of requesting a long questionnaire.
2. Call `social_getSocialMediaAccounts` once and map requested channels to returned account IDs.
3. Define the campaign spine: one promise, supporting proof, CTA, and a sequence such as tease, launch, proof, reminder, and last call.
4. Create channel-native variants. Change hook, length, CTA, format, and platform settings; do not paste the same caption everywhere.
5. Plan media by post. If generation is requested, follow `$generate-image`, discover the current model schema, and use `storage: "asset"` for anything that will be attached to a post.
   For a user-supplied local file, follow `$simplified-social` through signed
   upload and `api_registerAsset`, wait for `api_getAsset`, and carry the UUID.
6. Show a campaign matrix containing phase, date, account, copy, media, objective, and CTA.
7. When drafts are authorized, call `social_createSocialMediaPost` with `action: "draft"` for each post. Pass generated asset UUIDs in `media` and use `../simplified-social/references/platform-settings.md` for `additional` fields.
8. Offer a stakeholder review package via `$campaign-review` when several drafts need approval.
9. Schedule or queue only after the user explicitly approves the final matrix. `add_to_queue` requests queueing; report service-returned timing rather than guaranteeing immediate delivery.

## Quality Bar

- Keep the promise and visual identity consistent across the campaign.
- Make each post useful on its own while advancing the sequence.
- Match media to platform format requirements; never attach an image to a reel or short that requires video.
-

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 3 — file references are metadata, not package contents.

edit-image4.83 KB

View saved version →

---
name: edit-image
description: Use when the user wants to remove, blur, or replace an image background, remove an object, fill a masked region, extend a canvas, restore a photo, upscale, or convert an existing image in Simplified. For a new image or broad reference-guided transformation, use generate-image.
---

# Edit an existing image

Choose the smallest supported operation that achieves the requested edit. Preserve the source and create a new result; do not regenerate the product or change approved copy to solve a file-processing task.

## Resolve the source and scope

Use the connected Simplified tools and their current schemas. Canonical names below may have a client prefix. A missing tool is a capability limit, not a reason to silently switch providers.

For a named or uncertain workspace/teamspace, resolve it with `api_getWorkspaceInfo` and accessible membership from `api_listTeamspaces`. Carry the numeric `space_id` on every related call. Use `manage-assets` to search names/tags or handle intake; a folder name does not establish its contents.

For an asset UUID, call `api_getAsset`, require ready `status: 4`, and use its fresh full file URL. The image editing tools below take `image_url`, not an asset UUID or a client-local path. An attachment must first be made accessible using a supported import/upload flow. Preserve signed URL query strings and refresh expired source URLs.

## Choose the operation

| Requested change | Operation and inputs |
|---|---|
| Transparent cutout | `media_removeBackground`: `image_url`, `output_format: "png"`; omit `background_color`; avoid `magic_crop: true` when framing must remain |
| Background blur | `media_blurBackground`: `image_url`, required `blur_value` from 1–100 |
| Background color/image/transparency | `media_replaceImageBackground`: `replace_type`; color needs `replace_color`, image needs `replace_image` URL |
| Resolution | `media_upscaleImage`: `scale` 2, 4, or 8, according to request |
| Denoising/artifact repair | `media_restoreImage`; use its supported strength fields |
| Specific masked region | `media_generativeFill`: prompt and `mask_url` or `mask_base64`; white marks the fill area |
| Object described in words, no mask | `media_magicInpaint`: prompt describing removal/replacement |
| Extend beyond existing borders | `media_imageOutpainting`: prompt and required `mask_url` defining the extension |
| File format only | `media_convertImageFormat`: current format field and supported value |

For an exact-region request without a mask, obtain or create a usable mask only if the client can do so accurately. Semantic inpainting is an alternative only when the user accepts model-selected boundaries. Neither a prompt nor a mask guarantees pixel-perfect preservation: verify the result, and do not promise unchanged pixels outside a region without comparison.

Use PNG for transparency; JPEG cannot retain alpha. Do not promise that later upscaling or conversion retains transparency or source framing without inspecting it. If visual inspection is unavailable, report that limit. Masked generation can default to multiple variations: set `count: 1` unless more were requested. Explicit edits authorize the requested work; clarify materially ambiguous changes or added variants before spending credits.

## Complete each step before chaining

`media_blurBackground` can return an `image_url` synchronously. Other tools may be async at the backend while middleware waits for completion. Inspect the actual completed output; a `task_id` alone is not an image.

For a pending/timeout envelope, retain the exact task ID and call `api_getTaskResult` where exposed. Poll with reasonable intervals and a bounded wait. `SUCCESS` requires usable output; `FAILURE` or `REVOKED` stops the chain. A timeout with `error: true` is incomplete, not proof of terminal failure. Do not resubmit the paid edit or run the next step on the original as if the previous edit succeeded. If no continuation tool is exposed, 

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 1 — file references are metadata, not package contents.

evergreen-content-engine5.77 KB

View saved version →

---
name: evergreen-content-engine
description: Build a renewable, long-lived content system that repeatedly turns durable brand expertise, customer questions, proof, and offers into channel-native social content. Use when the user asks for an evergreen strategy, always-on content engine, recurring content series, 60- or 90-day program, content bank, sustainable posting system, content recycling plan, or a way to keep publishing without chasing daily trends.
---

# Evergreen Content Engine

Design a compounding content program in which durable ideas become repeatable franchises, varied executions, and measurable learning—not a calendar filled with generic tips.

## Guardrails

Existing explicit authorization for unchanged content, accounts, timing, media, and comments is sufficient; ask only when that authorization is missing or the proposed effects change.

- Do not label time-sensitive offers, statistics, platform features, event dates, seasonal advice, or changing regulations as evergreen.
- Treat brand claims, customer proof, prices, outcomes, and quotations as source-dependent. Never manufacture authority or testimonials.
- Separate planning, remote draft creation, scheduling, and publishing authorization.
- Create remote posts only with `action: "draft"` unless the user explicitly approves a final schedule or queue action.
- Do not automate indefinite recycling. Every reusable asset needs a review date, fatigue signal, and retirement rule.
- Pause affected connected operations when Simplified is unauthorized. Planning and requested accountless drafts can proceed without connected accounts; publishing and account analytics require suitable accounts.

## Workspace and handoff

Before connected operations, use `simplified-workspace` when the client/workspace/teamspace is named or uncertain. Resolve the exact numeric teamspace and carry its `space_id` on every related account, analytics, asset, generation, draft, tag, review, and continuation call. Re-list scoped resources after switching clients; stop on access failures rather than falling back to another space. Pass the resolved context to every delegated skill.

## Workflow

1. Define the business objective, audience segments, buying questions, offers, expertise, proof library, content capacity, channels, cadence, and measurement horizon. State assumptions rather than forcing a long intake.
2. Call `social_getSocialMediaAccounts` once when connected-channel planning or drafting is requested.
3. If the user wants an evidence-led engine, inspect recent aggregated, trend, and post analytics. Use `$social-performance-analyst` for a full diagnosis.
4. Build a durable source map: customer questions, misconceptions, decision criteria, demonstrations, processes, founder/operator insight, customer evidence, and objection handling. Distinguish owned expertise from borrowed opinion.
5. Define three to five content territories with a strategic job, audience problem, credible point of view, proof sources, conversion bridge, and exclusions.
6. Turn territories into recurring franchises such as teardown, checklist, FAQ, myth, before/after process, decision guide, customer lesson, or behind-the-scenes operating principle.
7. Create a content bank with atomic ideas. Score each for relevance, distinctiveness, evidence strength, reuse potential, production effort, and shelf life using [references/content-system.md](references/content-system.md).
8. Build a 60- or 90-day sequence that balances discovery, trust, consideration, proof, and conversion. Rewrite ideas for each channel instead of duplicating captions.
9. When drafts are requested, call `social_createSocialMediaPost` with `action: "draft"`, permanent asset IDs, and platform settings from `../simplified-social/references/platform-settings.md`.
10. Define the renewal loop: review results, retain winners, vary one meaningful element, refresh changed claims, pause fatigued concepts, and feed learning back into the bank.

## Marketing St

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 2 — file references are metadata, not package contents.

generate-image5.7 KB

View saved version →

---
name: generate-image
description: Create images or broad prompt/reference-guided transformations with Simplified. Use for new photos, graphics, illustrations, posters, and compositions. For background removal/replacement, restoration, upscaling, masked edits, or format conversion, use edit-image.
---

# Generate Image

For background removal/replacement, restoration, upscaling, masked edits, or format conversion, use `edit-image`. Continue here for prompt/reference-guided generation.

Create or edit an image with Simplified and retain an asset ID when the result will be reused. Use the current generation tool schema as the request contract; model catalogs describe availability and limits, not a reason to substitute provider-specific field names.

## Workflow

1. Resolve workspace/teamspace scope when needed using `simplified-workspace`. Carry its `space_id` into related calls.
2. Resolve existing references with `manage-assets`: search names/tags with `api_listAssets` if available, or use supplied IDs/URLs. Check asset readiness with `api_getAsset` before generating.
3. Select a compatible model from `api_listImageModels`, or `api_getModelFields(type: "image")` if that is the discovery tool exposed in this client. Inspect `api_getImageModelFields` or the available model-fields tool for limits/options when the request requires a particular resolution, quality, reference count, or provider. Honor explicit model choices when supported. Model IDs and credit costs can change; do not guess them.
4. Build the nested request below. Use `storage: "asset"` for reusable outputs; use `transient` only for an explicitly temporary result. The current schema recommends/defaults to asset storage; pass the choice explicitly.
5. Call `api_generateImage` when the user requests generation. Generation spends credits: clarify once when cost, quantity, or intent is ambiguous. Do not add a confirmation when the user already authorized that generation.
6. Wait for the tool's response, inspect its actual status, and report the result. Current apikit waits for completion; do not start a second job or manually poll while the call is still active.

## Current request contract

```json
{
  "model": "<model ID returned by discovery>",
  "storage": "asset",
  "parameters": {
    "prompt": "A studio product photo with space for a headline",
    "aspect_ratio": "4:5",
    "count": 1
  }
}
```

This is a template: substitute a discovered model ID before calling it. `model`, `storage`, and `parameters` are top-level. `prompt`, `aspect_ratio`, `count`, and `reference_images` belong inside `parameters`.

For editing, add `parameters.reference_images: ["<ready asset UUID>"]`. For composition, supply several references in that array; supported counts depend on the model. Prefer workspace asset UUIDs. The image tool also accepts absolute HTTP(S) image URLs; preserve the full signed query string if using one. Local paths, filenames, and another workspace's UUIDs are invalid.

`capability` is optional: no references selects `prompt`, one selects `reference_image`, and several select `multiple_images`. Several references compose one output; use `count` for several generated outputs. If setting a capability explicitly, confirm the model supports it.

Use the normalized public field `reference_images` for every model. Do not replace it with provider fields such as `input_image` or `source_image`, even if a catalog describes internal provider fields. Add optional model-specific controls only when the generation schema/live contract accepts them.

## Choose for the outcome

For ordinary social graphics, select a currently available general model; for dense text/layout or higher resolution, inspect compatible models and limits. For continuity/editing, filter by reference support. When the user specifies a provider, use that family's currently recommended compatible ID. For a budget-sensitive request, inspect available credit metadata and generate only the requested count.

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 4 — file references are metadata, not package contents.

generate-video4.43 KB

View saved version →

---
name: generate-video
description: Use when the user asks Simplified to generate an AI video, animate an image, create a product teaser, guide motion with several images, make a first/last-frame transition, transform a source video, or check supported video models, duration, resolution, or audio options.
---

# Generate Video

For a long recording cut into actual short clips, use `repurpose-video`. For standalone scripted narration, use `generate-voiceover`; an audio result does not establish that it was muxed into a video.

Create one clear motion asset using a compatible model, ready workspace references, and the current tool's nested parameters.

## Workflow

1. Resolve scope with `simplified-workspace` when a workspace/teamspace is named or uncertain. Carry `space_id` into every related call.
2. Define the subject, action, placement, aspect ratio, duration, camera behavior, and audio needs. Infer ordinary choices from the user's brief; ask only for missing constraints that change the result or cost.
3. Discover current models with `api_listVideoModels` or `api_getModelFields(type: "video")`, depending on the exposed tools. Inspect `api_getVideoModelFields` or the available model-fields tool for model-specific durations, resolutions, and capabilities. Do not guess model IDs, costs, or supported values.
4. Use `manage-assets` to find/import/upload references and check readiness with `api_getAsset`. Every video input slot takes a Simplified asset UUID from the same workspace, not a local path or remote URL.
5. Choose `storage: "asset"` for a reusable video. Generation spends credits; proceed for an explicit request, and clarify material ambiguity in scope/cost before submitting.
6. Call `api_generateVideo` once. Current apikit waits for the rendered result; wait for this call before using any continuation tool.
7. Inspect the actual terminal status and return the rendered video link plus its real asset ID when present. Handle pending/timeout/older deployments as described in [references/models-and-polling.md](references/models-and-polling.md).

## Current input contract

Top-level: `model`, `parameters`, and chosen `storage`; optional `capability` and `space_id`. All generation controls belong inside `parameters`.

| Mode | Nested input |
|---|---|
| Text-to-video | `prompt` |
| Animate one image | `image_url: "<asset UUID>"` and optional motion prompt |
| Multiple image guidance | `image_urls: ["<asset UUID>", "<asset UUID>"]` |
| First/last-frame transition | `first_frame_url` and `last_frame_url`, both asset UUIDs |
| Source video transformation | `video_url: "<video asset UUID>"` |
| Supported lipsync/audio modes | `audio_url` or `reference_audio_urls`, containing audio asset UUIDs |

Despite `_url` in the names, these slots take **asset UUIDs**. Use the same public slot names across models. Choose only controls the selected model supports, such as `duration`, `resolution`, `aspect_ratio`, or `generate_audio`. Image-driven modes may derive their ratio from the reference; do not force an unsupported ratio. Omit `capability` to let the current tool infer it from inputs, or use an explicitly supported mode.

```json
{
  "model": "<discovered image-to-video model ID>",
  "storage": "asset",
  "parameters": {
    "image_url": "<ready image asset UUID>",
    "prompt": "A slow push toward the product, soft light moving across its packaging"
  }
}
```

Replace placeholders before calling. Do not assume every model supports every slot, duration, or audio option.

## Creative quality

Use one readable visual beat for a short clip. Preserve product geometry, packaging, logos, and identity in references; avoid contradictory camera moves. Leave space for overlays when needed. If the client can inspect the output, check it; otherwise state that visual quality has not been inspected. Synthetic people/scenes are not documentary evidence.

## Handoff

Use the client’s supported video preview or a usable link; preserve any thumbnail lin

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 2 — file references are metadata, not package contents.

generate-voiceover5.04 KB

View saved version →

---
name: generate-voiceover
description: Use when the user wants spoken narration, text-to-speech, a voiceover from a script, available Simplified voices, or an existing voice resolved for a language. For recording transcription, use transcribe-media instead.
---

# Generate narration from approved text

Discover the voice and language before synthesizing. Keep approved spoken meaning intact and return reusable audio with honest timing information.

## Scope and generation intent

Use the connected Simplified tools and current schemas. Resolve a named or uncertain workspace/teamspace using `api_getWorkspaceInfo` and accessible membership from `api_listTeamspaces`; carry numeric `space_id` into voice discovery, synthesis, storage, and downstream calls.

A request to create narration authorizes the requested synthesis. “Show voices” or “what would it cost?” is discovery only: do not generate or spend credits. Clarify missing script, language, or constraints that change the result before synthesis. Do not add translations, variants, or repeated paid attempts unless requested.

## Select an actual voice

Call `api_listVoices` with the required exact `language_code`, such as `en-GB` or `en-US`. If the request only says English and no context resolves the locale, obtain or state a suitable locale choice before lookup; do not invent an all-locales call. For a saved UUID, `api_getVoice` resolves its actual details.

| Need | Behavior |
|---|---|
| Named voice | Use `voice_name` plus locale; verify the returned `voice_name` AND `language_code` before using its UUID |
| Legacy deployment ignores name filter | Inspect all returned entries; never assume `voices[0]` is the requested voice |
| No optional filter requested | Omit it or retain the documented empty-string sentinel; `0` and `false` are real filters |
| Neutral delivery | Do not infer neutral gender; gender filter `3` is only for a requested neutral-gender voice |
| Provider, premium tier, engine, gender requested | Use the actual supported filter and verify the selected entry meets it |
| Style/pace instructions | Include `instructions` only when `supports_instructions: true` |

`search` matches locale/language names, not voice names. Voice UUIDs can differ for the same name across locales; re-resolve the name after a language change. Do not fabricate a voice or silently substitute another one. If the requested name and explicit gender/provider constraints conflict, clarify the choice.

For options, show a short relevant list of names, locales, descriptions, supported instruction behavior, and returned samples. Do not promise a model or price from memory.

## Prepare the script and duration

Use the approved script verbatim unless adaptation was requested. Resolve pronunciation or ambiguous markup before spending. Plain prose uses `use_ssml: false`. Use `true` only for valid supplied/prepared SSML and an appropriately supported voice; do not wrap plain text merely to set the flag. Validate malformed markup or ask about ambiguous meaning instead of speaking broken tags as text.

The generation schema has no duration or rate field. `instructions` nudges delivery but is not an exact timing control, and unsupported voices ignore it. Word-count estimates are estimates. For “exactly 30 seconds,” resolve the requirement before a paid job: accept approximate narration or arrange separately supported measurement/editing. Do not promise exact runtime, invent `duration`, silently change approved copy, or regenerate repeatedly to chase timing.

## Synthesize and retain the result

Call `api_generateAudio` with the verified `voice_id`, `text`, `use_ssml`, and `storage: "asset"` for retained/reused narration (`"default"` only for an explicitly temporary result). Add supported `instructions` only when appropriate. There is no separate language/model/duration argument in this generation request; the voice selects the language/provider.

Inspect the actual returned payload; do not require an i

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 1 — file references are metadata, not package contents.

local-business-marketing5.81 KB

View saved version →

---
name: local-business-marketing
description: Plan and create locally relevant social and Google Business content for location-based and service-area businesses. Use when the user asks for local marketing, neighborhood content, Google Business posts, store or restaurant promotion, appointment or booking campaigns, local events, service-area awareness, foot-traffic content, location launches, or a practical social plan for a small local business.
---

# Local Business Marketing

Turn local relevance, operational truth, community proof, and timely offers into content that drives calls, bookings, directions, visits, and qualified inquiries.

## Guardrails

Existing explicit authorization for unchanged content, accounts, timing, media, and comments is sufficient; ask only when that authorization is missing or the proposed effects change.

- Verify business name, locations or service area, hours, availability, prices, offer terms, event dates, phone/booking destination, and required disclaimers before publishing them.
- Never fabricate reviews, customer identities, local partnerships, awards, scarcity, neighborhood knowledge, or “near me” relevance.
- Treat regulated services, health claims, financial claims, age restrictions, and before/after results conservatively; surface required approvals.
- Do not publish the same generic promotional caption to every location or platform.
- Create drafts first. Obtain explicit approval of location, offer terms, CTA destination, date, account, and media before scheduling or queueing.
- Pause affected connected operations on authorization failure. If a local account is missing, continue planning or requested accountless drafts and state that publishing to that location requires its verified connected account.

## Workspace and handoff

Before connected operations, use `simplified-workspace` when the client/workspace/teamspace is named or uncertain. Resolve the exact numeric teamspace and carry its `space_id` on every related account, analytics, asset, generation, draft, tag, review, and continuation call. Re-list scoped resources after switching clients; stop on access failures rather than falling back to another space. Pass the resolved context to every delegated skill.

## Workflow

1. Establish location model: storefront, multi-location, mobile/service-area, appointment-led, event-led, or locally delivered ecommerce. Capture geography, audience, demand windows, offer, proof, conversion action, and operational constraints.
2. Call `social_getSocialMediaAccounts` once and map returned accounts to locations and channels. Do not infer that similarly named accounts represent the same branch.
3. Audit useful local inputs: FAQs, service availability, customer proof with permission, team expertise, products/menu, events, partnerships, landmarks, seasonality, weather sensitivity, inventory, and booking capacity.
4. Build a balanced plan using five jobs: be found, reduce uncertainty, prove trust, create timely reasons to act, and strengthen community relevance.
5. Choose platform roles using [references/local-channel-playbook.md](references/local-channel-playbook.md). Use Google Business for high-intent updates and actions; use social channels for discovery, familiarity, proof, and community context.
6. Write location-specific copy with a concrete local detail, customer value, proof or operational fact, and one primary CTA. Avoid keyword-stuffed city lists.
7. Plan authentic media: exterior/interior orientation, people with permission, process, product/service detail, local proof, event information, or offer creative. Upload local media through `$simplified-social` and retain permanent asset IDs.
8. Show a location/channel matrix containing date, account, post purpose, copy, media, CTA, offer terms, and verification status.
9. When authorized, create each post with `social_createSocialMediaPost` and `action: "draft"`. Apply exact Google Business and channel fields from `../simplified-social/referenc

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 2 — file references are metadata, not package contents.

manage-assets4.9 KB

View saved version →

---
name: manage-assets
description: Use when the user wants to find, list, search, upload, import, inspect, or reuse images, videos, audio, or PDFs in the Simplified Asset Library, including media for a social draft or a generation reference.
---

# Manage Simplified Assets

Find existing media before uploading another copy. Keep the permanent asset UUID for reuse; retrieve a fresh URL only when a tool or user needs it.

## Scope and tool availability

Use the connected Simplified tools, not another provider's asset library. Names here are canonical operation names; clients may add a prefix such as `mcp__simplified__`. Match the operation and its input schema in the client's available tools.

When a workspace or teamspace is named or uncertain, use `api_getWorkspaceInfo` and `api_listTeamspaces` to resolve scope. Carry the same numeric `space_id` into every asset, generation, and social call. A UUID from another workspace is not a valid reference.

Check that `api_listAssets` is exposed before promising discovery. Installing a skill does not add a missing MCP tool. If absent, refresh/reconnect the connector; if still absent, explain that its deployed profile lacks discovery and use IDs or downloadable URLs the user supplies.

## Find existing media

Call `api_listAssets`:

| Request | Arguments |
|---|---|
| Browse available media | Omit `search`; start with `page: 1` |
| Find a filename, asset name, or tag | `search: "car"` |
| Find images | `asset_type: 0` |
| Find videos | `asset_type: 2` |
| Continue results | Increment `page`, preserving search, filters, and scope |

Other numeric types include `4` giphy, `6` font, `8` audio, and `17` PDF. `page_size` requests a page size subject to server limits. Follow the returned pagination metadata; collect all pages when the user requests all matches. Deduplicate by `id` and retain the actual result names and IDs.

Search matches names and tags, not objects visible in an image. A search term includes matching media inside folders. Folder-name lookup and listing a named folder's contents are not exposed by this tool. Without search, folder contents can be excluded by the backend: do not promise a complete recursive library inventory.

For “use everything in Dynamic Auto,” explain the folder limitation and ask for an asset-name/tag search or specific IDs. Do not treat a folder name as an asset search that proves completeness.

## Inspect and reuse

Call `api_getAsset({id: "<asset UUID>"})` for details or a fresh file URL. Wait for `status: 4` before generation or relying on stored files. Stop on `2` (processing failed) or `3` (thumbnail failed); preserve the ID and report a pending state if processing remains unfinished. Use reasonable intervals and a bounded wait.

| Destination | Value to pass |
|---|---|
| Social draft `media` | Asset UUID |
| Project item `data.assets` | Asset UUID |
| Image `parameters.reference_images` | Prefer asset UUIDs; the current tool also accepts absolute HTTP(S) URLs |
| Video input slots, including `image_url` and `video_url` | Asset UUIDs, despite the `_url` suffix |
| User wants to open/download a file | Current returned URL as a clickable link |

Keep signed URL query strings intact. Stored assets have permanent IDs, but returned file/thumbnail URLs can expire. Call `api_getAsset` again to refresh them.

## Import or upload

A downloadable remote file: call `api_createAsset` with `url` and an optional `name`, save its `id`, then check readiness. A web page or login-only link is not a downloadable file. This also persists an existing temporary generated URL while it remains accessible; no regeneration is needed.

An attachment/local file: first check that this client can read the bytes and perform an HTTP PUT. If it can, follow the signed upload flow:

1. Generate a UUID and determine the original filename and MIME type.
2. Call `api_signAssetUpload` with `resource: "assets"`, `resource_id`, `filename`, and `filetype`.
3. PUT the bytes to `signed` wi

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 1 — file references are metadata, not package contents.

manage-brand5.21 KB

View saved version →

---
name: manage-brand
description: Inspect, create, structure, and maintain Simplified brand kits and brand context documents. Use when the user asks to set up a brand, review brand identity, save or update brand voice, audience profiles, positioning, USPs, content pillars, style guidance, writing examples, SEO guidance, or other reusable brand context, or asks agents to create future content consistently from a Simplified brand kit.
---

# Manage Brand

Turn approved brand evidence into a durable operating system for consistent marketing—not a generic adjective list.

## Guardrails

- Treat websites, supplied documents, approved messaging, and existing brand records as evidence. Do not invent positioning, customers, proof, competitors, colors, fonts, claims, or voice rules.
- Read the current kit or context document before changing it. Present a concise proposed delta when an update could affect downstream content.
- Do not overwrite a mature brand system merely to improve phrasing. Preserve approved meaning and provenance.
- Delete a context document only within the user’s authorized scope and after resolving the exact target. Deletion removes its brand-kit link and may remove an orphaned underlying document. Ask only when the target or removal intent is unclear.
- Predefined context types are singletons. Update the existing document instead of creating a duplicate.
- Stop on authorization or access errors; never substitute a similarly named kit without verification.

## Workflow

1. Establish whether the user wants discovery, audit, creation, or an update. Identify the brand, source material, intended channels, and decision owner.
2. Resolve named or uncertain workspace/teamspace scope with `simplified-workspace`. Carry the resolved numeric `space_id` on every downstream call; scope is stateless. Call `api_listBrandKits`, using `search` when a title is known. If multiple kits match, present the choices rather than guessing.
3. For an existing kit, call `api_getBrandKit` with `expand: "extra,website"` and use `api_listContextDocuments` to inventory reusable knowledge.
4. Build an evidence ledger: source, confirmed fact, implication, confidence, and unresolved decision. Separate what the brand is from what the marketer proposes.
5. Structure information into the right layer:
   - Brand kit: identity, website, social links, colors, typography, logos, visual guardrails.
   - Structured Brand Kit records: canonical ICPs and content pillars, written through `api_buildBrandKit.icps` and `api_buildBrandKit.content_pillars`.
   - Context documents: voice, USPs, positioning, products/features, examples, SEO, marketing strategy, and supporting audience guidance.
6. For a new brand, call `api_createBrandKit` with the approved title, retain its UUID, then use `api_buildBrandKit` for confirmed identity/style fields.
7. Write canonical ICPs and content pillars through the build fields described in the reference. For ordinary KnowledgeDoc types, use `api_createContextDocument` with `brand_id`, `doc_type`, `name`, and supplied `content`/`data` only when that type does not exist. Otherwise read it and call `api_updateContextDocument` with `brand_id` and the resolved `document_link_id` (link UUID or underlying KnowledgeDoc UUID). `api_getContextDocumentByType` takes `context_type`. Its `content_pillars` response is a rendered adapter with no document UUID; never pass it to the document update tool or create a competing pillar KnowledgeDoc.
8. Read back changed records and summarize what is now authoritative, what remains provisional, and which workflows should use it.

## Brand asset handoff

- Treat logo and reference-image `asset_id` values as the durable identity. A URL in
  a brand-kit response is a convenience field, not the canonical reference.
- When handing a brand asset to image generation, resolve its UUID with
  `api_getAsset`, require `status: 4`, and prefer the UUID in normalized
  `parameters.reference_images`. Use a fresh URL 

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 2 — file references are metadata, not package contents.

manage-projects4.7 KB

View saved version →

---
name: manage-projects
description: Organize creative marketing projects and their deliverable items in Simplified, including collections, ordering, asset handoffs, assignments, and exports. Use for marketing project/item records. Kanban boards, tasks, subtasks, statuses, and native dependencies are not handled here; they need the simplified-project-management skill and the full connector, where available.
---

# Manage Projects

Translate a marketing plan into accountable, sequenced work without confusing project organization with publishing authorization.

## Guardrails

- Inspect before mutating. Reuse an existing project when it clearly matches the user's initiative.
- Use the same `resourcetype` for every operation on a project. Prefer `Project` for ordinary marketing work and `AdCreativeProject` only for specialized ad-creative projects.
- Do not invent project, item, partner, or agent IDs. Resolve them from tool results or user-provided values.
- Creating a project or item does not authorize assigning an agent, exporting content, publishing content, or deleting records.
- Resolve the exact target and consequences before soft-deleting, assigning an execution agent, or exporting. A user request that specifies the action and scope is authorization; ask only when the target, destination, or execution scope is unclear.
- Dates must be realistic and internally ordered. Surface impossible dependencies or missing owners rather than silently compressing the plan.

## Workflow

1. Define the initiative: outcome, scope, deadline, deliverables, channels, approval points, owners, dependencies, and definition of done.
2. Resolve named or uncertain workspace/teamspace scope with `simplified-workspace` and carry numeric `space_id` on every call. Kanban boards, team task ownership, subtasks, and native dependencies are a different resource served only by the full connector (`simplified-project-management`, where installed); if it is not available, say so rather than approximating with project items. Call `api_listProjects` with the chosen `resourcetype` and `search`. Reuse a verified unique match or show choices when several projects could apply. `expand: "items"` can include deliverables and avoid separate listings.
3. If creation is requested, call `api_createProject` with a clear title, concise outcome-based description, and only supported structured data. Preserve the returned project ID.
4. Inspect the returned items, or call `api_listProjectItems` on an existing project, before adding work to avoid duplicates. A newly created empty project does not need another inventory call.
5. Convert the plan into outcome-oriented items. Each item should have one deliverable, owner or owner-needed flag, status, priority, start/due date, dependencies in the description or data, and a measurable definition of done.
6. Call `api_createProjectItem` for authorized items. Use `data.assets` for known permanent asset UUIDs; never store signed URLs as durable references.
7. Revise existing work with `api_updateProject` or `api_updateProjectItem`; read first and send the complete merged `data` object when changing it. Use `api_reorderProjectItem` within the requested organization scope. Use `api_assignAgentToItem` only with a resolved agent UUID and authorized execution scope; Resolve agents through the separately configured automation/full connection when enabled; follow `simplified-workflows` for discovery and capability checks. Assignment alone does not establish completion.
8. Use `api_exportProjectItems` with the resolved numeric `partner_id` and exact `item_ids` within the authorized destination scope. There is no dedicated partner-discovery tool in the current public schema; use a known configured ID or verified supported discovery, and ask when the destination is unresolved. Report export initiation separately from completion.

Read [references/project-operations.md](references/project-operations.md) for field and lifecycle rules.

## Marketi

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 2 — file references are metadata, not package contents.

repurpose-video5.79 KB

View saved version →

---
name: repurpose-video
description: Use when the user wants to turn a webinar, interview, podcast, recording, or long video into rendered short clips, Reels, Shorts, or social draft videos in Simplified, or wants a custom source-time excerpt from an existing repurposing project.
---

# Turn recordings into ready short clips

Produce playable clips and preserve source context. For rewritten posts or clip concepts, use `content-repurposer`; for a standalone transcript or subtitles, use `transcribe-media`.

## Source and setup

Discover current tools first. Require only the tools needed for the requested route: project creation and highlight retrieval, or custom excerpts from an existing project. Report missing capabilities for affected steps. Installing this skill does not deploy those tools. Resolve named or uncertain workspace/teamspace scope with `api_getWorkspaceInfo` and `api_listTeamspaces`; carry its numeric `space_id` through calls where exposed by the current schema, including assets and drafts.

The backend has download routes for direct media files, YouTube (`youtube.com`/`youtu.be`), Vimeo, and Google Drive file links. The source must be downloadable by the service; a private/login-only link or arbitrary webinar landing page is not a guaranteed source. Preserve signed URL query strings. For an asset UUID, call `api_getAsset`, require ready `status: 4`, and use its fresh file URL. Local paths and chat attachments need supported intake through `manage-assets` first.

A request to create clips authorizes the credit-consuming repurposing job; discovery alone does not. Reuse an existing project when supplied. Select `project_type: "V"` for video or `"A"` for audio/podcast. Match the source language; do not silently use `en-US` for a known other language.

Choose supported settings: `duration` is a target preset of 15, 30, 58, 180, or 300 seconds; `aspect_ratio` is `youtube-shorts`, `youtube-video`, or `instagram-post-video`; `clip_layout` is `auto`, `just_active_speaker`, or `center_fit`. State reasonable assumptions such as vertical Shorts and the 58-second preset. Use only verified brand-kit settings.

## Submit once, then follow the right resource

| Step | Tool and identifiers | Completion |
|---|---|---|
| Create source project | `media_createRepurposeProject` with `title`, `media_url`, chosen settings | Returns project `id`, not a task ID |
| Inspect project | `media_getRepurposeProject(project_id)` | `DONE`/`UPDATED` ready; `FAILED` terminal |
| Enumerate clips | `media_listRepurposeClips(project_id, page)` | Read every results page, follow `next`, deduplicate clip IDs |
| Inspect each clip | `media_getRepurposeClip(project_id, segment_id)` | `DONE`/`UPDATED` and usable `download_url` needed |

Project completion does not establish every clip's readiness. Check each selected clip, retain successes, stop failed clips, and continue pending clips with bounded waits, such as 10-second intervals. Return pending IDs if the wait ends. These project and clip UUIDs are neither Celery task IDs nor video export IDs: do not pass them to `api_getTaskResult` or `media_getVideoExport`.

There is no clip-count parameter. For “five clips,” inspect all pages and select five distinct ready highlights grounded in the source. If fewer are ready, retain them, report the shortfall and pending/failed items, and use source-grounded custom excerpts when authorized; do not invent timestamps or rerun the entire project to chase a count.

## Custom excerpts and retry recovery

For an existing project with ready transcription, “02:15–03:00” means `media_createRepurposeClip(project_id, title, start_time: 135, end_time: 180)`. Both values are absolute **whole source seconds**, 0–86399, with end later than start and within the source duration. When transcript word times are supplied in milliseconds, divide by 1000, then choose valid whole-second boundaries grounded in the requested excerpt. Custom clips inherit the project's format/layout; this

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 1 — file references are metadata, not package contents.

simplified-social7.78 KB

View saved version →

---
name: simplified-social
description: Create, retrieve, revise, schedule, or queue Simplified social posts and drafts; manage auto-comments and review bundles; retrieve account analytics. Use for direct social operations. For a content calendar, campaign strategy, or performance interpretation, use social-content-planner, cross-platform-campaign, or social-performance-analyst.
---

# Simplified Social Media

Schedule, queue, and draft social media posts, add timed auto-comments, and
retrieve analytics across 13 platforms using Simplified.com.

## Connector

All tools (`social_getSocialMediaAccounts`, `social_createSocialMediaPost`,
`api_createAsset`, etc.) are provided by the **Simplified hosted MCP connector**
(`https://apikit.simplified.com/mcp`). They are not built-in tools.

The connector is **OAuth-secured** — the connected client walks the OAuth flow; there is no API key to set.

## IMPORTANT: Before Any Operation

If any tool call returns a **401 / Unauthorized**, the Simplified connector is not authorized:

1. **Stop immediately** — do not retry the failed call.
2. **Inform the user** that they need to connect Simplified (authorize the connector) before social tools will work.
3. **Do not proceed** with the original request until the connector is authorized.

## Setup

1. Sign up at [simplified.com](https://simplified.com).
2. Connect your social media accounts in the Simplified dashboard.
3. Enable the Simplified connector in your client and complete the OAuth authorization.

## Core Workflow

For publishing, follow **Discover → Select → Compose → Confirm → Publish**.
For drafts, resolve workspace/teamspace scope and compose; a connected account is optional.
Carry an explicitly selected `space_id` through every related read, write, and poll.

### Step 1: Discover Accounts

Call `social_getSocialMediaAccounts` once without `network` to list connected accounts.
The `network` filter is deprecated; filter returned accounts client-side.

```
social_getSocialMediaAccounts({})
```

Returns `{ accounts: [...] }` where each account has `id` (integer), `name`, and `type` (see type values below).

If publishing or account-specific analytics requires an account and the list is empty,
explain that an account must be connected. For a requested draft, continue with
`action: "draft"` and omit `account_ids`; do not block accountless drafting.
For account-dependent operations, explain which account needs connecting in [Simplified](https://app.simplified.com).

### Step 2: Select Target Accounts

Pick one or more account IDs from the results and serialize them as strings for
posting, e.g. `account_ids: ["123"]`. Analytics `account_id` remains an integer;
draft/post listing `account_ids` is a comma-separated string. You can post to
multiple accounts in a single call.

### Step 3: Compose the Post

Build the post payload:
- `message` (required) — the post text, max 5000 chars at the connector boundary
  (tighter per-platform limits apply)
- `account_ids` (required for publishing actions) — array of stringified target account IDs
- `action` (required) — `schedule`, `add_to_queue`, or `draft`
- `date` — required for `schedule`, format: `YYYY-MM-DD HH:MM`
- `media` — array (max 10) of **Simplified asset UUIDs**, public media URLs, or `{url, thumbUrl}` objects for video with an explicit poster
- `comments` — ordered auto-comments, each with `message` and a nonnegative
  `delay` in seconds after the post publishes; comments cannot include media
- `additional` — platform-specific settings (see below)

**Attaching a generated image:** `media` accepts Simplified **asset UUIDs**, resolved server-side to fresh permanent URLs at publish time — exactly what the **generate-image** skill returns with `storage:"asset"`. Pass that `asset_id` straight into `media`.

**Attaching a local file:** never pass a client-local path to the hosted server.
Read [references/assets.md](references/assets.md), then follow the UI-equivalent
flow: `api_signAssetUpload`

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 9 — file references are metadata, not package contents.

simplified-workspace4.76 KB

View saved version →

---
name: simplified-workspace
description: Identify the authenticated Simplified user and workspace, inspect workspace settings, and discover or resolve accessible teamspaces safely. Use when the user asks "who am I," which Simplified workspace or teamspace is connected, what teamspaces they can access, which timezone or language applies, or asks to work in a named teamspace before using assets, brands, projects, social accounts, drafts, or other workspace-scoped resources.
---

# Simplified Workspace

Establish the correct Simplified identity and workspace context before operating on scoped resources. This operator resolves a teamspace once, then scopes every downstream MCP call explicitly.

## Workflow

1. Call `api_getWorkspaceInfo` for the authenticated user's identity, current workspace, workspace settings, and visible active teamspaces.
   Its `teamspaces` field is context information, not membership authority.
2. Call `api_listTeamspaces` to discover the current user's accessible memberships,
   including all relevant pages. Use `search` for name matching and
   `expand:"settings"` when settings are needed. Return available teamspaces
   from this membership list, not from `api_getWorkspaceInfo.teamspaces`.
3. If the user names a teamspace, search with `api_listTeamspaces`. Resolve to one exact numeric ID; do not guess when names or slugs are ambiguous.
4. If deeper workspace metadata is material, call `api_getWorkspace` with the workspace integer ID returned by `api_getWorkspaceInfo`.
5. When the user says “use,” “push this to,” “create in,” or “switch to” a teamspace, remember the resolved ID for the current task and pass `space_id: <numeric_id>` on every downstream Simplified tool call.
6. State the applied context before the downstream workflow: user, workspace, teamspace name and ID, and settings that affect the work.
7. Follow [references/teamspace-context.md](references/teamspace-context.md) before handing off to another Simplified skill.

## Identity and memory model

- Treat `api_getWorkspaceInfo` as Simplified's authoritative `whoami`; never infer identity from conversation memory.
- A credential belongs to one workspace. Teamspaces are sub-spaces inside that workspace, not alternate workspaces.
- Brand kits and their context documents are durable Simplified marketing memory. Workspace identity decides where that memory is read or written; this skill does not replace `manage-brand`.
- Conversation memory is not proof that a remote workspace, teamspace, account, asset, brand kit, project, or draft still exists or remains accessible. Re-read context when the user changes client, workspace, or teamspace, or before a consequential write when context is uncertain.
- Workspace timezone, language, and start of week guide planning. For social
  scheduling, inspect workspace settings and account metadata; the create tool
  accepts no timezone field. Canonical guidance identifies workspace timezone,
  but resolve conflicting service/account interpretation before converting a
  user-specified time. Disclose uncertainty rather than scheduling at an assumed time.

## Teamspace safety

- Teamspace IDs are integers. Never pass a name, slug, alias, or fabricated value where a numeric ID is required.
- Hosted MCP scoping is stateless: `space_id` applies to one tool call. Carry the same resolved ID into every related read, write, poll, and follow-up call for the current task.
- It is fine to tell the user “Using Acme East (42)” after resolution, but do not imply the server persisted a global `teamspace:use` session.
- Do not reuse IDs for accounts, assets, brand kits, projects, items, drafts, or posts across teamspaces without re-listing them in the correctly scoped context.
- Never omit `space_id` midway through a scoped workflow. An omitted value uses the configured inbound `Space` header or server fallback
  scope when present, otherwise the credential's default workspace context.
  It does not reliably preserve the task's 

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 2 — file references are metadata, not package contents.

social-content-planner5.15 KB

View saved version →

---
name: social-content-planner
description: Build goal-led weekly or monthly social content calendars for marketers, social media managers, and small businesses. Use when the user asks for a content plan, posting calendar, campaign calendar, content pillars, posting cadence, ideas to fill calendar gaps, or a set of social drafts organized across dates and channels.
---

# Social Content Planner

Turn business goals into a practical, channel-aware content calendar. Use the Simplified hosted MCP connector for account discovery, analytics, drafts, tags, and scheduling.

## Guardrails

- Treat planning, drafting, and publishing as separate levels of authorization.
- Return a plan in conversation when the user asks only for a plan. Do not create remote drafts unless requested.
- Use `action: "draft"` when the user asks to create or save the planned content.
- Before `schedule` or `add_to_queue`, verify that explicit authorization covers the final posts, accounts, dates, media, settings, and comments. Reuse unchanged existing authorization; show the concrete plan and ask only for missing approval.
- On `401`, pause affected connected operations and explain how to authorize Simplified. An empty account list does not block planning or requested accountless drafts; omit `account_ids`. Scheduling, queueing, and account analytics require suitable connected accounts.
- Use a native media preview when the client supports it and the user wants to review the result. Otherwise show a usable link. Refresh expired asset URLs; do not download remote media merely to bypass client display restrictions. Review bundles and other web pages remain links.

## Workspace and handoff

Before connected operations, use `simplified-workspace` when the client/workspace/teamspace is named or uncertain. Resolve the exact numeric teamspace and carry its `space_id` on every related account, analytics, asset, generation, draft, tag, review, and continuation call. Re-list scoped resources after switching clients; stop on access failures rather than falling back to another space. Pass the resolved context to every delegated skill.

## Workflow

1. Establish the planning frame: business goal, audience, offer or topic, date range, channels, cadence, key dates, and desired call to action. Ask only for information that materially changes the plan; otherwise state reasonable assumptions.
2. Call `social_getSocialMediaAccounts` once without a network filter when connected channels matter. Use only returned account IDs.
3. If the user wants a performance-informed plan, retrieve the relevant account analytics before ideating. Use `$social-performance-analyst` for a full analysis.
4. Create three to five useful content pillars. Balance education, proof, promotion, engagement, and brand or community content rather than repeating one message.
5. Assign each post a date, channel, pillar, objective, format, hook, core message, CTA, and asset requirement. Adapt the idea to each channel instead of copying identical text everywhere.
6. Present the calendar in chronological order and flag missing source material or media.
7. If remote drafts were requested, create each with `social_createSocialMediaPost` and `action: "draft"`. Include required platform-specific `additional` fields from `../simplified-social/references/platform-settings.md`.
8. If scheduling was requested, create or show drafts first, then obtain explicit approval of the final account/date/media matrix before scheduling. Existing approval of that unchanged concrete matrix is sufficient.

## Planning Heuristics

- Tie every post to one primary objective: awareness, engagement, consideration, conversion, retention, or trust.
- Use realistic cadence for the available channels and source material; do not fill a calendar with low-value repetition.
- Build sequences around launches and events: setup, reveal, proof, reminder, last call, and follow-up.
- For small businesses, prioritize offers, local relevance, customer pr

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 3 — file references are metadata, not package contents.

social-performance-analyst3.76 KB

View saved version →

---
name: social-performance-analyst
description: Analyze connected social accounts and translate metrics into decisions for marketers and small businesses. Use when the user asks how social performed, requests a weekly or monthly report, wants winners and losers, needs KPI or audience analysis, asks what content worked, wants account comparisons, or needs evidence-based recommendations for the next content plan.
---

# Social Performance Analyst

Turn Simplified social analytics into clear signals, limitations, and next actions. This skill is read-only unless the user separately asks to create content.

## Workspace and handoff

Before connected operations, use `simplified-workspace` when the client/workspace/teamspace is named or uncertain. Resolve the exact numeric teamspace and carry its `space_id` on every related account, analytics, asset, generation, draft, tag, review, and continuation call. Re-list scoped resources after switching clients; stop on access failures rather than falling back to another space. Pass the resolved context to every delegated skill.

## Workflow

1. Resolve the reporting period. Use the previous complete calendar month for "last month" and the last 30 completed calendar days ending yesterday (date_from = today minus 30 days, date_to = yesterday) for an unspecified recent period. Never send a future `date_to`. For a user-requested period through today, label today as partial. Pass a known IANA `tz` only to tools exposing it (Range and Audience); Posts and Aggregated do not expose `tz`, so disclose day-boundary limitations when material.
2. Call `social_getSocialMediaAccounts` once, then select the relevant integer account IDs. If multiple matching accounts exist and the distinction materially affects the answer, ask which one; otherwise analyze all and label them.
3. Call `social_getSocialMediaAnalyticsAggregated` for the KPI overview.
4. Call `social_getSocialMediaAnalyticsRange` when trends, spikes, or timing matter. Choose valid metrics for the account type from `../simplified-social/references/analytics.md`.
5. Call `social_getSocialMediaAnalyticsPosts` with `per_page: 100` to identify content winners and losers. Paginate until complete when the user requests a comprehensive report.
6. Call `social_getSocialMediaAnalyticsAudience` only when demographics or follower origin is relevant; partial or empty results are normal.
7. Compare `value` with `prevValue`. Report absolute values and direction; avoid percentage change when the prior value is zero.
8. Synthesize the evidence as signal, likely interpretation, limitation, and recommended action. Do not claim causation from correlation.

## Analysis Standard

- Separate reach or impressions, engagement, audience growth, and publishing volume.
- Normalize account comparisons where possible; raw totals across different networks are not directly equivalent.
- Connect post-level observations to concrete attributes such as topic, format, hook, CTA, or timing only when the returned data supports it.
- Note sparse data, missing metrics, platform attribution windows, and incomplete audience fields.
- Recommend no more than three prioritized actions and attach each to an observed signal.
- Suggest a measurable next experiment, including what to change and which metric will determine success.

## Failure Handling

- On `401`, stop and ask the user to authorize the Simplified connector.
- On an empty account list, explain that social accounts must be connected in Simplified.
- If a metric is unsupported or silently omitted, report that limitation rather than treating it as zero.

## Output

Lead with a concise performance verdict. Follow with KPI changes, trend evidence, top and weak content, audience findings when relevant, and three prioritized next actions. Include the exact reporting period and account names.

Referenced files: 3 — file references are metadata, not package contents.

transcribe-media4.55 KB

View saved version →

---
name: transcribe-media
description: Use when the user wants a transcript, timestamps, speaker-labeled text, SRT or WebVTT subtitles, or accessible speech content from an audio/video recording in Simplified. Use before content-repurposer when the source must first be transcribed.
---

# Transcribe recordings and export subtitles

Deliver the source transcript separately from summaries or rewritten content. Do not infer words, speaker identities, or timestamps that the returned recording data does not support.

## Source, language, and scope

Verify the connected tools and current schemas. Resolve a named or uncertain workspace/teamspace using `api_getWorkspaceInfo` and accessible membership from `api_listTeamspaces`; carry numeric `space_id` through transcription, source assets, exports, and any downstream draft calls.

`media_transcribeVideo.video_url` takes a reachable audio or video URL, despite the name. An uploaded asset UUID must first be resolved with `api_getAsset`; require ready `status: 4` and use its fresh file URL. A chat attachment or local path is not a hosted file. Use `manage-assets` for client-capable upload/import; otherwise request an accessible source. Do not treat a web page requiring login as the media URL.

Use the recording's known language as `language_code` in BCP-47 form. If unknown and material, ask; do not silently transcribe a non-English recording with the default `en-US`. A request to transcribe authorizes that job; a request to list options does not. Preserve the source file.

## Submit once and inspect completion

Call `media_transcribeVideo` with `video_url` and the chosen language. The raw backend submission can return only an `id`; current MCP middleware normally waits and returns a full transcription record. Do not force another polling call when the returned `job_status` is already `DONE`.

| Returned state | Action |
|---|---|
| `DONE` with `payload.phrases` | Read the transcript; export subtitles if requested |
| Only a transcription `id` | Inspect it with `media_getTranscription` |
| `FAILED` | Stop and report the failure; do not claim a transcript exists |
| `CREATED`, `PENDING`, `PROCESSING`, `RENDERING`, `UPDATED` | Continue the same `id` with `media_getTranscription` |
| Timeout/error envelope containing `id` | Retain that transcription ID and inspect it with `media_getTranscription` before retrying |

`UPDATED` is non-terminal for transcription, even though other media workflows use it differently. Poll at reasonable intervals, such as 10 seconds, with a bounded wait. The transcription `id` is not a Celery `task_id`, an asset UUID, or a repurposing-project ID; do not call `api_getTaskResult` with it. If continuation is unavailable, report the pending ID rather than submit a duplicate.

## Preserve evidence and timing

Read `payload.phrases` and its word-level data. Words can include `text`, `start`, `end`, and `confidence`; timing is in **milliseconds**, so divide by 1000 for seconds. `90000` milliseconds is 90 seconds, not 90000 seconds. Use only the timings actually returned; one timed word does not establish a whole phrase's duration.

A label such as `speaker_0` identifies an anonymous speaker, not a person's name. Attribute names only from reliable provided evidence. Mark unclear/low-confidence content, preserve qualifications, and avoid silently rewriting uncertain names, figures, or claims. A quoted business claim remains speaker testimony unless independently supported.

Keep verbatim transcript and assistant-written summary distinct. Do not claim to have reviewed visuals or non-speech content just because a recording was transcribed. For long content, retain the full transcript and label excerpt coverage.

## Export requested subtitles

Only after `job_status: "DONE"`, call `media_downloadTranscriptionFile` with the transcription `id` and `requested_format: "srt"` or `"vtt"`.

The response is raw subtitle **text**, not necessarily a file URL. Preserve its numbering, ti

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 1 — file references are metadata, not package contents.

Package details

Publisher declarations from the archived package. These are separate from our research and the live service's terms.

Package license
MIT
Package author
Simplified
Keywords
See keywords

Declared capabilities

  • Interactive
  • Write

Package observed Nov 10, 2026.

Technical details
First seen
Sep 30, 2026 · 22:02 UTC
Last seen
Nov 10, 2026 · 06:00 UTC
Latest observed change
Nov 3, 2026 · 18:19 UTC
Collection status
Collected

plugin_asdk_app_6a1ea93307208191b5fe82494caf73a8

Download plugin data (JSON)

Plugin details: freshly prepared. Prepared . Refreshed when plugin data changes or after 6 hours. Your account and Follow status are live.