Skip to content

feat(blog): goal-driven keyword planning and article approval - #33

Merged
alihesari merged 4 commits into
mainfrom
feature/blog-planning-pipeline
Oct 18, 2026
Merged

alihesari merged 4 commits into
mainfrom
feature/blog-planning-pipeline

Conversation

@alihesari

@alihesari alihesari commented Oct 17, 2026 •

Copy link
Copy Markdown
Member

What changed

  • blog().suggestSeeds(workspaceId) and suggestSeeds(workspaceId, seeds, prompt) wrap POST /v1/blog/keywords/suggest (scope ai, 402 on an empty balance) and return the suggested terms.
  • blog().submitArticle(workspaceId, articleId) wraps POST /v1/blog/articles/{id}/submit (scope posts) and moves a draft, failed or rejected article to in_review.
  • BlogSettings gains goal, focusTopics, avoidTopics and planRun (new BlogPlanRun record); BlogParams.Settings gains goal, focusTopics, avoidTopics; new BlogGoal constants.
  • BlogKeyword.fitReason; BlogArticleStatus.IN_REVIEW.
  • Javadoc updated: planKeywords no longer fills the calendar, picking a keyword is status(PLANNED), publishing and publishAt need an article in review.
  • README blog section and CHANGELOG (Unreleased) updated. No version bump.

Breaking

autoPublish is removed from BlogSettings and BlogParams.Settings. Every article goes through submitArticle before it publishes. fopost-spring does not touch the blog surface, so no downstream PR is needed.

Matches the live contract

The blog resource now matches the deployed API exactly: the workspace goes on the query string as workspace_id, request bodies stay camelCase as the OpenAPI request schemas define them (workspaceId in the body), single objects are read bare and lists from {data}, and responses are read in snake_case (plan_run, keyword_data_available, website_secret, fit_reason, ...). BlogWebsiteTest.status is now httpStatus, read from http_status; a failed test still returns ok false. Test fixtures use the real wire format and assert the workspace_id query key.

Tested

mvn -B verify on JDK 21: 163 tests, 0 failures, BUILD SUCCESS (sources and javadoc jars included). New tests cover suggestSeeds (body, empty call, 402) and submitArticle (path, query, in_review, 409), plus the new settings and keyword fields.

API

The fopost/fopost feature/blog-planning-pipeline change is merged and deployed, so the new endpoints and fields are live.

@alihesari
alihesari merged commit a7e6156 into main Oct 18, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant