Checks a blog, job board or news feed you follow every six hours and turns each new item into a Trello card, never the same one twice.

UsesClaudeGoogle SheetsTrello

Turn new posts from a site you follow into Trello cards

Every six hours, the feed you follow is fetched, whether a release feed, a job board, a regulator's notices or a blog, and each new item becomes one Trello card on the board and list you name. The card carries the item's own title and link and nothing else.

You end up with a list that fills itself with what is new, once and only once. Every title and link the AI picks out is checked back against the feed word for word, and anything not found there is dropped and counted, so no card is ever made from an invented headline. Each item carded is logged to a tab in your spreadsheet, and that log is read before any card is made. If the log cannot be read, the run stops without creating anything rather than recreating the whole feed.

Before the first run you need the feed address, a Trello board and list named exactly as they appear in Trello, and a spreadsheet with a log tab that has a column headed 'Link'.

ScheduleRun every 6 hours.Run every 6 hours.
ValuesSet feedUrl to blank.Set feedUrl to blank.
ValuesSet trelloBoardName to blank.Set trelloBoardName to blank.
ValuesSet trelloListName to blank.Set trelloListName to blank.
ValuesSet logSpreadsheetUrl to blank.Set logSpreadsheetUrl to blank.
ValuesSet logTabName to Feed log.Set logTabName to Feed log.
ValuesSet maxCardsPerRun to 10.Set maxCardsPerRun to 10.
ValuesSet feedText to blank.Set feedText to blank.
ValuesSet feedReached to false.Set feedReached to false.
ValuesSet failureNote to blank.Set failureNote to blank.
Decisions & LoopsIf a step below fails, save the error as fetchErrorIf a step below fails, save the error as fetchError
Try
HTTPFetch feedUrl and save it as response.Fetch feedUrl and save it as response.
ValuesChange feedReached to response.ok.Change feedReached to response.ok.
TextTrim response.body and save it as feedText.Trim response.body and save it as feedText.
On error
TextReplace feedUrl with the feed address in fetchError.message and save it as failureNote.Replace feedUrl with the feed address in fetchError.message and save it as failureNote.
Decisions & LoopsIf failureNote contains :// (ignoring case)If failureNote contains :// (ignoring case)
Yes
ValuesChange failureNote to it could not be reached.Change failureNote to it could not be reached.
No
No steps
ListsGet the first item of feedUrl with https:// replaced by with http:// replaced by split by / and save it as feedHost.Get the first item of feedUrl with https:// replaced by with http:// replaced by split by / and save it as feedHost.
Decisions & LoopsIf feedReached is no or feedText is emptyIf feedReached is no or feedText is empty
Yes
Decisions & LoopsStop and report a problem: Nothing could be read from the feed at feedHost. failureNote.Stop and report a problem: Nothing could be read from the feed at feedHost. failureNote.
No
No steps
TrelloTrelloList your boards. Save it as boards.List your boards. Save it as boards.
ValuesSet trelloBoardId to blank.Set trelloBoardId to blank.
Decisions & LoopsFor each board in boards.boards:For each board in boards.boards:
Decisions & LoopsIf board.name is trelloBoardNameIf board.name is trelloBoardName
Yes
TextTrim board.id and save it as trelloBoardId.Trim board.id and save it as trelloBoardId.
No
No steps
Decisions & LoopsIf trelloBoardId is emptyIf trelloBoardId is empty
Yes
Decisions & LoopsStop and report a problem: No Trello board is named exactly '@trelloBoardName'. Check the 'trelloBoardName' step against the board's name in Trello.Stop and report a problem: No Trello board is named exactly '@trelloBoardName'. Check the 'trelloBoardName' step against the board's name in Trello.
No
No steps
TrelloTrelloList the lists on trelloBoardId. Save it as lists.List the lists on trelloBoardId. Save it as lists.
ValuesSet trelloListId to blank.Set trelloListId to blank.
Decisions & LoopsFor each boardList in lists.lists:For each boardList in lists.lists:
Decisions & LoopsIf boardList.name is trelloListNameIf boardList.name is trelloListName
Yes
TextTrim boardList.id and save it as trelloListId.Trim boardList.id and save it as trelloListId.
No
No steps
Decisions & LoopsIf trelloListId is emptyIf trelloListId is empty
Yes
Decisions & LoopsStop and report a problem: The board '@trelloBoardName' has no list named exactly '@trelloListName'. Check the 'trelloListName' step.Stop and report a problem: The board '@trelloBoardName' has no list named exactly '@trelloListName'. Check the 'trelloListName' step.
No
No steps
ValuesSet loggedLinks to an empty list.Set loggedLinks to an empty list.
ValuesSet logReadable to false.Set logReadable to false.
Decisions & LoopsIf a step below fails, save the error as logErrorIf a step below fails, save the error as logError
Try
Google SheetsGoogle SheetsRead the rows of logSpreadsheetUrl. Save it as log.Read the rows of logSpreadsheetUrl. Save it as log.
ValuesChange logReadable to true.Change logReadable to true.
Decisions & LoopsFor each logRow in log.rows:For each logRow in log.rows:
Text Trim logRow.Link and save it as loggedLink. Trim logRow.Link and save it as loggedLink.
Decisions & Loops If loggedLink isn't empty If loggedLink isn't empty
Yes
ListsAdd loggedLink to the end of loggedLinks and save it as loggedLinks.Add loggedLink to the end of loggedLinks and save it as loggedLinks.
No
No steps
On error
ValuesShow in the output: The log tab could not be read, so no cards were made this run..Show in the output: The log tab could not be read, so no cards were made this run..
Decisions & LoopsIf logReadable is noIf logReadable is no
Yes
Decisions & LoopsStop and report a problem: The log tab '@logTabName' could not be read, so there is no way to tell which items have already been carded. Create that tab with a column headed Link and run it again. No cards were made.Stop and report a problem: The log tab '@logTabName' could not be read, so there is no way to tell which items have already been carded. Create that tab with a column headed Link and run it again. No cards were made.
No
No steps
ValuesSet prompt to The text below is the raw source of a feed. List the newest items in it, one per line, as: title ||| linkSet prompt to The text below is the raw source of a feed. List the newest items in it, one per line, as: title ||| link Copy the title and the link exactly as they appear in the text. Do not invent, complete, tidy or translate either of them, and do not add items that are not in the text. If the text holds no items at all, reply with the single word NONE. Feed source: feedText truncated to 6000 characters.
ValuesSet answerText to blank.Set answerText to blank.
Decisions & LoopsIf a step below fails, save the error as readItemsErrorIf a step below fails, save the error as readItemsError
Try
TextTrim the response text from the Claude “Ask Claude” step and save it as answerText.Trim the response text from the Claude “Ask Claude” step and save it as answerText.
On error
ValuesShow in the output: The step that lists the feed's items did not answer this run..Show in the output: The step that lists the feed's items did not answer this run..
Decisions & LoopsIf answerText is emptyIf answerText is empty
Yes
Decisions & LoopsStop and report a problem: The step that lists the items in the feed at feedHost did not answer this run, so no cards were made.Stop and report a problem: The step that lists the items in the feed at feedHost did not answer this run, so no cards were made.
No
No steps
ValuesSet cardsCreated to 0.Set cardsCreated to 0.
ValuesSet itemsRejected to 0.Set itemsRejected to 0.
Decisions & LoopsFor each answerLine in answerText split by a new line:For each answerLine in answerText split by a new line:
TextTrim answerLine and save it as entry.Trim answerLine and save it as entry.
Decisions & LoopsIf entry is emptyIf entry is empty
Yes
Decisions & LoopsSkip to the next item.Skip to the next item.
No
No steps
Decisions & LoopsIf cardsCreated is greater than or equal to maxCardsPerRun multiplied by 1If cardsCreated is greater than or equal to maxCardsPerRun multiplied by 1
Yes
Decisions & LoopsStop repeating.Stop repeating.
No
No steps
TextSplit entry by ||| and save it as parts.Split entry by ||| and save it as parts.
Decisions & LoopsIf the length of parts is less than 2If the length of parts is less than 2
Yes
Decisions & LoopsSkip to the next item.Skip to the next item.
No
No steps
TextTrim the first item of parts and save it as itemTitle.Trim the first item of parts and save it as itemTitle.
TextTrim the last item of parts and save it as itemLink.Trim the last item of parts and save it as itemLink.
Decisions & LoopsIf itemTitle is empty or itemLink is emptyIf itemTitle is empty or itemLink is empty
Yes
Decisions & LoopsSkip to the next item.Skip to the next item.
No
No steps
Decisions & LoopsIf itemLink doesn't start with http (ignoring case)If itemLink doesn't start with http (ignoring case)
Yes
ValuesAdd 1 to itemsRejected.Add 1 to itemsRejected.
Decisions & LoopsSkip to the next item.Skip to the next item.
No
No steps
Decisions & LoopsIf feedText doesn't contain itemTitle (ignoring case) or feedText doesn't…If feedText doesn't contain itemTitle (ignoring case) or feedText doesn't…
Yes
ValuesAdd 1 to itemsRejected.Add 1 to itemsRejected.
Decisions & LoopsSkip to the next item.Skip to the next item.
No
No steps
Decisions & LoopsIf loggedLinks contains itemLinkIf loggedLinks contains itemLink
Yes
Decisions & LoopsSkip to the next item.Skip to the next item.
No
No steps
TrelloTrelloAdd the card '@itemTitle truncated to 240 characters' to trelloListId. Save it as createdCard.Add the card '@itemTitle truncated to 240 characters' to trelloListId. Save it as createdCard.From the feed you follow. itemLink
TextTrim createdCard.card.url and save it as cardUrl.Trim createdCard.card.url and save it as cardUrl.
Google SheetsGoogle SheetsAdd a row to logTabName in logSpreadsheetUrl.Add a row to logTabName in logSpreadsheetUrl.
ListsAdd itemLink to the end of loggedLinks and save it as loggedLinks.Add itemLink to the end of loggedLinks and save it as loggedLinks.
ValuesAdd 1 to cardsCreated.Add 1 to cardsCreated.
ValuesShow in the output: Made cardsCreated card(s). itemsRejected suggested item(s) were dropped because they were not in the feed word for word.Show in the output: Made cardsCreated card(s). itemsRejected suggested item(s) were dropped because they were not in the feed word for word.