bolta-platform-tailoring
Set per-platform options on a Bolta post — polls, flair, titles, privacy, boards.
Skill by boltaai
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/boltaai-bolta-platform-tailoring
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/bolta-platform-tailoring
What's inside
- Skill name
bolta-platform-tailoring- Description
- Set per-platform options on a Bolta post — polls, flair, titles, privacy, boards. Use this skill when the user asks to "add a poll to the Threads post", "set the Reddit flair", "set the YouTube title and privacy", "add Pinterest board and link", "pick TikTok privacy", "add a poll to the X post", or otherwise wants platform-specific fields beyond plain text and media. Covers X, Threads, LinkedIn, Facebook, Instagram, Bluesky, Mastodon, Discord, Reddit, TikTok, Pinterest, YouTube, and WordPress.
- License
- MIT
- Instructions
- 110 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Bolta — Platform Tailoring
Add the platform-specific extras a post needs: a poll, a subreddit flair and title, a video
privacy setting, a Pinterest board, a YouTube title. Threads polls have a dedicated `poll`
param on `create-post`; everything else — including X polls — goes through the
platform-details tools.
## When to use
The user wants fields that are specific to one platform — not just text (bolta-draft-post) or
media (bolta-post-media).
## Tools this skill uses
| Tool | Why |
|-|-|
| `list-workspaces` | Resolve `workspace_id` if unknown. |
| `get-post` | Read the current post before editing per-platform details. |
| `create-post` | Create ONE post; supports a `poll` object at creation (Threads only). |
| `bulk-create-posts` | Create MORE THAN ONE post in a single call — see below. |
| `get-post-platform-details` | Read current per-platform fields for a post + platform. |
| `update-post-platform-details` | Set per-platform `fields` (poll, flair, title, privacy…). |
## Prerequisites
- `workspace_id` — resolve once via `list-workspaces`, reuse. Auth is automatic via the Bolta
connector's OAuth grant — never ask for an API key. Default new content to Draft; confirm
before publish/delete.
- The `post_id` for an existing post (or create one first).
- **One post → `create-post`. Two or more → `bulk-create-posts`.** Adapting an idea for
several platforms is the two-or-more case, so it starts with one `bulk-create-posts`
call and not a loop: looping `create-post` renders a separate card per post and the
user only ever sees one of them. Apply per-platform `fields` afterwards, per post.
(This skill is about the per-platform details; it is not a reason to create posts
one at a time.)
- The exact platform slug: one of `x`, `threads`, `linkedin`, `facebook`, `instagram`,
`bluesky`, `mastodon`, `discord`, `reddit`, `tiktok`, `pinterest`, `youtube`, `wordpress`.
## Critical: unknown keys are silently dropped
The server ignores any `fields` key it doesn't recognize and **still returns success**. A typo
(`privacy` instead of `privacy_level`) is a reported-success no-op — nothing saved, no error.
So after every `update-post-platform-details`, ALWAYS do a verify-read:
call `get-post-platform-details(post_id, platform)` and confirm each value you set actually
came back changed. If a value didn't stick, the key name was wrong — use the table below.
## Workflow
### Polls
- **Threads:** pass a `poll` object to `create-post`:
`poll = { "options": ["Ship it", "Wait"], "duration_minutes": 1440 }`.
- **X:** the `create-post` `poll` param does NOT work for X — the X publisher only reads
`XPostDetails.poll_options`, and nothing syncs the two. An X poll set via `create-post`
publishes as a plain tweet with no poll and no error. Route X polls through
`update-post-platform-details(post_id, "x", fields={"post_type": "POLL",
"poll_options": ["Yes", "No"], "poll_duration_minutes": 60})`. `post_type` must be
`"POLL"` or the options are ignored at publish time.
- **Mastodon:** `poll_options` (list) + `poll_expires_in` (seconds, not minutes) via
`update-post-platform-details`.
### Richer per-platform fields
1. Resolve `post_id` (create the post first if needed).
2. Read current values: `get-post-platform-details(post_id, platform)`.
3. Set values: `update-post-platform-details(post_id, platform, fields={...})`. `fields` is an
object of platform-specific keys — set only what you're changing. Use the exact key names
below; anything else is silently dropped.
4. Verify-read: `get-post-platform-details` again and compare against what you sent.
5. Confirm back what was set. Keep new content as a Draft unless the user asked to publish.
### Field names by platform (verified against the server)
| Platform | Fields |
|-|-|
| `x` | `post_type` (`TEXT`/`MEDIA`/`POLL`/`QUOTE`/`REPLY`/`THREAD`), `reply_settings` (`everyone`/`mentioned_users`/`followers`), `poll_options` (list of strings), `poll_duration_minutes`, `quoted_tweet_id`, `in_reply_to_tweet_id` |
| `threads` | `topic_tag`, `use_topic_tag`, `location_id`, `reply_control` (`everyone`/`mentioned`/`followers`), `is_ghost_post`, `is_spoiler_media` — poll goes via `create-post` |
| `linkedin` | `post_type`, `visibility` (`PUBLIC`/`CONNECTIONS`), `post_as_organization`, `selected_organization_id`, `enable_comments`, `enable_resharing` |
| `facebook` | `primary_page_id` (**required** on first-time creation), `post_type` (`TEXT`/`PHOTO`/`VIDEO`/`LINK`/`STORY`), `privacy` (`EVERYONE`/`FRIENDS`/…), `enable_comments`, `enable_sharing` |
| `instagram` | `content_type` (`FEED`/`REELS`/`STORY`), `media_type` (`IMAGE`/`VIDEO`/`CAROUSEL_ALBUM`), `caption`, `alt_text`, `location_id`, `user_tags`, `cover_url`, `thumbnail_offset` |
| `bluesky` | `languages` (BCP-47 list), `reply_settings` (`everyone`/`nobody`/`mentioned`), `include_facets` |
| `mastodon` | `visibility` (`public`/`unlisted`/`private`/`direct`), `sensitive`, `spoiler_text`, `language`, `poll_options`, `poll_expires_in` (seconds), `poll_multiple`, `poll_hide_totals` |
| `discord` | `selected_guild_id`, `selected_channel_id`, `embed_enabled`, `embed_title`, `embed_description`, `embed_color` (hex), `embed_footer` |
| `reddit` | `title`, `selected_subreddit_id` (**required** on first-time creation — a missing subreddit 400s), `flair_id`, `flair_text`, `nsfw`, `spoiler`, `sendreplies` |
| `tiktok` | `privacy_level` (`PUBLIC_TO_EVERYONE`/`MUTUAL_FOLLOW_FRIEND`/`FOLLOWER_OF_CREATOR`/`SELF_ONLY`), `disable_comments`, `disable_duet`, `disable_stitch` |
| `pinterest` | `board_id` (board **ID**, not name — a name string won't resolve), `title`, `description`, `alt_text`, `link`, `media_type` (`image`/`video`/`idea`) |
| `youtube` | `video_title`, `video_description`, `tags` (list), `category_id`, `privacy_status` (`public`/`private`/`unlisted`), `playlist_ids`, `made_for_kids`, `notify_subscribers`, `thumbnail_url` |
| `wordpress` | `title`, `status`, `excerpt`, `meta_title`, `meta_description`, `categories` (list), `tags` (list), `featured_media_id`, `format`, `sticky`, `comment_status` |
Note the naming traps: Reddit flair is `flair_id`/`flair_text` (not `flair`), TikTok is
`privacy_level` with the enum values above (not `privacy: "public"`), YouTube is
`video_title`/`privacy_status` (not `title`/`privacy`), Pinterest takes a `board_id` FK
(not a board name). When in doubt, call `get-post-platform-details` first and mirror the
key names it returns — don't invent field names.
## Failure handling
- Unknown platform slug → confirm the exact platform; only the 13 listed above are valid.
- Verify-read shows a value didn't stick → the key was silently dropped; fix the key name
from the table above and resend.
- Required-relation 400 (Reddit `selected_subreddit_id`, Facebook `primary_page_id`) → the
first-time save needs that ID; look it up before creating details.
- Poll with fewer than 2 options or an invalid duration → fix before sending.
- Setting details on a post not connected to that platform → the post's `account_ids` must include
an account for that platform; add it via bolta-draft-post/update first.
- Permission error → report the missing role/scope; leave the post as-is.
## Example
User: "Set the Reddit post's flair to Discussion and give it a title."
1. `list-workspaces` → workspace_id; resolve `post_id`.
2. `get-post-platform-details(post_id, "reddit")` → current values; note whether
`selected_subreddit_id` is already set (required on first-time creation).
3. `update-post-platform-details(post_id, "reddit", fields={"flair_text":"Discussion","title":"How we cut build times 40%"})`.
4. `get-post-platform-details(post_id, "reddit")` → confirm `flair_text` and `title` stuck.
5. "Reddit flair set to Discussion with that title. It's still a Draft — schedule or publish?"From boltaai/bolta-skills, MIT.
More from boltaai/bolta-skills
- 0.557score
cross-platform-engagement
boltaai
Run one outbound engagement pass across Threads, Bluesky, Mastodon, X and LinkedIn — discover conversations where discovery exists, read them, draft native…
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
reddit-engagement
boltaai
Find Reddit threads this brand can genuinely help with, read them, draft native replies, publish them after approval, and verify the canonical URL.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
social-publishing
boltaai
Write, schedule and publish the brand's own social content — one post or many, one platform or several.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
bolta-setup
boltaai
Get a Bolta workspace from zero to automation-ready, and recover from setup/entitlement errors.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
lucia-test
boltaai
The end-to-end acceptance run: understand the brand, inspect its presence, publish something useful, discover third-party conversations, reply to them, work…
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
analytics-review
boltaai
Read what actually happened — reach, engagement, follower movement, which posts worked — and say what to do about it.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
bolta-review-queue
boltaai
Work the Bolta review and approval queues.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
social-inbox
boltaai
Work the inbound side — comments and mentions on the brand's own content across every connected platform — and reply to them.
SkillBFreshness: B★ 2Claude Code +9 - 0.548score
wordpress-blog
boltaai
Research, write, visually art-direct, QA, and publish a genuinely high-quality long-form SEO article to the WordPress account connected through Bolta.
SkillBFreshness: B★ 2Claude Code +9 - 0.512score
brand-voice-enforce
boltaai
Transform and produce content in the brand's established voice.
SkillCFreshness: C★ 2Claude Code +9 - 0.512score
brand-voice-generate
boltaai
Synthesize a discovery report into a finished, enforceable Bolta Brand Voice Guideline.
SkillCFreshness: C★ 2Claude Code +9 - 0.507score
bolta-winners-to-ads
boltaai
Turn a brand's best organic posts into voice-true Meta ad creative.
SkillCFreshness: C★ 2Claude Code +9
Signals
- Stars
- 2
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Sep 1, 2026 (1 month ago)
- Last release
- Feb 16, 2026 (8 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/boltaai/bolta-skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from boltaai
- 0.557score
reddit-engagement
boltaai
Find Reddit threads this brand can genuinely help with, read them, draft native replies, publish them after approval, and verify the canonical URL.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
social-publishing
boltaai
Write, schedule and publish the brand's own social content — one post or many, one platform or several.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
bolta-setup
boltaai
Get a Bolta workspace from zero to automation-ready, and recover from setup/entitlement errors.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
lucia-test
boltaai
The end-to-end acceptance run: understand the brand, inspect its presence, publish something useful, discover third-party conversations, reply to them, work…
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
analytics-review
boltaai
Read what actually happened — reach, engagement, follower movement, which posts worked — and say what to do about it.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
bolta-review-queue
boltaai
Work the Bolta review and approval queues.
SkillBFreshness: B★ 2Claude Code +9
Cite this page
bolta-platform-tailoring skill. Agent Mart. https://agentmart.dev/skills/boltaai-bolta-platform-tailoring (last updated 2026-10-24)