Parameters
| Name | Type | Required | Description |
|---|---|---|---|
brandId | string | Yes | Ocoya brand id from ocoya_list_brands. |
postGroupId | string | Yes | Ocoya post group id of an SEO post. |
title | string | No | The headline. Every channel’s title follows it. |
body | string | No | The post in Markdown. |
slug | string | No | URL slug. Defaults to one made from the title. |
excerpt | string | No | Short summary for blog lists. Defaults to the meta description. |
seoTitle | string | No | Title for search results. Defaults to the title. |
metaDescription | string | No | Search results summary, ideally 120-160 characters. Drafted from the introduction when not given. |
keyword | string | No | The search phrase the post targets. The SEO score checks against it and the brand’s keywords. |
tags | string[] | No | Up to 10 tags. |
channelIds | string[] | No | Blog or site channel ids from ocoya_list_channels: WordPress, DEV, Notion, Webflow, Framer, Wix or Webhook. Social channels are refused. |
cms | object | No | Per-CMS settings, used when the post has a channel on that CMS. Each is live unless set. WordPress and DEV always publish live. |
addChannelIds | string[] | No | Channel ids to append without removing channels already attached. |
thumbnail | object or null | No | A new cover image (exactly one of url, data or generate), or null to remove it. |
scheduledAt | string or null | No | ISO datetime to schedule the post, or null to make it unscheduled. |
publishNow | boolean | No | Publish the existing post immediately. |
Request example
{
"name": "ocoya_update_seo_post",
"arguments": {
"brandId": "cmayvq3hk00017apshay5qezu",
"postGroupId": "cmajvvb9q0003ja5vh0538j6r",
"channelIds": ["clh49poxf008x8kov4ncbjty9"],
"scheduledAt": "2026-07-01T09:00:00Z"
}
}Returns
Returns postGroupId, status and scheduledAt. This tool changes or removes existing content, and can reach your connected networks.