Save blog post
ps_save_blog_post
Writes a new blog post or edits an existing one.
TellMyShop Free: No. This tool is only in TellMyShop Pro. TellMyShop Free has only ready reports that read your store.
Ask Claude
„Fix the meta descriptions of the 5 blog posts flagged by the audit.”
Example preview
Post 8 "How to choose garden lamps", language en. meta_description: empty -> 152 characters. short_description: empty -> 210 characters. Status unchanged (published).
Technical details
Creates a new blog post (without post_id) or changes an existing one (with post_id): title (in SmartBlog also the meta title), HTML content, short description, meta description, keywords, categories. A NEW POST IS SAVED AS A DRAFT unless publish=true. The slug is set only when creating; to change the slug of an existing post use ps_change_url. The main image and tags are not set by this tool (do it in the blog's back office). Appears only when SmartBlog is installed and enabled.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| post_id | integer | no | ID of an existing post (empty = new post). |
| lang | string | when: shop has more than one active language | ISO code of the language you write in. Required when the shop has more than one active language. Claude writes the content in this language. |
| shop_id | integer | no | Shop ID in a multistore installation. Defaults to the shop in the connector address. IDs are listed by ps_get_shop_info. |
| title | string | when: new post (no post_id) | Title (also the meta title). Max 150 characters. |
| content | string (HTML) | no | Content (HTML: p, h2, h3, ul/li, strong, a). Max 300,000 characters. |
| short_description | string | no | Short description (shown in the post list). Max 450 characters. |
| meta_description | string | no | Meta description (recommended 120–160 characters). Max 450 characters. |
| meta_keywords | string | no | Keywords (comma separated). Max 200 characters. |
| slug | string | no | New post only: URL slug (SmartBlog: max 45 characters). |
| category_ids | array of integer | when: new post (no post_id) | Blog categories (ps_list_blog_categories); they replace the current ones. Required for a new post. Max 10 items. |
| publish | boolean | no | true = publish, false = draft. A new post is a draft by default; an existing post keeps its status. |
| confirm | boolean | no | false (default) returns a preview and saves nothing. true executes, only after the user approved the preview, together with change_token. |
| change_token | string | when: confirm=true | Token from the preview. Required with confirm=true. Valid 30 minutes, single use, bound to the previewed arguments and data state. |
Limits
Requires SmartBlog. One post and one language per call. New post needs title and category_ids. Slug only for a new post, max 45 characters in SmartBlog. Revertible with ps_revert_change.
What you see before anything is saved
Claude first calls the tool without confirming it. The module returns a preview (current and new values) and a single-use token valid for 30 minutes. Claude shows you the preview and saves the change only after your yes.
Related tools
- List blog posts ps_list_blog_posts
- Get blog post ps_get_blog_post
- SEO audit ps_audit_seo
- Change URL (slug) ps_change_url
- Revert change ps_revert_change
Use cases with this tool
Last updated: 2026-10-11