Blog Post Pipeline
Content Creator Official v1.2.23End-to-end blog production: ideation, briefing, draft, editorial review, and SEO optimisation
by skrptiq
Sign in to import this skrpt into your workspace.
Sign inWhat's included 8 nodes
Blog Post Pipeline
End-to-end blog production: ideation, briefing, draft, editorial review, and SEO optimisation
SEO Optimisation
Analyses and improves content for search engine visibility
Topic Selection
Human gate — pauses for the user to select topics from the generated ideas
Analyse SEO
Analyses content against target keywords for search engine optimisation
Blog Post Draft
Writes a complete blog post from a content brief
Select Topics
Gate prompt — pauses for user to select topics from the generated ideas
SEO Guidelines
On-page SEO best practices and standards for content optimisation
Content Production Checklist
Step-by-step checklist for producing and publishing blog content
Requirements 1 service, 1 data type
- LLM Service
- pii
Security Passed
Detected
- Services: llm-service
- Permissions:
- Data Handling:
Version history 27 releases
GH#864 — remove the dead `review-editorially` prompt. It was declared but no workflow step invoked it (it only `derived_from` the uninvoked `editorial-review` skill), so it never ran — editorial review is already covered by the `language-polish` and `check-brief-compliance` tail steps. This is the C6 (uninvoked-node) true positive; removing it takes the catalogue-wide K-045 coherence run to zero findings, allowing `K045_ENFORCE` to flip so C6/C7 become a hard warning going forward. Content-only change to the bundle; the `editorial-review` / `editorial-style-guide` dependency pins are left in place (harmless, unflagged) pending any separate dependency-closure tidy.
GH#856 — repin the `dependencies:` lock to the current GH#845 published dep versions (the en-US wave republished every shared dep — brand-voice-guide/content-briefing/content-ideation/draft-blog-post/editorial-review/headline-writing/language-polish/llm-service 1.0.2→1.0.3, create-content-brief 1.0.3→1.0.4, polish-language/write-headlines 1.0.5→1.0.6 — without repinning this consumer, so the lock trailed and the e2e fixture went stale). No behaviour change: the K-045 `source`-slot data-flow migration already landed in v1.2.20 (the tail steps bind `source` explicitly via `from_step`), and every 1.0.x bump here is a pure American-English copy edit with no interface change — the workflow's explicit bindings resolve against the new dep versions unchanged (canonical scan clean). Regenerates a coherent e2e fixture (MANIFEST/package pins == `deps/` bundle versions) so the app flagship semantic e2e resolves and executes the real graph.
GH#844 — migrate the gate step from node-meta (`metadata.gate: true` in the skill) to the canonical execution-entry `gate: true` on the workflow step. Single source of truth; the engine + app read the execution entry. No behaviour change — `IsGate` is identical.
GH#781 / K-045 — fix the pipeline tail data-flow and repin dependencies. The tail chained on positional `{{steps.previous.output}}`, so with headline-writing sitting between draft and polish, language-polish (and SEO/compliance) operated on the HEADLINES, not the article. Reordered to draft -> language-polish -> parallel[headline-writing, seo, compliance] and mapped each steps source EXPLICITLY: language-polish source from the draft; headline-writing / brief-compliance-check source from the polished post (via `from_step`); analyse-seo already referenced the polished output explicitly. The three shared tail prompts now expose a `source` slot (see their notes). Also repinned the `dependencies:` lock to the current published dep versions (closing a K-038 propagation gap where the lock trailed at 1.0.1). A supplied topic now flows to a polished ARTICLE at output_step.
GH#775 follow-up — restore `word_count` as a real, functional input. v1.2.18 dropped it (the app stopped offering it) on the assumption that binding it needed the shared `create-content-brief` prompt (K-038). That premise was wrong: it wires cleanly into the **local** `blog-post-draft` prompt. Declared `word_count` (optional) and bound it into the draft step — the draft now honours a supplied target length (falling back to the brief's recommendation when omitted). Also reconciled the whole skrpt's documentation with the actual inputs (topic required; target_audience/style_guidelines/word_count optional): the Inputs table, the stage descriptions, the Setup notes, and the Example Input block — clearing the earlier drift where the docs advertised inputs (industry niche, seed keywords, target length) that were never wired.
GH#775 — the pipeline never actually accepted a topic. Its inputs lived only in the prose Inputs table, never structurally declared where the engine reads them (a prompt `inputs:` block), so every step ran on static placeholders ("No subject supplied", "General professional audience"). Declared `topic` (required) plus optional `target_audience` and `style_guidelines`, then bound them into the step contexts they feed: content-ideation `content_context` ← `topic` (the first step, so a supplied topic drives ideation), content-briefing `target_audience` ← `target_audience`, draft-blog-post `voice_profile` ← `style_guidelines` / `audience_profile` ← `target_audience`, language-polish `voice_profile` ← `style_guidelines`, brief-compliance-check `audience_profile` ← `target_audience`. A supplied topic, audience, and style now flow through the whole pipeline. (`word_count`/length remains a deliberate deferral — binding it needs a shared-prompt change; it degrades to the default.)
GH#745 — declare per-step `output: {name, type}` on every execution step (`ideas`/list, `topic_selection`/text, `brief`/text, `draft`/text, `headlines`/list, `polished_post`/text, `seo_report`/text, `compliance_verdict`/decision). Lights up the #744 rich flow-map — steps now show named, typed outputs instead of the step-attributed fallback. Content-only; no bindings or logic changes.
GH#645 Row 3b — migrate to K-037 dep-referenced schema. Strip 15 inline shared-content files and declare 15 hub-shared deps (UUID id + slug name + version + checksum from `gen-dep-checksums.mjs`). Internal slug references rewritten for E2 rename/mirror-drop pair(s): blog-drafting→draft-blog-post. Closes pre-Step-3 inline-vendoring for this bundle.
Wave 2: re-signed with canonical engine signing pipeline.
Signature fix — RELEASE_NOTES.md now included in integrity checksum.
Initial catalogue release with full structural and content-quality validation. All scanner checks pass.
Release notes unavailable for this version.
Release notes unavailable for this version.
Release notes unavailable for this version.
Release notes unavailable for this version.
Release notes unavailable for this version.
Release notes unavailable for this version.
Release notes unavailable for this version.
Release notes unavailable for this version.
Release notes unavailable for this version.
Release notes unavailable for this version.
Release notes unavailable for this version.
Release notes unavailable for this version.
Release notes unavailable for this version.
Release notes unavailable for this version.
Release notes unavailable for this version.
Release notes unavailable for this version.
More from Content Creator
View all →Blog Refinement Loop
Write, review, and revise a blog post iteratively until it meets your quality criteria
Content Approval Pipeline
Draft content, pause for human review, then revise and polish based on your feedback
Creator Profile Builder
Analyze your content to build a reusable Voice Profile and Audience Profile — deep writing DNA, not surface labels