Workflow review
ai_content_generator
Needs a human decision (3)
FlowGuard could not apply these fixes safely, so the fixed workflow leaves them unchanged.
Publish to WordPress· Remove credentials from the URL and configure an n8n HTTP Basic Auth credential; reference it via the 'Authentication' field of the HTTP Request node.Get Topics· Add a deduplication node using a unique topic ID, or store the last-processed row index in a persistent store and filter by it.Publish to WordPress· Add a human approval step (e.g. a Wait + webhook confirmation) between Generate Article and Publish to WordPress, or implement automated content validation before publishing.
| Severity | Category | Node | Issue and fix | Status |
|---|---|---|---|---|
| critical | security | Publish to WordPress | URL in parameter 'url' contains embedded credentials (user:pass@host); these are visible in plain text. Fix: Remove credentials from the URL and configure an n8n HTTP Basic Auth credential; reference it via the 'Authentication' field of the HTTP Request node. | Manual |
| high | cost | Generate Article | LLM node uses premium model 'gpt-4' and requests 8000 max tokens, which may incur significant API cost per run. Fix: Switch to gpt-4o-mini and cap maxTokens at 2000 or below. | Fixed |
| high | reliability | Generate Article | Node calls an external service (OpenAI) but has no retry configured; transient failures will break the workflow. Fix: Set retryOnFail: true, maxTries: 3, waitBetweenTries: 2000. | Fixed |
| high | reliability | Get Topics | Schedule trigger fetches all topics every day with no deduplication or timestamp filter, causing duplicate blog posts on every re-run. Fix: Add a deduplication node using a unique topic ID, or store the last-processed row index in a persistent store and filter by it. | Manual |
| high | reliability | Publish to WordPress | AI-generated blog content flows directly to publish without human approval, making irreversible changes based solely on LLM output. Fix: Add a human approval step (e.g. a Wait + webhook confirmation) between Generate Article and Publish to WordPress, or implement automated content validation before publishing. | Manual |
| medium | cost | Generate Cover Image | Image generation node uses quality 'hd', which costs significantly more than 'standard' per image. Fix: Change quality to 'standard' unless HD output is a hard requirement. | Fixed |
| medium | docs | (workflow) | The workflow has no sticky notes and no node notes; its purpose and context are undocumented. Fix: Add at least one sticky note describing the workflow's purpose, trigger, owner, and credentials needed. | Fixed |
Fixed workflow
flowchart LR
n0["Daily 7am"]
n1["Get Topics"]
n2["Generate Article"]
n3["Generate Cover Image"]
n4["Publish to WordPress"]
n0 --> n1
n1 --> n2
n2 --> n3
n3 --> n4
classDef red fill:#fdecea,color:#8a1c12,stroke:#d0402b,stroke-width:1.5px
classDef orange fill:#fdf0e3,color:#7a3a06,stroke:#d9731a,stroke-width:1.5px
classDef yellow fill:#fbf5dc,color:#5e4b05,stroke:#b8960f,stroke-width:1.5px
classDef blue fill:#e8f0fb,color:#153e75,stroke:#3d74c4,stroke-width:1.5px
classDef clean fill:#f6f7f9,color:#2b3139,stroke:#c3c8cf
class n0 clean
class n1 orange
class n2 orange
class n3 yellow
class n4 red