{"id":10051,"date":"2023-06-23T14:52:21","date_gmt":"2023-06-23T14:52:21","guid":{"rendered":"https:\/\/craighordlow.com\/index.php\/2023\/06\/23\/how-to-use-chatgpt-to-generate-product-descriptions-at-scale\/"},"modified":"2023-06-23T14:52:21","modified_gmt":"2023-06-23T14:52:21","slug":"how-to-use-chatgpt-to-generate-product-descriptions-at-scale","status":"publish","type":"post","link":"https:\/\/craighordlow.com\/index.php\/2023\/06\/23\/how-to-use-chatgpt-to-generate-product-descriptions-at-scale\/","title":{"rendered":"How to use ChatGPT to generate product descriptions at scale"},"content":{"rendered":"<p>We want more quality content for our websites, but it\u2019s difficult to produce enough. So how can we scale the content creation process, especially for ecommerce sites with plenty of products?<\/p>\n<p>If you were to pay for a copywriter to produce thousands of product snippets from scratch, you\u2019d likely be out of pocket pretty quickly. <\/p>\n<p>What if you pay for 1,000 new product descriptions, but only half of those products live one month later? Clearly, you need a faster, more cost-effective approach. This is where ChatGPT can help.<\/p>\n<p>ChatGPT\u2019s native web interface is really helpful and a great time-saver.\u00a0<\/p>\n<p>But if we have hundreds or thousands of product descriptions to create, there\u2019s a more efficient way of using ChatGPT without copying and pasting prompts. Here\u2019s how.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_81 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/craighordlow.com\/index.php\/2023\/06\/23\/how-to-use-chatgpt-to-generate-product-descriptions-at-scale\/#Mass_production_of_content_snippets_Scaling_the_output\" >Mass production of content snippets: Scaling the output<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/craighordlow.com\/index.php\/2023\/06\/23\/how-to-use-chatgpt-to-generate-product-descriptions-at-scale\/#Fetching_your_new_product_content_snippets_from_OpenAI\" >Fetching your new product content snippets from OpenAI<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/craighordlow.com\/index.php\/2023\/06\/23\/how-to-use-chatgpt-to-generate-product-descriptions-at-scale\/#ChatGPT_output_notes\" >ChatGPT output notes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/craighordlow.com\/index.php\/2023\/06\/23\/how-to-use-chatgpt-to-generate-product-descriptions-at-scale\/#Scaling_your_content_creation_process_with_AI\" >Scaling your content creation process with AI<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Mass_production_of_content_snippets_Scaling_the_output\"><\/span>Mass production of content snippets: Scaling the output<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>If you have an ecommerce website, you might wish to produce product snippets using data from a product information management (PIM) system.\u00a0<\/p>\n<p>Let\u2019s say you have the data on a spreadsheet.<\/p>\n<div class=\"wp-block-image\">\n<\/div>\n<p>We can use Excel formulas to concatenate (or join, using the \u201c&amp;\u201d operator) data into rich prompts, ready for ChatGPT. For example:<\/p>\n<p>Note that your formula may require one or multiple \u201cIF\u201d statements. That\u2019s because your data may have holes in some areas.\u00a0<\/p>\n<p>For example, some products may not have certain parameters (data within certain columns) specified. You need your formula to be flexible, and you can always ask ChatGPT to help you write the formula.<\/p>\n<div class=\"wp-block-image\">\n<\/div>\n<div class=\"wp-block-image\">\n<\/div>\n<p>Once your formula is returning a prompt for each row (in this case, for each product), you can copy and paste a few of the generated prompts into a word processor, even notepad.\u00a0<\/p>\n<p>It\u2019s good to spot-check a few to ensure the text makes sense, even when some data items were missing.<\/p>\n<div class=\"wp-block-image\">\n<\/div>\n<p>Once you have verified that your Excel (or Google Sheets) formula is generating the types of prompts that you want, you can send a few of them to ChatGPT (manually, using the web interface) to see if you like the results.<\/p>\n<p>The generated snippet(s) will likely require human editorial oversight, though you want to get the AI to do as much of the work as possible. That\u2019s why we engaged in such a deep \u201cprompt-crafting\u201d process.<\/p>\n<p>Happy with your initial prompts and responses? Good, then it\u2019s time to move on.<\/p>\n<p><!-- START INLINE FORM --><\/p>\n<div class=\"nl-inline-form border py-2 px-1 my-2\">\n<div class=\"row align-items-center\">\n<div class=\"col-12 col-lg-3 col-xl-4 pe-md-0 pb-2 pb-lg-0\">\n<p class=\"inline-form-text text-center mb-0\">Get the daily newsletter search marketers rely on.<\/p>\n<\/div>\n<div class=\"col-12 col-lg-7 col-xl-6  pe-lg-0\">\n<div class=\"form-nl-inline\">\n<div class=\"row g-0\">\n<div class=\"form-group col-12 col-lg-8 mb-0\"><\/div>\n<div class=\"col-12 col-lg-4 col-xl-4 mb-0\">\n<div class=\"d-none\">\n<p>Processing\u2026Please wait.<\/p>\n<\/div>\n<p>\t\t\t\t\t\t\t<button class=\"btn btn-dark inlineButton w-100 rounded-0 font-weight-bold\">SUBSCRIBE<\/button>\n\t\t\t\t\t\t<\/p><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"col-12 col-lg-2 col-xl-2 ps-1\">\n<p class=\"text-center mb-0\"><a class=\"nl-terms\" href=\"https:\/\/searchengineland.com\/termsofuse\" target=\"_blank\" rel=\"noopener noreferrer\">See terms.<\/a><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!-- END INLINE FORM --><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Fetching_your_new_product_content_snippets_from_OpenAI\"><\/span>Fetching your new product content snippets from OpenAI<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>So, you now have a list of products (or other types of webpages) which you\u2019d like to generate content for.\u00a0<\/p>\n<p>In this example, we\u2019re going with a fictitious sample of 100 products. You now have a list of all your products (either separated by URL, SKU or some other unique identifier).\u00a0<\/p>\n<p>These products also have assigned rich prompts which you have generated. But ChatGPT\u2019s web UI is limited. So how can you send these across all at once?<\/p>\n<p>For this, you\u2019re going to have to get comfortable with basic scripting and with handling <a href=\"https:\/\/searchengineland.com\/chatgpt-api-seo-guide-394411\" target=\"_blank\" rel=\"noopener\">API requests<\/a>. You can create an OpenAI API account to access the ChatGPT web interface.\u00a0<\/p>\n<p>I put together a basic Python script for my agency. While I can\u2019t share the script, I can review some of the processes and documentation needed.<\/p>\n<p>Should I wish to syndicate this script later, building it on marketing-accessible endpoints and technologies would be best. As such, I first produced an Excel sheet:<\/p>\n<div class=\"wp-block-image\">\n<\/div>\n<p>The sheet simply provides an area to dump items for processing (identified by some unique identifier in the \u201cItem Name\u201d column, in this case, product name). In addition, the prompts to be processed can also be placed here.\u00a0<\/p>\n<p>Another tab contains parameter settings for the request. (You can learn about all these <a href=\"https:\/\/platform.openai.com\/docs\/api-reference\/chat\/create\" target=\"_blank\" rel=\"noopener noreferrer\">via OpenAI\u2019s documentation<\/a>.)\u00a0<\/p>\n<p>Some of these settings fine-tune content creativity allowance, unusual wording deployment, max token spend per request and even content redundancy. This is also where the OpenAI API key is saved.<\/p>\n<p>Once a certain button within the spreadsheet is clicked, the Python script launches automatically and handles the rest:<\/p>\n<div class=\"wp-block-image\">\n<\/div>\n<p>First, the script defines the request \/ endpoint URL. After this, the script sends the request headers and the request data.\u00a0<\/p>\n<p>Most parameters for the request header \/ data, can be tweaked within the spreadsheet pictured previously.\u00a0<\/p>\n<p>Finally, the response text is received from OpenAI and logged within the \u201cdata dump,\u201d another separate spreadsheet.\u00a0<\/p>\n<p>I have three scripts for this deployment, though only one needs to run. I also have two separate spreadsheets, both of which are needed.<\/p>\n<p>Once the script resolves all of the queries, all of the snippets of text are saved here:<\/p>\n<div class=\"wp-block-image\">\n<\/div>\n<p>Looking at the above output, you may have some content uniqueness concerns.\u00a0<\/p>\n<p>While all of the snippets begin with the exact phrase (\u201cIntroducing the [product name]\u201d), the produced content gets more diverse across the generated paragraphs. So, it\u2019s not as bad as it looks.\u00a0<\/p>\n<p>Also, there are things you can do to attempt to make each generated snippet even more unique, such as categorically asking the AI to generate unique content (though you have to be quite firm and repetitive in this regard to get anywhere).\u00a0<\/p>\n<p>You can also tweak the temperature and frequency parameters to adjust content creativity and avoid redundant language.<\/p>\n<p>Weaving these technologies together (OpenAI\u2019s API, Excel, Python), we can quickly ascertain generated text snippets for all input prompts.\u00a0<\/p>\n<p>From here, it\u2019s up to you what you want to do with that newly processed data.\u00a0<\/p>\n<p>I highly recommend moving it into a format your editorial team can understand.\u00a0<\/p>\n<p>We have somewhat mitigated much of this by crafting very rich prompts. However, you can never be certain until you check the output.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"ChatGPT_output_notes\"><\/span>ChatGPT output notes<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Assuming that you\u2019re happy to work with ChatGPT, there are a <strong>few things to keep in mind:<\/strong><\/p>\n<p>Let&#8217;s talk about the cost. It&#8217;s tough to give a cost breakdown for using OpenAI&#8217;s GPT-4 model of ChatGPT via their API. It&#8217;s not just the input word count of the prompt or the output word count. Pricing revolves around the AI&#8217;s \u201cthinking time.\u201d More complex requests will use more tokens and cost more (even if the input \/ output word count is reduced).<\/p>\n<p>Our test batch of 100 prompts from sample data cost us only $1.74 to run and return. We generated 22,482 words of content overall. 22,482 words of content for $1.74 seems good, but there&#8217;s much more to consider.<\/p>\n<p>Due to AI&#8217;s propensity to infer, a human editorial process is still fundamentally required (in our opinion).<\/p>\n<p>However, using this technology does transform a costly from-scratch content creation task into a much more cost-effective content editing task.<\/p>\n<p>The data \/ AI specialist&#8217;s time for prompt crafting and running scripts must also be factored in.<\/p>\n<p>On top of inferring where data is lacking, AI can also \u201ccreatively infer\u201d things. In our sample data set, the AI decided to infer the existence of a sizing guide (clothing) within the produced product content. If no sizing guide existed, that would look pretty silly.<\/p>\n<p>Always send AI content through a human editorial review process for fact-checking, accuracy and (most importantly) additional creative flair.<\/p>\n<p>You can further automate ChatGPT by plugging in projects like Auto-GPT. Those AI \u2018agents\u2019 add more active processing and tasking power to ChatGPT. However, projects like this still need your OpenAI API key. And due to their infancy, they can chew up a lot of credits before they learn to perform tasks to standard.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Scaling_your_content_creation_process_with_AI\"><\/span>Scaling your content creation process with AI<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>AI can scalably produce diverse snippets of content that are fit for purpose with minimum intervention. <\/p>\n<p>For long-form content, it\u2019s probably still better to use the interface and iterate the AI\u2019s responses.<\/p>\n<p>The post <a href=\"https:\/\/searchengineland.com\/chatgpt-generate-product-descriptions-428546\" target=\"_blank\" rel=\"noopener\">How to use ChatGPT to generate product descriptions at scale<\/a> appeared first on <a href=\"https:\/\/searchengineland.com\/\" target=\"_blank\" rel=\"noopener\">Search Engine Land<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>We want more quality content for our websites, but it\u2019s difficult to produce enough. So how can we scale the content creation process, especially for ecommerce sites with plenty of products? If you were to pay for a copywriter to produce thousands of product snippets from scratch, you\u2019d likely be out of pocket pretty quickly. What if you pay for 1,000 new product descriptions, but only half of those products live one month later? Clearly, you need a faster, more cost-effective approach. This is where ChatGPT [&hellip;]<\/p>\n","protected":false},"author":0,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"h5ap_radio_sources":[],"cybocfi_hide_featured_image":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-10051","post","type-post","status-publish","format-standard","hentry","category-best-seo-blogs"],"featured_image_src":null,"featured_image_src_square":null,"author_info":{"display_name":false,"author_link":"https:\/\/craighordlow.com\/author\/"},"_links":{"self":[{"href":"https:\/\/craighordlow.com\/index.php\/wp-json\/wp\/v2\/posts\/10051","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/craighordlow.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/craighordlow.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/craighordlow.com\/index.php\/wp-json\/wp\/v2\/comments?post=10051"}],"version-history":[{"count":0,"href":"https:\/\/craighordlow.com\/index.php\/wp-json\/wp\/v2\/posts\/10051\/revisions"}],"wp:attachment":[{"href":"https:\/\/craighordlow.com\/index.php\/wp-json\/wp\/v2\/media?parent=10051"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/craighordlow.com\/index.php\/wp-json\/wp\/v2\/categories?post=10051"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/craighordlow.com\/index.php\/wp-json\/wp\/v2\/tags?post=10051"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}