What is your goal?
Hi everyone, I’m a non-developer building an RSS → AI summarize → WordPress auto-posting scenario.
What I’m trying to do:
Pull articles via RSS, summarize them into JSON with Anthropic Claude, parse that JSON, and create a WordPress draft. The whole flow works now except the final JSON parsing step.
Module chain:
RSS → Data store (Search records, for dedup) → Anthropic Claude (summarize into JSON) → JSON (Parse JSON) → WordPress (Create a post)
My goal: I want a reliable way to strip the markdown code fences (json ... ) that Claude wraps around its output, so the JSON > Parse JSON module can read it without errors.
What is the problem & what have you tried?
The problem:
My Anthropic Claude module returns the summary as JSON, but it almost always wraps the output in a markdown code fence, like:
```json
{ "japanese_title": "...", "summary": "...", "category": "...", "tags": [...], "source": "..." }
```
When this goes into the JSON > Parse JSON module, I get:
DataError: Source is not valid JSON.
— because of the surrounding json and fences.
What I’ve already tried (and the result):
-
Prompt instruction — I told Claude explicitly not to add code fences and to output only raw JSON starting with {. → Claude still adds the fences sometimes. Not reliable.
-
replace() inside JSON string — I tried {{replace(replace(4.
Text Response; “json"; ""); "”; “”)}} to strip the fences. → The formula was accepted, but on run I got: BundleValidationError: Missing value of required parameter ‘json’ (the field ended up empty). I suspect the triple-backtick characters aren’t handled correctly in the formula. -
Assistant prefill — I added a second message (Role: Assistant) containing just { to force Claude to continue from there. → This time Claude returned an empty Text Response, so only { reached the JSON module → “Source is not valid JSON” again.
My question:
What is the most reliable way, inside Make, to strip the surrounding json ... code fences from an LLM’s text output before passing it to the JSON > Parse JSON module?
Is there a recommended approach using the Text parser module (Match pattern / regex) to extract just the { … } part? If so, what pattern should I use? Or is there a better way to handle backtick characters inside replace()?
Thank you very much — this is the last piece I need to finish the automation.
