What Are Meta Descriptions?
Google and other search engines look at meta descriptions mostly as a way to influence users to click on your website in the search results. Generally hidden from the users, meta descriptions tend to catch life in the SERPs (Search Engine Result Pages).
If you have a website with less than 100 pages, you can set the meta descriptions manually for each page.
This is what a meta description looks like:
Categorize A High Volume of Products
You can add the first 150-160 characters (until the last word) in the product description, add an ellipsis (...) at the end, and that's it. Google can do this for you, and it is optimized to take the best portion of the text. Another option is to use the same text for multiple products, but that's not considered a best practice.
You can also manually set the meta descriptions for the top products, and ignore all the others. This is a decent tactic, but for most pages, you won't have a dedicated meta description and you’ll have to hope that Google knows what to take from the contents of each page.
Create Unique Meta Descriptions For Lots Of Products
In Google Ads users invest a lot of money and effort in determining how a block of text should look. Instead of a text of 160 characters, in Google Ads you'll likely find a few small phrases, with incentives to click, reasons to buy, and motivation to choose that specific brand.
Make Meta Descriptions Using Small Pieces of Attractive Text
You can get inspiration for Google Ads descriptions from http://isearchfrom.com/:
Source: http://isearchfrom.com/
Example:
string Generate_Meta_Description (URL string, Product_Name string, Site_Name string); // a function that returns a meta description, based on three parameters, all string variables, current page URL, current product name, site name
{
const string array text_group_no_1 = ["Delivery in 2 working days", "Delivery in 48 working hours", "Order today and we deliver in maximum 2 days", "Order today and we will deliver in 2 days", "14-day warranty" , “You can return the product at any time in the first 2 weeks”, “Return products without additional questions”, “The only online store that…”… etc. ]; // As an observation, it is preferable that the length of the texts be as similar as possible, I did not respect this; is a constant type vector that contains all the elements in the first group; note - make the number of elements different from one group to another, each group should have a unique number of elements, so not all groups with 18 elements, but one with 18, another one with 22, another one with, let's say 27.
const string array text_group_no_2 = [etc., etc.]; // no “duplicates” with group 1, no texts that would sound weird if they were put in addition to group 1; so, if in group #1 you speak about a delivery, here mention other things const string array text_group_no_3 = [etc., etc.]; // without "duplicates" with group 1 and 2 of texts; focus on different topics
long int ASCII = 0;
for (i = 0; i <length (URL); i ++) {ASCII = ASCII + NUM (URL [i]); }
// With this code sequence we get a number from the URL; we assign to each letter in the URL the ASCII value of that character and we sum those values; we get a generally unique number for each URL; sure, there may be 2 URLs with the same generated ASCII code, but they are the exception, not the rule
// For ASCII values: https://www.asciitable.com/
// You can consider automatically removing “https://www.sitename.com” from the URL, and also the characters “/” and “-“
a = Length (group_1_text []); // "find" the number of elements of the first group
b = Length (group_2_text []);
c = Length (group_3_text []);
// Note: As said before, the three groups of texts must have a number of different values from each other. So, a != b != c
m = ASCII module a; // Here we assign to a new variable, M, the remainder of dividing the ASCII variable by the length of the first group; we get a number less than a
n = ASCII module b; // n is not necessarily different from m, but b is necessarily different from a
o = ASCII module c;
string Meta_Description = “; // initialize a string variable;
if ((length (Meta_Description) + length (Product_Name)) <= 160) {Meta_Description = Meta_Description + Product_Name; } // if the original meta description, ie "to which we add the product name is less than 160 characters, the product name is added
if ((length (Meta_Description) + length (Site_Name)) <= 160) {Meta_Description = Meta_Description + Site_name; } // we also add the name of the site; it is preferable for “Site_Name” to be of the form “- SiteName.com”, ie to have a space and a separator character, it can be ”-“, or ”| “, Or”: “, or something else, but without special characters, which can be strangely displayed in Google; you can consider varying the form in which you write Site_Name, to have some distinct variants of writing the brand name, it can be SiteName.com, Brand Name, BrandName;
if ((length (Meta_Description) + length (text_group_no_1 [m])) <= 160) {Meta_Description = Meta_Description + text_group_no_1 [m]; }
if ((length (Meta_Description) + length (group_2_texts [n])) <= 160) {Meta_Description = Meta_Description + group_2_texts [n]; }
if ((length (Meta_Description) + length (text_group_no_3 [m])) <= 160) {Meta_Description = Meta_Description + text_group_no_3 [o]; }
// you can consider having a group of 4 terms, to see if, on average, the value of 160 is “reached”;
// you can put the value "160" in a constant, for the situation in which this number will increase, according to the new Google algorithms;
return Meta_Description; // finally, the value in Meta_Description is returned;
}
While this is not actual code, real code can be created, based on this logic.
You can also make this algorithm in Microsoft Excel, with three columns of small text, and, in the end, a copy & paste. Utilizing a piece of software right in the CMS can also make this work easier.
Via: https://docs.google.com/spreadsheets/d/1D7aLxIaJuBSBx7dod2RYK3f8gML6xRITvo7HihwW-eQ/edit?usp=sharing
Formulas used:
- =COUNTA(B3:B22)
- =MOD($E$30,B24)
- =OFFSET(B3,B26,0,1,1)
- =SUMPRODUCT(CODE(MID(C30,ROW(INDIRECT("1:"&LEN(C30))),1)))
- =IF(LEN(CONCATENATE(C23, " - ", C25, ". ", B10))<=160, CONCATENATE(C23, " - ", C25, ". ", B10), CONCATENATE(C23, " - ", C25))
- =IF(LEN(CONCATENATE(B28, " ", C11))<=160, CONCATENATE(B28, " ", C11), B28)
Here’s one more solution for the road:
Reducing the time it takes to write meta descriptions for large websites https://searchengineland.com/reducing-the-time-it-takes-to-write-meta-descriptions-for-large-websites-299887