Rewrites
Rewrites let you take an existing blog post and transform it using your brand context and writing instructions, producing a fresh version that matches your tone, style, and guidelines.
What is a rewrite?
A rewrite takes existing content (markdown) and runs it through the Wonderblogs writer/evaluator pipeline. The AI writer is free to restructure the content: changing headings, reordering sections, adding or removing material, while preserving the core message, facts, and insights from the original.
How to trigger a rewrite
There are three ways to start a rewrite:
1. From the dashboard: Rewrite button
On any published or ready-to-push post, click the Rewrite button. This creates a new run that rewrites the post's content. The original post remains unchanged, and a new version is created with a link back to the original.
2. From the dashboard: Paste content
On the Runs page, click Run Now and switch to the Rewrite Existing tab. Paste the markdown content you want to rewrite (minimum 100 characters, maximum 30,000) and click Start Rewrite.
3. Via the API
Send a POST request to /api/v1/posts/rewrite with the existing content in the request body. You can optionally pass language to override the site's default language for the rewritten post. See the API documentation for full details.
What steps run during a rewrite?
Rewrites follow a reduced pipeline compared to new post generation:
- Context Sync: Same brand context and writing instructions as for new posts.
- Uniqueness: Skipped. The topic is defined by the existing content.
- Research: Optional. Only runs if you explicitly request it (default: off). When triggered via the API, set
research: true. - Writer / Evaluator: The writer rewrites the content based on your brand guidelines. The evaluator checks quality, and the loop runs up to
maxAttemptstimes. - SEO & Tags: Fresh metadata is generated. If you provide an
existing_slugvia the API, it will be preserved. - Cover Image: Skipped. Use the Image API separately if you need a new cover image.
- Publish: Same webhook delivery as new posts. The publish payload includes
action: "update"and yourexternal_idfor matching.
How does the consumer identify the updated post?
When using the API, you can provide an external_id, your internal identifier for the post being rewritten. This ID is echoed back in the publish webhook payload as externalId, along with action: "update", so your system knows this is an update to an existing post rather than a new one.
Billing
Rewrites count as regular blog post units toward your monthly blog post limit. There is no separate quota for rewrites.
Limitations
- No image generation during rewrites
- No uniqueness refinement (the topic comes from the existing content)
- Content must be between 100 and 30,000 characters
- HTML in the input is automatically stripped