[{"data":1,"prerenderedAt":432},["ShallowReactive",2],{"footer-primary":3,"footer-secondary":93,"footer-description":119,"ai-ai-text-intelligence":121,"ai-ai-text-intelligence-next":166,"sales-reps":180},{"items":4},[5,29,49,69],{"id":6,"title":7,"url":8,"page":8,"children":9},"522e608a-77b0-4333-820d-d4f44be2ade1","Solutions",null,[10,15,20,25],{"id":11,"title":12,"url":8,"page":13},"fcafe85a-a798-4710-9e7a-776fe413aae5","Headless CMS",{"permalink":14},"/solutions/headless-cms",{"id":16,"title":17,"url":8,"page":18},"79972923-93cf-4777-9e32-5c9b0315fc10","Backend-as-a-Service",{"permalink":19},"/solutions/backend-as-a-service",{"id":21,"title":22,"url":8,"page":23},"0fa8d0c1-7b64-4f6f-939d-d7fdb99fc407","Product Information",{"permalink":24},"/solutions/product-information-management",{"id":26,"title":27,"url":28,"page":8},"63946d54-6052-4780-8ff4-91f5a9931dcc","100+ Things to Build","https://directus.io/blog/100-tools-apps-and-platforms-you-can-build-with-directus",{"id":30,"title":31,"url":8,"page":8,"children":32},"8ab4f9b1-f3e2-44d6-919b-011d91fe072f","Resources",[33,37,41,45],{"id":34,"title":35,"url":36,"page":8},"f951fb84-8777-4b84-9e91-996fe9d25483","Documentation","https://docs.directus.io",{"id":38,"title":39,"url":40,"page":8},"366febc7-a538-4c08-a326-e6204957f1e3","Guides","https://docs.directus.io/guides/",{"id":42,"title":43,"url":44,"page":8},"aeb9128e-1c5f-417f-863c-2449416433cd","Community","https://directus.chat",{"id":46,"title":47,"url":48,"page":8},"da1c2ed8-0a77-49b0-a903-49c56cb07de5","Release Notes","https://github.com/directus/directus/releases",{"id":50,"title":51,"url":8,"page":8,"children":52},"d61fae8c-7502-494a-822f-19ecff3d0256","Support",[53,57,61,65],{"id":54,"title":55,"url":56,"page":8},"8c43c781-7ebd-475f-a931-747e293c0a88","Issue Tracker","https://github.com/directus/directus/issues",{"id":58,"title":59,"url":60,"page":8},"d77bb78e-cf7b-4e01-932a-514414ba49d3","Feature Requests","https://github.com/directus/directus/discussions?discussions_q=is:open+sort:top",{"id":62,"title":63,"url":64,"page":8},"4346be2b-2c53-476e-b53b-becacec626a6","Community Chat","https://discord.com/channels/725371605378924594/741317677397704757",{"id":66,"title":67,"url":68,"page":8},"26c115d2-49f7-4edc-935e-d37d427fb89d","Cloud Dashboard","https://directus.cloud",{"id":70,"title":71,"url":8,"page":8,"children":72},"49141403-4f20-44ac-8453-25ace1265812","Organization",[73,78,84,88],{"id":74,"title":75,"url":76,"page":77},"1f36ea92-8a5e-47c8-914c-9822a8b9538a","About","/about",{"permalink":76},{"id":79,"title":80,"url":81,"page":82},"b84bf525-5471-4b14-a93c-225f6c386005","Careers","#",{"permalink":83},"/careers",{"id":85,"title":86,"url":87,"page":8},"86aabc3a-433d-434b-9efa-ad1d34be0a34","Brand Assets","https://drive.google.com/drive/folders/1lBOTba4RaA5ikqOn8Ewo4RYzD0XcymG9?usp=sharing",{"id":89,"title":90,"url":8,"page":91},"8d2fa1e3-198e-4405-81e1-2ceb858bc237","Contact",{"permalink":92},"/contact",{"items":94},[95,101,107,113],{"id":96,"title":97,"url":8,"page":98,"children":100},"8a1b7bfa-429d-4ffc-a650-2a5fdcf356da","Cloud Policies",{"permalink":99},"/cloud-policies",[],{"id":102,"title":103,"url":81,"page":104,"children":106},"bea848ef-828f-4306-8017-6b00ec5d4a0c","License",{"permalink":105},"/bsl",[],{"id":108,"title":109,"url":81,"page":110,"children":112},"4e914f47-4bee-42b7-b445-3119ee4196ef","Terms",{"permalink":111},"/terms",[],{"id":114,"title":115,"url":81,"page":116,"children":118},"ea69eda6-d317-4981-8421-fcabb1826bfd","Privacy",{"permalink":117},"/privacy",[],{"description":120},"\u003Cp>A composable backend to build your Headless CMS, BaaS, and more.&nbsp;\u003C/p>",{"id":122,"slug":123,"vimeo_id":124,"description":125,"tile":126,"length":127,"resources":8,"people":8,"episode_number":128,"published":129,"title":130,"video_transcript_html":131,"video_transcript_text":132,"content":8,"status":133,"episode_people":134,"recommendations":146,"season":147,"seo":165},"3d978332-855b-4eb0-a878-b932e0f9d704","ai-text-intelligence","945762911","Analyze text intents, sentiment, topics, and generate a summary within with this custom operation, powered by Deepgram.","e9291721-20ad-4a6f-a6ea-e5158d7baf79",4,9,"2024-05-16","AI Text Intelligence","\u003Cp>Speaker 0: The Directus AI text intelligence operation allows you to analyze bodies of text and generate summaries, topics, intents, and sentiments powered by Deepgram. Today, I'm gonna show you how to set it up using a manual flow trigger. Inside of this episode's collection, we have items representing podcast episodes with a transcript of every word that is said inside of this podcast. What we're gonna do is set up a manual flow. So when we click a button here, it will generate a summary using the text intelligence operation.\u003C/p>\u003Cp>And, of course, we're gonna do it manually, but you could do this automatically on the creation of a new podcast or a new transcript, but we're gonna do it manually. So let's head over to our flows and create a new flow called summarise. We're gonna do this based on a manual trigger on the operations collection. Now whenever this runs, all we get is the ID of the item where the button was pressed. We obviously need the summary.\u003C/p>\u003Cp>We need the transcript rather. So the first thing we'll do is we will create a read data operation, and what we'll do is say in the episodes collection, we want to access trigger dot body dot keys 0. So this will return the whole object including the ID, the file ID, the transcript, and the currently empty summary field. So we're then gonna send this off to the AI text intelligence service here. And the first thing you'll need to pop in is a Deepgram API key.\u003C/p>\u003Cp>The second thing you need to put in is actually the text itself. Unfortunately, this will have been returned in the last operation, and it's called transcript. So we can just send that off like so. So this will go off. It will it will return summaries, topics, intents, and sentiments.\u003C/p>\u003Cp>And for topics intents and sentiments, it will kind of break that down for different portions of the text. And for sentiments, you'll also get a kind of average summary, which is really useful if you wanna say, you know, a call into your, you know, call center or a call with a prospect or something like that. What was the general sentiment from beginning to end? So as I said, this is gonna return quite a lot of data. We only care about the summary.\u003C/p>\u003Cp>And what we wanna do is actually save that summary back to the item where we clicked the button. So that was in episodes, and the ID was trigger dot body dot keys 0. And the payload, what we actually wanna update that item with is a summary field. So we wanna update the summary field, and we want the value of that to be last dot summary dot text, like so. So if we hit save, this is actually the whole operation, the whole, sorry, flow.\u003C/p>\u003Cp>So we click the button. We grab the whole item. We send it off to the text intelligence service, and then we save the outcome. Of course, you don't need to save it back to the item. You could simply send an email out or do something else with it, but we're gonna save it back to the item.\u003C/p>\u003Cp>And if all has worked, I should be able to click this summarize button, wait a few seconds. It's being summarized. Topics are being generated. Intents and sentiments, we're grabbing just the summary, and there we go. There's the summary.\u003C/p>\u003Cp>So I'm sure you can see all of the ways this can be applied. It's really flexible. It's really interesting. And, again, it's not just summaries. It's topics.\u003C/p>\u003Cp>It's intents, and it's sentiments. So I hope you found this interesting, and I'll see you in the next show.\u003C/p>","The Directus AI text intelligence operation allows you to analyze bodies of text and generate summaries, topics, intents, and sentiments powered by Deepgram. Today, I'm gonna show you how to set it up using a manual flow trigger. Inside of this episode's collection, we have items representing podcast episodes with a transcript of every word that is said inside of this podcast. What we're gonna do is set up a manual flow. So when we click a button here, it will generate a summary using the text intelligence operation. And, of course, we're gonna do it manually, but you could do this automatically on the creation of a new podcast or a new transcript, but we're gonna do it manually. So let's head over to our flows and create a new flow called summarise. We're gonna do this based on a manual trigger on the operations collection. Now whenever this runs, all we get is the ID of the item where the button was pressed. We obviously need the summary. We need the transcript rather. So the first thing we'll do is we will create a read data operation, and what we'll do is say in the episodes collection, we want to access trigger dot body dot keys 0. So this will return the whole object including the ID, the file ID, the transcript, and the currently empty summary field. So we're then gonna send this off to the AI text intelligence service here. And the first thing you'll need to pop in is a Deepgram API key. The second thing you need to put in is actually the text itself. Unfortunately, this will have been returned in the last operation, and it's called transcript. So we can just send that off like so. So this will go off. It will it will return summaries, topics, intents, and sentiments. And for topics intents and sentiments, it will kind of break that down for different portions of the text. And for sentiments, you'll also get a kind of average summary, which is really useful if you wanna say, you know, a call into your, you know, call center or a call with a prospect or something like that. What was the general sentiment from beginning to end? So as I said, this is gonna return quite a lot of data. We only care about the summary. And what we wanna do is actually save that summary back to the item where we clicked the button. So that was in episodes, and the ID was trigger dot body dot keys 0. And the payload, what we actually wanna update that item with is a summary field. So we wanna update the summary field, and we want the value of that to be last dot summary dot text, like so. So if we hit save, this is actually the whole operation, the whole, sorry, flow. So we click the button. We grab the whole item. We send it off to the text intelligence service, and then we save the outcome. Of course, you don't need to save it back to the item. You could simply send an email out or do something else with it, but we're gonna save it back to the item. And if all has worked, I should be able to click this summarize button, wait a few seconds. It's being summarized. Topics are being generated. Intents and sentiments, we're grabbing just the summary, and there we go. There's the summary. So I'm sure you can see all of the ways this can be applied. It's really flexible. It's really interesting. And, again, it's not just summaries. It's topics. It's intents, and it's sentiments. So I hope you found this interesting, and I'll see you in the next show.","published",[135],{"people_id":136},{"id":137,"first_name":138,"last_name":139,"avatar":140,"bio":141,"links":142},"82b3f7e5-637b-4890-93b2-378b497d5dc6","Kevin","Lewis","a662f91b-1ee9-4277-8c9d-3ac1878e44ad","Director of Developer Experience at Directus",[143],{"url":144,"service":145},"https://directus.io/team/kevin-lewis","website",[],{"id":148,"number":149,"year":150,"episodes":151,"show":162},"25c1b8ec-a696-4551-8d13-4e2abfbc7cb5",1,"2024",[152,153,154,155,156,157,158,159,122,160,161],"6aee5cdc-3d0a-4fa6-acee-49c1860a553d","50b4447b-73c7-4b49-9e70-d210595d1a7e","42784fad-29d4-4f01-a076-43f1817655b7","d948815e-2417-4319-814b-87d7c5fbdd43","2d94463a-5c39-4274-ba39-287e9059cc9c","afb17dd7-48b9-4297-ada8-f22c1daa82ce","be92a983-6a6a-411f-8f07-2cba4aa9308c","afc8f09e-f82f-473d-8643-14176380ae52","40e14c84-7b60-4fc2-a125-beec15e39a28","be07b8cd-0d0f-4713-affe-88c210c29d9a",{"title":163,"tile":164},"Directus AI","b3609dd7-2fea-4925-ae4a-8a4a69a1b64b",{"title":8,"meta_description":8},{"id":160,"slug":167,"season":148,"vimeo_id":168,"description":169,"tile":170,"length":171,"resources":8,"people":8,"episode_number":172,"published":129,"title":173,"video_transcript_html":174,"video_transcript_text":175,"content":8,"seo":176,"status":133,"episode_people":177,"recommendations":179},"ai-text-translator","945763189","Translate text into over 30 languages with this custom oepration, powered by DeepL.","b5c4b266-6fde-4c42-ad52-430fae9037ae",5,10,"AI Text Translator","\u003Cp>Speaker 0: The Directus AI text translator operation allows you to provide some text and a target language, and it will be translated into the target language. This operation extension is powered by DeepL, so you will need a DeepL API key in order to get started. Now here in our directors project, we have an episodes collection, and here we have moved transcript into a translation, which means that this bass here in English is actually not in this collection. It's actually held within the episodes translations. You can read more about translations and directors inside of our documentation, but just to give you the high level understanding, we have an item.\u003C/p>\u003Cp>The item relates to episodes translations, which contains, a link to the item, a link to the target language, and the specific translated fields in that language for that item, and we have a languages collection. In this case, just English and German. We're assuming that content will always be authored in English, and then you will be translating it into German. But, of course, you can build more flexible workflows using prompt confirmation dialogues or looping flows or stuff like that. So our goal will be to have a button here translate to German and the German translation will be applied by creating a new item in the episodes translations collection.\u003C/p>\u003Cp>Let's create a new flow called translate to German, and this will be a manual trigger on the episodes page. So this returns the ID of the item where we click the button which is actually perfect for our use case. What we're gonna do is we we're now gonna kind of cross reference and instead of grabbing data from this item we're gonna go grab the existing English translation for this item, so we have the English base to translate. So we are gonna read the data from the episodes translations collection with the following filter. We want to make sure that the item is from this, the translation item is related to this episode item and that we are only grabbing the English.\u003C/p>\u003Cp>So we will hit save. So this should return, an array with 1 item in it which contains the translation. We are then gonna send this to the AI trans the AI translation operation. Now you will need a DeepL API key. Here's one I made earlier, and select which API plan you're on.\u003C/p>\u003Cp>And in here, we pass in some text. We could hard code it, but we actually want it from the previous operation. Transcript, trans script. Yeah, and we pick a target language that this operation supports. So this should return, this should return just a string not an object just a pure string of that content in German instead.\u003C/p>\u003Cp>And the final thing we want to do is create a new translation. So we will create data in the episodes translations collection, and the payload will be as follows. The episode ID needs to match the initial one, the language that we've translated to, so this is the language code for German, and the string inside of transcript. So we'll hit save on all of those. So just to reiterate, we click the button on the episode.\u003C/p>\u003Cp>We grab the existing English translation for that item. We translate it to German, and we create a new translation item. So let's go to our episode. Let's hit translate to German, and there is our German translation for the same content. Once again you can build really powerful workflows here by looping or maybe by allowing a specific language selection as part of a confirmation prompt dialogue.\u003C/p>\u003Cp>That is how the AI, text translator operation extension works. Hope you found this interesting. We'll see you next time.\u003C/p>","The Directus AI text translator operation allows you to provide some text and a target language, and it will be translated into the target language. This operation extension is powered by DeepL, so you will need a DeepL API key in order to get started. Now here in our directors project, we have an episodes collection, and here we have moved transcript into a translation, which means that this bass here in English is actually not in this collection. It's actually held within the episodes translations. You can read more about translations and directors inside of our documentation, but just to give you the high level understanding, we have an item. The item relates to episodes translations, which contains, a link to the item, a link to the target language, and the specific translated fields in that language for that item, and we have a languages collection. In this case, just English and German. We're assuming that content will always be authored in English, and then you will be translating it into German. But, of course, you can build more flexible workflows using prompt confirmation dialogues or looping flows or stuff like that. So our goal will be to have a button here translate to German and the German translation will be applied by creating a new item in the episodes translations collection. Let's create a new flow called translate to German, and this will be a manual trigger on the episodes page. So this returns the ID of the item where we click the button which is actually perfect for our use case. What we're gonna do is we we're now gonna kind of cross reference and instead of grabbing data from this item we're gonna go grab the existing English translation for this item, so we have the English base to translate. So we are gonna read the data from the episodes translations collection with the following filter. We want to make sure that the item is from this, the translation item is related to this episode item and that we are only grabbing the English. So we will hit save. So this should return, an array with 1 item in it which contains the translation. We are then gonna send this to the AI trans the AI translation operation. Now you will need a DeepL API key. Here's one I made earlier, and select which API plan you're on. And in here, we pass in some text. We could hard code it, but we actually want it from the previous operation. Transcript, trans script. Yeah, and we pick a target language that this operation supports. So this should return, this should return just a string not an object just a pure string of that content in German instead. And the final thing we want to do is create a new translation. So we will create data in the episodes translations collection, and the payload will be as follows. The episode ID needs to match the initial one, the language that we've translated to, so this is the language code for German, and the string inside of transcript. So we'll hit save on all of those. So just to reiterate, we click the button on the episode. We grab the existing English translation for that item. We translate it to German, and we create a new translation item. So let's go to our episode. Let's hit translate to German, and there is our German translation for the same content. Once again you can build really powerful workflows here by looping or maybe by allowing a specific language selection as part of a confirmation prompt dialogue. That is how the AI, text translator operation extension works. Hope you found this interesting. We'll see you next time.","68280a24-6880-4499-9100-3d2793c606b9",[178],"497401ce-4880-4166-a825-4e1cdaadfbde",[],{"reps":181},[182,238],{"name":183,"sdr":8,"link":184,"countries":185,"states":187},"John Daniels","https://meet.directus.io/meetings/john2144/john-contact-form-meeting",[186],"United States",[188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237],"Michigan","Indiana","Ohio","West Virginia","Kentucky","Virginia","Tennessee","North Carolina","South Carolina","Georgia","Florida","Alabama","Mississippi","New York","MI","IN","OH","WV","KY","VA","TN","NC","SC","GA","FL","AL","MS","NY","Connecticut","CT","Delaware","DE","Maine","ME","Maryland","MD","Massachusetts","MA","New Hampshire","NH","New Jersey","NJ","Pennsylvania","PA","Rhode Island","RI","Vermont","VT","Washington DC","DC",{"name":239,"link":240,"countries":241},"Michelle Riber","https://meetings.hubspot.com/mriber",[242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,219,430,431],"Albania","ALB","Algeria","DZA","Andorra","AND","Angola","AGO","Austria","AUT","Belgium","BEL","Benin","BEN","Bosnia and Herzegovina","BIH","Botswana","BWA","Bulgaria","BGR","Burkina Faso","BFA","Burundi","BDI","Cameroon","CMR","Cape Verde","CPV","Central African Republic","CAF","Chad","TCD","Comoros","COM","Côte d'Ivoire","CIV","Croatia","HRV","Czech Republic","CZE","Democratic Republic of Congo","COD","Denmark","DNK","Djibouti","DJI","Egypt","EGY","Equatorial Guinea","GNQ","Eritrea","ERI","Estonia","EST","Eswatini","SWZ","Ethiopia","ETH","Finland","FIN","France","FRA","Gabon","GAB","Gambia","GMB","Ghana","GHA","Greece","GRC","Guinea","GIN","Guinea-Bissau","GNB","Hungary","HUN","Iceland","ISL","Ireland","IRL","Italy","ITA","Kenya","KEN","Latvia","LVA","Lesotho","LSO","Liberia","LBR","Libya","LBY","Liechtenstein","LIE","Lithuania","LTU","Luxembourg","LUX","Madagascar","MDG","Malawi","MWI","Mali","MLI","Malta","MLT","Mauritania","MRT","Mauritius","MUS","Moldova","MDA","Monaco","MCO","Montenegro","MNE","Morocco","MAR","Mozambique","MOZ","Namibia","NAM","Niger","NER","Nigeria","NGA","North Macedonia","MKD","Norway","NOR","Poland","POL","Portugal","PRT","Republic of Congo","COG","Romania","ROU","Rwanda","RWA","San Marino","SMR","São Tomé and Príncipe","STP","Senegal","SEN","Serbia","SRB","Seychelles","SYC","Sierra Leone","SLE","Slovakia","SVK","Slovenia","SVN","Somalia","SOM","South Africa","ZAF","South Sudan","SSD","Spain","ESP","Sudan","SDN","Sweden","SWE","Tanzania","TZA","Togo","TGO","Tunisia","TUN","Uganda","UGA","United Kingdom","GBR","Vatican City","VAT","Zambia","ZMB","Zimbabwe","ZWE","UK","Germany","Netherlands","Switzerland","CH","NL",1773850451798]