Generate: Dynamic Elements: OpenAI

The OpenAI Dynamic Element is available in Page Generator Pro 4.1.3 and higher, releasing Thursday April 6th 2023 23:59 UTC.  Ensure that your license is valid, not expired and that you’ve updated to the latest version of the Plugin.

The OpenAI Dynamic Element inserts dynamic, OpenAI researched content for each generated Page.

It’s different from the Research tool:

Feature Dynamic Element Research
Content Queries OpenAI when Test or Generate is used, inserting the text result into the generated Page. Queries OpenAI immediately when used, inserting the text result into the Content Group that is being edited on screen.
Keywords Supports the use of Keywords in the Topic field Does not support the use of Keywords in the Topic field
Spintax Does not insert text as spintax into the generated Page. Provides the option to insert the text result in spintax format into the Content Group, which is then processed when Test or Generate is used.
Performance Slow. Queries OpenAI for every single generated page, given that the Topic might include a Keyword. Fast. Queries OpenAI immediately when used, with the text result saved in the Content Group. No queries are made to OpenAI during generation.
Use case You want to use OpenAI generated text for parts of each generated page, and/or use a Keyword in the Topic. You want to use OpenAI as a starting point, possibly to generate spintax, and then make edits to OpenAI’s content before generating content.

Adding: Classic Editor / TinyMCE

To add OpenAI content within the Classic Editor:

  • Ensure that you’re using the Visual Editor by clicking the Visual tab:
    Page Generator Pro: Dynamic Elements: TinyMCE: Visual Editor Tab
  • Click the OpenAI icon in the Visual Editor toolbar:
    Page Generator Pro: Dynamic Elements: TinyMCE Buttons

Adding: Classic Editor / TinyMCE: Text Editor

If you’re using the Text editor instead of the TinyMCE Visual Editor above:
Page Generator Pro: Dynamic Elements: TinyMCE: Text Editor Tab

  • Click the OpenAI button in the toolbar:
    Page Generator Pro: Dynamic Elements: Text Editor Buttons

Adding: Gutenberg

To add OpenAI content within Gutenberg:

  • Click the plus icon between two existing blocks, or towards the top left corner of the Gutenberg editor
    Gutenberg: Add Block Button
  • Start typing OpenAI into the Search for a block field, and click the OpenAI option that appears within the Page Generator Pro section
    Page Generator Pro: Dynamic Elements: OpenAI: Gutenberg Search
  • Follow the Configuration section below for each of the fields displayed in the right hand sidebar’s block panel:
    Page Generator Pro: Dynamic Elements: OpenAI: Gutenberg Sidebar

Adding: Page Builders

To add OpenAI content within any Page Builder that supports a Text Editor widget/module using the Classic Editor (sometimes known as TinyMCE), refer to the Classic Editor instructions above.

Refer to the Dynamic Elements Documentation for details specific to your Page Builder.

If your Page Builder does not provide a Text Editor widget/block that uses the Classic Editor, you can still use Dynamic Elements.  However, you’ll need to manually build the shortcode, inserting it into your Page Builder’s content – for example:
[page-generator-pro-openai parameter="value" ...]

Tuning options (temperature, top_p, presence_penalty, frequency_penalty) are available in Page Generator Pro 4.2.2, available Thursday 1st June 2023 23:59 UTC.
Parameter Accepted Value Description
topic string or keyword The topic that the content should be written about.
content_type string
  • article: A detailed article, including subheadings and a conclusion based on the topic (e.g. “web design”)
  • faq: Questions and answers based on the topic (e.g. “how to find the best kitchen fitter”)
  • freeform: You want to send a freeform prompt to OpenAI, with full control. In this setting, the Limit and Language options are ignored.  You’re responsible for prompting the OpenAI model to return the applicable language and limit, if required.
  • paragraph: A single paragraph of content based on the topic (e.g. “what is the most important quality in a web design company”)
limit int
  • When content_type = article or paragraph: the maximum number of words
  • When content_type = faq: the maximum number of questions
  • When content_type = freeform: the limit is ignored. Any limit imposed is a token limit from OpenAI, based on the model chosen.
language string Two character language code.
temperature float Number between 0 and 2, in 0.1 steps. A higher value will make the output more random. A lower value will make it the output more focused and deterministic.  See OpenAI API Docs.
top_p float Number between 0 and 1, in 0.1 steps. Determines the pool of available tokens to choose from, between 0 and 1. An alternative to using Temperature. A higher value will include more, less accurate tokens. A lower value will include fewer, more accurate tokens.  See OpenAI API Docs.
presence_penalty float Number between -2.0 and 2.0, in 0.1 steps. Positive values penalize new tokens based on whether they appear in the text so far, increasing the model’s likelihood to talk about new topics.  See OpenAI API Docs.
frequency_penalty float Number between -2.0 and 2.0, in 0.1 steps. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model’s likelihood to repeat the same line verbatim.  See OpenAI API Docs.

Configuration: General

Page Generator Pro: Dynamic Elements: OpenAI: General

Topic

It’s important to ensure the topic does not include newlines. It’s recommended that the prompt be written in English.

The Topic is the topic that the content should be based on.  For example, if the Content Group relates to plumbing services, you might use “how to fix a leak” or “how to find the best plumber”.

Keywords are supported in the Topic field.  For example, if your Content Group is for generating Pages for services in locations, and you have Keywords defined for both services and locations, you might use “how to find the best {service} in {location(city_name)}”.  For each generated Page, the Keywords will be replaced with a Term, and the query sent to OpenAI to return content (for example, “how to find the best bathroom plumber in Birmingham”).

The more detailed the topic, the better quality content that will be returned.  For example, “bathroom plumbing” will generate more generic content vs. “how to find the best bathroom plumber”.

When Content Type is Freeform, the Topic becomes the entire OpenAI prompt.  Limit and Language options are ignored, therefore you’re responsible for defining these.  For example, you might specify:

Write a 250 word paragraph about how to find the best {service}. The style should be an informative, professional tone, written in French.

Content Type

The Freeform Content Type is available in Page Generator Pro 4.1.5, releasing Thursday April 20th 2023 23:59 UTC.

Content Type determines the form and length of content to produce, depending on how you’re using the Research tool:

  • Article: You want to produce a large amount of detailed content on a topic (such as “how to find the best web designer”), that will form the main content of the Content Group (and therefore generated pages).  This is useful if you have yet to start writing content, and want a good starting point.
  • FAQs: You want to produce a series of questions and answers based on the topic (such as “how to find the best kitchen fitter”), output as the FAQPage structured microdata format compliant with Google.
  • Freeform: You want to send a freeform prompt to OpenAI, with full control over output, language, formatting, HTML etc.
    • In this setting, the Limit and Language options are ignored.  You’re responsible for prompting the OpenAI model to return the applicable language and limit, if required.
  • Paragraph: You want to produce a single paragraph or two of content on a more detailed topic (such as “what is the most important quality in a web design company”), that will form part of the content of the Content Group.  This is useful if you have built a block based or page builder layout, and want to inject AI generated content into a specific section.

Limit

The maximum length of the content.

  • For Articles and Paragraphs, this is a word limit.
  • For FAQs, this is the number of questions and answers to generate.
  • For Freeform, the limit is ignored. Any limit imposed is a token limit from OpenAI, based on the model chosen.

Language

Language will return the created content, translated into the chosen language.

It’s recommended that the prompt be written in English.

Configuration: Tuning

Tuning options are available in Page Generator Pro 4.2.2, available Thursday 1st June 2023 23:59 UTC.

Page Generator Pro: Dynamic Elements: OpenAI: Tuning

Temperature

Number between 0 and 2, in 0.1 steps. A higher value will make the output more random. A lower value will make it the output more focused and deterministic.  See OpenAI API Docs.

It’s recommended to only change the Temperature or Nucleus Sample, not both.

Nucleus Sample

Number between 0 and 1, in 0.1 steps. Determines the pool of available tokens to choose from, between 0 and 1. An alternative to using Temperature. A higher value will include more, less accurate tokens. A lower value will include fewer, more accurate tokens.  See OpenAI API Docs.

It’s recommended to only change the Nucleus Sample or the Temperature, not both.

Presence Penalty

Number between -2.0 and 2.0, in 0.1 steps. Positive values penalize new tokens based on whether they appear in the text so far, increasing the model’s likelihood to talk about new topics.  See OpenAI API Docs.

Frequency Penalty

Number between -2.0 and 2.0, in 0.1 steps. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model’s likelihood to repeat the same line verbatim.  See OpenAI API Docs.

Performance

The OpenAI Dynamic Element will query OpenAI for every single generated Page.  Because OpenAI can take up to 60 seconds per request, generation times will be much slower, as each generated Page must query OpenAI one or more times (depending on the number of OpenAI Dynamic Elements in a Content Group) to dynamically insert content(s).

As such, we do not handle support requests regarding slow generation performance where the OpenAI Dynamic Element is used.

If faster generation times are essential, you’re welcome to use the Research tool, enabling the Return as Spintax option.  This will query OpenAI immediately when editing the Content Group, inserting the spintax content result.  Each generated page will then produce a spun variation of this content, with no further queries to OpenAI required.

Regenerating / Updating Pages

Sometimes, you’ll want to re-generate Pages from a Content Group, whilst retaining the generated OpenAI Dynamic Elements – that is, not re-running OpenAI Dynamic Elements a second time.

To do this, we recommend the following workflow when creating a new Content Group:

  1. Install and activate https://wordpress.org/plugins/shortcode-to-display-post-and-user-data/
  2. Edit Content Group, entering OpenAI Dynamic Element into Custom Field called e.g. openai
    Page Generator Pro: Dynamic Elements: OpenAI: Custom Field
  3. Edit Content Group, entering shortcode into Content as applicable: [vg_display_data data_source=”post_meta” key=”openai“]
    Page Generator Pro: Dynamic Elements: OpenAI: Custom Field Shortcode
  4. Generate via Browser. Observe results.
    Page Generator Pro: Dynamic Elements: OpenAI: Generated Page: Backend
    Page Generator Pro: Dynamic Elements: OpenAI: Generated Page: Frontend

To make edits to a Content Group, to re-generate Pages:

  1. Edit Content Group:
    1. Overwrite = Yes, if existing Page generated by this Group
    2. Overwrite Sections: Custom Fields must be unchecked / unticked
    3. Custom Fields: openai must be removed (we don’t want to run an OpenAI request again)
      Page Generator Pro: Dynamic Elements: OpenAI: Content Group
  2. Make edits to your Content Group as necessary
  3. Re-generate via Browser
  4. Observe OpenAI is not run a second time; existing OpenAI content stored in Custom Field is retained in the existing generated Page/Post.

Common Issues

No text is returned

Rate limit reached for [model] in [organization]

OpenAI enforces strict rate limits on their API, depending on your OpenAI account tier.  Refer to the OpenAI documentation for current limits based on your account tier:

If a rate limit has been reached (whether that be requests per minute, requests per day, tokens per minute or tokens per day), Page Generator Pro will wait one minute, and then try a second time.

If a rate limit is subsequently hit a second time for the same Dynamic Element, no text will be returned, and Page Generator Pro will continue to the next operation.  This is deliberate and by design, to ensure that all Pages are generated, and the generation process does not get stuck on one item.

To avoid hitting rate limits and debug issues, it’s strongly recommended to:

  • Increase your OpenAI account to from Free to Tier 1 or higher, by paying more (refer to the Usage tiers table).  The higher the tier, the higher the rate limits.
    • If using a free OpenAI account, consider starting with a Tier 1 or Tier 2 account.
  • Consider using the OpenAI Research tool (and applying spintax to the result), where Keywords aren’t necessary for the OpenAI prompt / topic.
  • Use a different OpenAI account for each site using Page Generator Pro
    • It is not enough to use a different OpenAI key; OpenAI’s rate limits are set across an entire organization (account).
  • Generate one Content Group at a time on your server
    • If your server has multiple sites installed, each using Page Generator Pro, it’s essential to generate one Content Group at at time for one site at a time.
  • Reduce the number of OpenAI Dynamic Elements in a Content Group,
  • Enable debug logging per steps at https://www.wpzinc.com/support
  • Set Generate Content Items per Request = 1.
  • Use Test mode with the specific Resume Index of the generated Page that resulted in blank text.
    • This will output any error from OpenAI, allowing you to improve e.g. the prompt / configuration to resolve.
  • Inspect the wp-content/debug.log file, observing any errors returned from OpenAI.

Please reduce the length of the messages or completion

The topic must be free of any quotation marks and HTML tags.  If using the Classic Editor, use the Text mode to confirm that no inline HTML is included in the request.

The model does not exist or you do not have access to it.

Refer to OpenAI’s Documentation, noting that your account must:

  • Pay-As-You-Go accounts must have made a minimum $1 payment
  • ChatGPT Plus accounts do not automatically have access to the GPT-4 API

Refer to the OpenAI Documentation. Alternatively, use a GPT-3.5 based model, which all OpenAI customers can use.  This can be selected in the Plugin’s Integration Settings.

503 Service Unavailable

Reduce the number of OpenAI Dynamic Elements in the Content Group.

For OpenAI Dynamic Elements that are smaller and repetitive in nature (i.e. the topic is not very different between each generated Page, the request is to generate a short paragraph), consider use the Research Tool, to generate e.g. a paragraph, ensuring Return as Spintax is enabled.  This content will then be stored in the Content Group, in spintax format.