Skip to main content
InspirationEditorPipelineSDKMCPCLI
One outlier score. A post’s outlier score is its performance divided by the median of the previous 20 posts in the same format on the same account, as of publication (the 20 nearest when fewer than 5 came before). Performance is views for anything that plays and likes plus comments for images, carousels and Threads posts. The score is computed in one place for every surface, so list_content, get_content and get_card always agree, and a creator’s typical post now scores about 1x in every format.One post, one record. An Instagram post reached through a connected account and through tracking is now the same post, keyed by its shortcode. Content ids are unchanged, except that 67 duplicate records were merged into the originals they copied.A project has a type. editor or canvas, on every project read and as the list_projects filter and create_project input (--type in the CLI). surface and kind are still accepted and returned, deprecated. The list_projects type filter is fixed: the SDK used to drop it. Placement results, the type catalogs and export formats carry projectType / projectTypes.Card assets name what they point at. get_card returns an inspiration post’s contentId and a linked project’s projectId, the same fields that attach them (assetId stays, deprecated), and prints a linked project’s id. An assets list that names the same thing twice is refused.Packages: sdk 0.4.16, mcp 0.4.21, cli 0.3.12.
PipelineSDKMCPCLI
Attach anything a card can hold. A card’s assets add one thing per entry by exactly one reference: outputId (media, whether generated, uploaded or imported), assetUrl (a link), contentId (an inspiration post, shown on the card’s Inspiration tab) or projectId (an editor or canvas project). get_card reads each back with the same id. An assetType of inspiration with a url is now refused, naming contentId, instead of being saved as a plain link. See What a card can hold.Link a project when you make it. create_project and import_project (and createProject / importProject, and project create|import --card) take a cardId: the new project is linked to that card in the same call. It also needs the planner:write scope.Stages are stages. list_stages is titled “List Stages”, and no tool text says “pipeline stage” anymore.Leaner full kit read. The full get_brand_kit read shows linked accounts by id, platform, name, handle and follower count, without avatar links.Packages: sdk 0.4.15, mcp 0.4.20, cli 0.3.11.
BrandSDKMCPCLI
Brand kits are Markdown sections. A brand kit is now a set of named sections (About, Audience, Offer, Content Strategy, Voice & Tone, Writing Style, Speaking Style, Design Guidelines), each one Markdown document with a version and history. getBrandKit reads a summary (each section’s outline and length), a filtered set by key, role or tab, or the whole kit. updateBrandKit({ sections }) writes only the sections it names, all or nothing, and a stale version returns a ConflictError carrying the current body. See Brand.Imports analyze every source. A kit’s websites are one list, websiteUrls, primary first. Extracting a kit starts two jobs: visuals from the first website, and an analysis of every website plus the kit’s own YouTube and Instagram accounts, which writes only empty sections. getBrandKit reports analysisStatus beside extractionStatus; createBrandKit({ extract }) and extractBrandKit return both jobs’ states.Breaking: the field model is gone. Removed: field types, templates and listBrandKitTemplates, load tiers, visualStyle and designPrinciples; in the CLI, --fields, --visual-style and --design-principle. Use sections instead.Packages: sdk 0.4.14, mcp 0.4.19, cli 0.3.10.
Skills
Agent skills released. The contenthero-ai/skills repo includes three installable skills: contenthero-generate, contenthero-pipeline (the hero), and contenthero-brand. They encode the workflows and our model-specific prompt craft, including grounded voice-synthesis. See Skills.Packages: skills 0.1.0.
BrandSDKMCPCLI
Brand knowledge base on the API. Search, list, get, add, and remove brand knowledge over /api/v1, MCP, and the CLI, with semantic retrieval and fileUrl ingestion for large files, video, and audio. Brand-kit-scoped inspiration reads via brand_kit_id.Packages: sdk 0.2.4, mcp 0.2.6, cli 0.1.4.
MCP
Hosted OAuth MCP, full surface. https://mcp.contenthero.ai serves the complete tool surface over OAuth, with a live model roster resolved from the registry. No key handling. See MCP.Packages: mcp 0.2.4.
CLI
CLI released. @contenthero/cli (contenthero) drives the full surface from a shell, with browser-assisted login, cost preflight, and non-blocking polling. See CLI.Packages: cli 0.1.0.
PipelineBrandInspiration
The execution surface. Posts (create, assemble, schedule, publish), brand-kit writes, inspiration and outlier reads, and connected-account reads land on /api/v1, MCP, and the SDK. New scope pipeline:write.Packages: sdk 0.2.2, mcp 0.2.2.
GenerateSDKMCP
Reference boards and parity. generate_board across the SDK and MCP, plus cost preflight (getCost), a standalone wait_for_generation, and get_generation_status.Packages: sdk 0.2.0, mcp 0.2.0.