Postking landing pages
Skill bitsandtea/postking-skills/skills/postking-landing-pages
Teach any AI agent to run your content marketing. Open-source skill for PostKing - generate posts, plan content weeks, ship blog articles, build landing pages - installable in Hermes, Claude, and Codex.
npx -y skills add bitsandtea/postking-skills --skill postking-landing-pagesAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Generate, edit, vibe-edit, and publish landing pages on PostKing, including side pages (comparison/text/landing sub-pages) and custom domains — for product launches, campaigns, and standalone marketing pages.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
7.8 KB, as published. Nobody here has run it
PostKing Landing Pages
Handles the landing-page lifecycle on PostKing: AI generation, targeted or full AI ("vibe") edits, side pages under a parent page, custom domains, and publishing. Requires an active brand — use the postking skill's brand-pick flow first if one isn't set.
When to Use
Use this skill when the user wants to generate a new landing page, edit or AI-rewrite one, add or edit a side page (a comparison, text, or landing-style sub-page under a parent LP), attach a custom domain, or publish/preview a page.
When NOT to Use
- Social posts or content weeks →
postking-social. - Blog articles →
postking-blog. - The SEO/GEO roadmap pipeline that decides what pages to brief (seeds → keywords → clusters → roadmap items) →
postking-seo. This skill covers generating and editing the pages themselves, including side pages fed by a roadmap brief. - Saved voice profile management or a standalone de-slop pass →
postking-brand-voice. - No active brand yet →
postking-getting-started.
Minimal tool subset
list_landing_pages,generate_landing_page,view_landing_page,get_job— create and inspect.edit_landing_page,set_landing_page,regenerate_landing_page,vibe_edit_landing_page,get_vibe_edit_status— editing.list_side_pages,generate_side_page,view_side_page,edit_side_page,set_side_page_section,set_side_page_state— side pages.add_domain,verify_domain,list_domains— custom domains (partial support — see Pitfalls).publish_landing_page,delete_landing_page— publish/lifecycle.
Procedure
Generate and publish a landing page
generate_landing_page({ brandId, topic, slug? })— async; creates the LP record and kicks off AI content generation. Returns{ slug, operationId, pollUrl }. Poll withget_job({ pollUrl: operationId, brandId, wait: true })untilstateiscompleted(orfailed/partially_failed/cancelled).view_landing_page({ slug })— preview the generated content.publish_landing_page({ slug })— free-tier choke point. Surface the returnedwebUrlto the user.
Edit a landing page
- Targeted metadata/instructions patch:
edit_landing_page({ slug, title?, instructions? }). - Manual overwrite (no AI):
set_landing_page({ slug, title?, content?, metadata? })— versioned; returns aversionId. - Full AI regeneration pass, optionally scoped to specific sections:
regenerate_landing_page({ slug, voiceProfileId?, instructions?, sections? }). - Natural-language AI edit ("vibe edit"):
vibe_edit_landing_page({ slug, instructions, scope?, sectionId? })—scopeis"headline" | "cta" | "full". Pollget_vibe_edit_status({ slug, operationId })(orget_job) until done.
Side pages
list_side_pages({ slug })— see what already exists under a parent landing page.generate_side_page({ slug, key, prompt?, brief?, keywords?, sidePageType? })—keyis the required URL-slug fragment for the side page.sidePageTypeis"landing" | "text" | "comparison"(defaults to"landing") — there is notypeparam, and"comparison"requires a persistedbriefId. Async for most cases (returnsoperationId); some comparison briefs run synchronously and returnsidePageIddirectly with nooperationId. Pollget_jobwhen anoperationIdis returned.view_side_page({ slug, sideKey })— inspect content and rendered HTML.edit_side_page({ slug, sideKey, instructions? })for page-level instructions, orset_side_page_section({ slug, sideKey, sectionId, content?, instructions? })for a single section.set_side_page_state({ slug, sideKey, published })— publish or unpublish it.
Custom domain (partial support)
add_domain({ domain, primaryContentType: "landing_page", brandId? })— registers the domain and returns a DNS TXT record to add at the registrar.verify_domain({ domainId })— checks DNS once the record is added;domainIdcomes from theadd_domainresponse orlist_domains.- There is currently no MCP or CLI tool to connect a verified domain to a specific landing page.
connect_domain_to_publicationonly attaches a domain to a blog publication (it takes apublicationId, not a landing-page slug) — using it for a landing page is a no-op/wrong target, not a substitute. Tell the user to finish the connection from the landing page's own settings in the PostKing dashboard.
CLI fast path
| Goal | Command |
|---|---|
| List / generate | pking lp list / pking lp generate --topic "..." [--slug <slug>] [--voice <id>] |
| View / preview | pking lp view <slug> |
| Edit (metadata or AI pass) | pking lp edit <slug> [--title "..."] [--instructions "..."] |
| Vibe edit | pking lp vibe <slug> --instructions "..." [--scope full|section --section-id <id>] --wait then pking lp vibe status <slug> <operationId> |
| Side pages | pking lp side list <slug> / pking lp side edit <slug> <sideKey> --instructions "..." — generation is currently MCP-only, see Pitfalls |
| Side page section | `pking lp side section <slug> <sideKey> --id <sectionId> [--content "..." |
| Publish / unpublish a side page | pking lp side state <slug> <sideKey> --publish (or --unpublish) |
| Custom domain (register + verify only) | pking domains add <domain> → pking domains verify <domain> |
| Publish the landing page | pking lp publish <slug> |
For the full command catalog, use the postking skill's references/commands.md, or run pking lp --help.
Pitfalls
generate_side_pagehas notypeparam — it'ssidePageType, and the only valid values are"landing","text","comparison". Don't invent other values (e.g. "pricing", "features", "legal") assidePageType— those aren't recognized side-page types by this tool.keyis required ongenerate_side_page— it's the side page's URL-slug fragment, not optional metadata.pking lp side generate <slug> --type <type>is currently broken — the inner route ignores the<slug>path param and requiresname/slug/landingPageIdin the request body, so it always 400s. Use the MCP toolgenerate_side_page({ slug, key, sidePageType })instead.- Custom domains for landing pages stop short of dashboard-only. Registering (
add_domain) and verifying (verify_domain) work via MCP/CLI, but attaching the verified domain to a specific landing page does not — don't tell the userconnect_domain_to_publicationwill do it; that tool is blog-only. pking domains connect <id> --target lp:<slug>is not a working command — the CLI accepts the flag but the endpoint it calls does not exist on the server; don't suggest it.- Async operations can take 30s–5min. Poll
get_job(or the CLI's built-in--wait) rather than assuming failure early. - Comparison-type side pages may return synchronously with
sidePageIdand nooperationId— don't pollget_jobwith an ID you don't have; check the immediate response first.
Verification
get_credits({ detail: "short" })— confirms auth and balance.list_landing_pages({})— returns the brand's landing pages (or an empty list if none created yet, which is expected pre-setup).