How to set up multiple separate text modules for a data set

Many types of generated text consist not only of a continuous text to be output in one piece, but also of several independent blocks of text. These can be completely different texts, e.g. to be delivered via different publishing channels. What they share is that they are based on the same dataset, such as the same product.

For example, on a product detail page, the following text blocks could be used as a supplement or alternative to the basic product description:

  • You can provide two different product descriptions for a mobile and a desktop version
  • A list of features or USPs separate from the detailed product description, which can appear at a different location in the online shop, like an overview page.
  • SEO elements that are located in the header, such as meta description, and meta titles at a product level.

Generate text blocks in one Project using Separators

In most cases, the best approach for the use case described is to generate copy from one project and one Collection and to use Separators. Having all the relevant blocks of text for a data set in one project makes it easier to keep track of and control the text blocks:

  1. Data only needs to be uploaded once and additional data fields are not necessary.
  2. Some of the text blocks can easily be used more than once in a project.
  3. It is easier to adapt all the text blocks to a particular word usage or style.

Inserting Separators in your NLG Project

With this approach, all text in a project is created and output as a single unit. It is only in a later step in your publishing system that they are separated along the separators.

To indicate to your content management system (or other printing and publishing software) where a new independent section of text begins, you need to insert separators in your AX NLG project. These are a series of special characters that signal that a new section begins, similar to the section break in a word processor.


We recommend using a triple $ character, but you can use any non-semantic character, such as %, $, or §.

Make sure that the separator string you have chosen does not appear anywhere else in your text.

Examples for Separators

  • for a Metatitle: $$$MetaTitleStart$$$ the text of the meta title $$$MetaTitleEnd$$$
  • for the block Long Copy: $$$Long Copy$$$ the text of long copy $$$Long Copy End$$$

Other approaches with downsides

There are other ways to generate different texts for the same dataset. However, these have substantive downsides and their uses are discouraged.

Generate each module in different Projects

You can create these different types of text in more than one project. To do this, upload the same data to different projects. Then create a separate ruleset for each block of text. For example, you could have a project called "Trousers - Title Tags". This would generate the title tags for your trousers category in addition to the basic product description project for trousers.

However, there are two major problems with this approach:

  1. Spreading of the text blocks over a number of projects increases the maintenance effort because you have to upload the data in all projects whenever you change the data.
  2. If the text pieces for a product are generated from different projects, it can become difficult to be able to precisely assign the individual text modules again.

Historical background

The separation into different projects was useful at times, as the text length could be controlled only at the project level. This was especially important for title tags, where the restriction is very strict and precise. This is now different, you can set the text length at the statement level.

Use separate Collections for the text blocks

To avoid the effort of setting up multiple projects, you can also generate all the sections you need in one project and create a separate Collection for each section. This allows you to keep a better overview of the text parts and to better harmonize their content.

However, the disadvantage is that you would have to create an additional data field to record the association with a text part or publication channel.

Further Reading

  1. To learn how to control the text length of your text block read the article "How to Limit Text Length"open in new window
  2. To learn more about SEO in NLG Projects read the guide "SEO on the NLG Platform"open in new window