Parameters

NameTypeRequiredDescription
brandIdstringYesOcoya brand id from ocoya_list_brands.
titlestringYesThe headline.
bodystringYesThe post in Markdown, with ## headings. Do not repeat the title in it.
slugstringNoURL slug. Defaults to one made from the title.
excerptstringNoShort summary for blog lists. Defaults to the meta description.
seoTitlestringNoTitle for search results. Defaults to the title.
metaDescriptionstringNoSearch results summary, ideally 120-160 characters. Drafted from the introduction when not given.
keywordstringNoThe search phrase the post targets. The SEO score checks against it and the brand’s keywords.
tagsstring[]NoUp to 10 tags.
channelIdsstring[]NoBlog or site channel ids from ocoya_list_channels: WordPress, DEV, Notion, Webflow, Framer, Wix or Webhook. Social channels are refused.
cmsobjectNoPer-CMS settings, used when the post has a channel on that CMS. Each is live unless set. WordPress and DEV always publish live.
thumbnailobjectNoThe cover image above the post. Exactly one of url, data or generate.
scheduledAtstringNoOptional ISO datetime. Omit to save as draft.
publishNowbooleanNoPublish immediately through Ocoya scheduling. Needs the posts:publish scope.

Request example

{
  "name": "ocoya_create_seo_post",
  "arguments": {
    "brandId": "cmayvq3hk00017apshay5qezu",
    "title": "<title>",
    "body": "<body>",
    "channelIds": ["clh49poxf008x8kov4ncbjty9"],
    "scheduledAt": "2026-07-01T09:00:00Z"
  }
}

Returns

Returns postGroupId, status and scheduledAt. This tool creates content, which can reach your connected networks once it publishes.