Reading the execution node by node
The execution list only said success. Opening the run and stepping through it told the real story. The Groq node had returned a full script with an episode title, a description and a list of segments. The node after it, which parses that text, output a generic default title, no description text and an empty segments array. The Split Segments node after that output no items, and nothing later on the graph executed at all.
It wasn't truncation
The first instinct with broken LLM JSON is that the output was cut off, and the fix is a higher token limit. Here the response finished with finish_reason: stop and used about 1,200 of the 3,000 tokens allowed. The model finished its answer; it just wrote a syntax error partway through. Feeding the same text to a strict parser failed with a delimiter error near character 3,690. Raising the limit would have changed nothing.
Two behaviours that add up to a silent success
- The catch block. On any parse failure it replaced the result with a default title and
segments: [], a structure that looks valid and is empty. A different flavour of the same pattern is in the control-character article, where the fallback text was published live. - Zero items. When a node emits an empty list, n8n runs nothing after it and marks the execution successful. That is correct for a workflow that legitimately has nothing to do, and indistinguishable from a bug.
What I'd change
- Let the catch block fail the run: throw an error, or return an explicit failure flag that routes to a Telegram alert, instead of fabricating a plausible empty result.
- Add a guard right after parsing: if the segments list is empty, throw. A daily episode with no segments is never a valid outcome.
- Retry the LLM call once before giving up. A second sample usually returns valid JSON.
- Treat run duration as a signal. A run that normally takes around half an hour and finishes in 12 seconds is worth an alert on its own.
The publisher workflow two hours later found no ready episode and exited with a "no ready episode" message, which is also a success. Two workflows behaved correctly around a hole neither of them could see. For other ways a run can report success while doing nothing right, see four ways an n8n workflow can report success.
n8n Automation Hub