Task: Get data from Hacker News and send to Airtable or via SMS

n8n workflow JSON:
{"id":"7","name":"Daily Language Learning","nodes":[{"name":"Daily trigger","type":"n8n-nodes-base.cron","position":[620,750],"parameters":{"triggerTimes":{"item":[{"hour":8}]}},"typeVersion":1},{"name":"Get top 3 articles","type":"n8n-nodes-base.hackerNews","position":[820,750],"parameters":{"limit":3,"resource":"all","additionalFields":{"tags":["front_page"]}},"typeVersion":1},{"name":"Extract words","type":"n8n-nodes-base.function","position":[1020,750],"parameters":{"functionCode":"const words = [];\nconst regex = /\\d/g;\nconst newItems = [];\n\n// Splits titles into words and removes numbers\n// using regular expressions\n\nfor(let i=0; i < items.length; i++) {\n  let split_titles = []; \n  split_titles = items[i].json.title.split(' ');\n  for(let j=0; j < split_titles.length; j++) {\n    if(regex.test(split_titles[j])) {\n      continue;\n    } else {\n      words.push(split_titles[j]);\n    }\n  }\n}\n\n// Removes all duplicate words by converting the\n// array into a set and then back into an array\n\nconst uniqueWords = [...new Set(words)];\n\n// Transform the array to the data structure expected\n// by n8n\n\nfor(let k=0; k < uniqueWords.length; k++) {\n  newItems.push({json: { words: uniqueWords[k] }});\n}\n\nreturn newItems;"},"typeVersion":1},{"name":"Translate","type":"n8n-nodes-base.lingvaNex","position":[1220,750],"parameters":{"text":"={{$node[\"Extract words\"].json[\"words\"]}}","options":{},"translateTo":"de_DE"},"credentials":{"lingvaNexApi":"LingvaNex"},"typeVersion":1},{"name":"Filter data ","type":"n8n-nodes-base.set","position":[1420,750],"parameters":{"values":{"string":[{"name":"English word","value":"={{$node[\"Translate\"].json[\"source\"]}}"},{"name":"Translated word","value":"={{$node[\"Translate\"].json[\"result\"]}}"}]},"options":{},"keepOnlySet":true},"typeVersion":1},{"name":"Save today's words","type":"n8n-nodes-base.airtable","position":[1620,850],"parameters":{"table":"Table 1","options":{},"operation":"append","application":"app4Y6qcCHIO1cYNB"},"credentials":{"airtableApi":"Airtable"},"typeVersion":1},{"name":"Craft message","type":"n8n-nodes-base.function","position":[1620,650],"parameters":{"functionCode":"const number_of_words = 5;\nconst words = [];\n\n// Crafts the words to be sent in en_word : translated_word format\n// and adds them to an array\n\nfor(let i=0; i < number_of_words; i++) {\n  words.push(items[i].json['English word'] + ' : ' + items[i].json['Translated word']);\n}\n\n// Takes all the items from the array and converts them into a comma\n// separated string\n\nconst words_of_the_day = words.join(', ');\n\nreturn [{json: {words_of_the_day: words_of_the_day}}];"},"typeVersion":1},{"name":"Send SMS","type":"n8n-nodes-base.vonage","position":[1820,650],"parameters":{"to":"+4915225152610","from":"Vonage APIs","message":"=Good morning, here are your words for today\n{{$node[\"Craft message\"].json[\"words_of_the_day\"]}}","additionalFields":{}},"credentials":{"vonageApi":"Vonage"},"typeVersion":1}],"active":false,"settings":{},"connections":{"Translate":{"main":[[{"node":"Filter data ","type":"main","index":0}]]},"Filter data ":{"main":[[{"node":"Craft message","type":"main","index":0},{"node":"Save today's words","type":"main","index":0}]]},"Craft message":{"main":[[{"node":"Send SMS","type":"main","index":0}]]},"Daily trigger":{"main":[[{"node":"Get top 3 articles","type":"main","index":0}]]},"Extract words":{"main":[[{"node":"Translate","type":"main","index":0}]]},"Get top 3 articles":{"main":[[{"node":"Extract words","type":"main","index":0}]]}}}