ranking tactics logo

ZimmWriter Custom Outline Exhaustive Guide

by Matt Zimmerman

Updated October 9, 2024

The custom outline feature can be found in both the Bulk Writer and Penny Arcade.

Use the custom outline feature when you need to write many blog posts that share a common outline structure.

While there are a million use cases, let’s study an example using the custom outline feature for recipe blog posts. Usually a recipe blog post can follow a similar subheading structure regardless of the recipe itself.

Introduction to Custom Outlines

Here is an example of a custom outline:

History
Common Ingredients
Recipe
Cooking Tips
Final Thoughts

Whether the blog post is titled “Ultimate Guide to Tacos” or “Ultimate Guide to Barbeque Ribs”, that outline structure could work.

Here’s how it plays out…

In the Bulk Writer, for the article “Ultimate Guide to Tacos”, the AI will then write about the history of tacos. It will then write about some common ingredients in tacos, list a taco recipe, provide some tips when cooking tacos, and end with a section called final thoughts.

The article will finish writing, then ZimmWriter will move onto the next article in the queue: Ultimate Guide to Barbeque Ribs.

It will write about the history of barbeque ribs. It will then write about some common ingredients in barbeque ribs, list a barbeque rib recipe, provide some tips when cooking barbeque ribs, and end with a section called final thoughts.

The article will finish writing, then ZimmWriter will move onto the next article in the queue… (imagine 998 more article titles)!

Pretty cool, huh?

Using H2s, H3s, and H4s with Custom Outlines

In the custom outline input box, any text you place on a single line turns into a H2 subheading by default.

But in some situations you might want one or more H3s, or even one or more H4s.

In that situation, just include a single dash “-” before each item you want to make into a H3 and a double dash “–” before each item you want to make into an H4.

Here is the recipe example again, but now with three H3s.

History
Ingredients
Popular Recipes
- Recipe #1
- Recipe #2
- Recipe #3
Cooking Tips
Final Thoughts

Can you spot the H3s? If you said: Recipe #1, Recipe #2, and Recipe #3 then you’d be correct!

History
Ingredients
Popular Recipes
- Recipe #1
-- Ingredients
- Recipe #2
-- Ingredients
- Recipe #3
-- Ingredients
Cooking Tips
Final Thoughts

Do you see the H4s? The three ingredients subheadings are all H4s.

Now just a few itsy bitsy things to keep in mind:

  • H3s must have followed an H2
  • H4s must have followed an H3
  • Double dashes should not have a space in between. Just press the minus key on your keyboard twice and you’ll have made an H4.

Basics of Custom Outline Variables

Everything you just read was the blue pill. Want to live in happy land with no worries? Stop reading now.

But if rocket fuel flows through your veins and you live for excitement, then let me give you the red pill and open your eyes to the world of custom variables.

Let’s start simple…

History
Common Ingredients
Popular Recipes
- Recipe #1{list}
- Recipe #2{list}
- Recipe #3{list}
Cooking Tips
Final Thoughts

Notice how we added {list} at the end of each H3 recipe in the outline? The {list} is a variable. When we add it to a subheading, ZimmWriter prompts the AI to create a list for that subheading.

Here is another version of the same outline, but with more custom variables added:

History{optimize_title}{auto_h3_3}
Common Ingredients{optimize_title}{list}
Popular Recipes{optimize_title}
- Recipe #1{optimize_title}{list}{yt}
- Recipe #2{optimize_title}{list}{yt}
- Recipe #3{optimize_title}{list}{yt}
Cooking Tips{optimize_title}{auto_h3_3}
Final Thoughts

Available Custom Outline Variables

{list}

  • Prompts the AI to add a list to the subheading
  • You might not get a list 5% of the time when using a lower powered model such as GPT 3.5 Turbo. You can correct this by either choosing a more powerful model (e.g., Davinci or GPT-4) or editing the article manually or with a magic command.
  • Table and lists will not appear within the same subheading.
  • Using the {list} variable will override the list checkbox insertion behavior on the backend for the entire article.
  • Note: Works in the Custom Outline, SEO Writer subheading titles, and Bulk SEO CSV outline subheading titles.

{table}

  • Prompts the AI to add a table to the subheading
  • You might not get a table 5% of the time when using a lower powered model such as GPT 3.5 Turbo. You can correct this by either choosing a more powerful model (e.g., Davinci or GPT-4) or editing the article manually or with a magic command.
  • Table and lists will not appear within the same subheading.
  • Using the {table} variable will override the table checkbox insertion behavior on the backend for the entire article.
  • Note: Works in the Custom Outline, SEO Writer subheading titles, and Bulk SEO CSV outline subheading titles.

{model=name of model}

You can now change the model used to write a specific subheading. If you want to get a list of all the models you have access to based on which API keys you’ve entered, go in the ZimmWriter options menu, then click on the “Setup Text API” button, then scroll down and press the “Copy All Models to Clipboard” button. It will copy all of the models to the clipboard so that you can easily choose the model you want and paste it after the subheading.

{auto_h3_#}

  • Add this (but first replace the # with a digit between 1-10) to a H2 and ZimmWriter will generate that many H3s under the H2.
  • Examples:
    • {auto_h3_5} will generate 5 H3s
    • {auto_h3_3} will generate 3 H3s
  • It’s not recommended to apply {list} and {table} to the H2 that you also apply {auto_h3_#}
  • Incompatible with the auto-h3 checkbox in the bulk writer.
  • Note: Works in the Custom Outline only.

{yt}

  • Add this to have ZimmWriter try to find a relevant YouTube video for the subheading.
  • Requires ScrapeOwl (you can get a secret discounted plan by clicking the button in the ZimmWriter options menu).
  • Using the {yt} variable will override the YouTube Videos button insertion behavior which normally causes auto-insertion of videos in the first, third, and fifth H2.
  • Notes:
    • Each {yt} usage costs 5 ScrapeOwl credits, even if a video was not found.
    • It will be easier for ZimmWriter to find related videos if you use {yt} along with {optimize_title}. While it’s not required, it can improve finding a relevant video.
    • No need to “enable” the YouTube Videos button in addition to {yt} as the button will also force a YouTube video after the 1st, 3rd, and 5th H2. However, the {yt} variable will obey the other YouTube Video button settings even when it’s not enabled.
    • Works in the Custom Outline, SEO Writer subheading titles, and Bulk SEO CSV outline subheading titles.

{optimize_title}

  • Prompts the AI with the article title + up to 1,500 words of global background information + supplied subheading to contextually rewrite the subheading to give you a more topic-specific subheading, helping with SEO. But as with anything, YMMV.
  • For example…
    • For an article titled “Ultimate Guide to Tacos”, using History{optimize_title} may cause ZimmWriter to rewrite the “History” subheading to something like “History of Tacos”.
    • For an article titled “Ultimate Guide to BBQ Ribs”, using History{optimize_title} may cause ZimmWriter to rewrite the “History” subheading to something like “History of BBQ Ribs”.
  • Now what’s really cool is this also works when you think outside the box… For an article titled “Ultimate Guide to Pizza”, using Recipe #1{optimize_title} may cause ZimmWriter to rewrite the “Recipe #1” subheading to something like “Recipe #1: Margherita Pizza”.
  • You could even use this for a listicle… such as “How to Get into College with Bad Grades” and “Tip #1{optimize_title}”, “Tip #2{optimize_title}”, “Tip #3{optimize_title}”, etc. Just be aware that you will be limited by the AI’s knowledge (unless you’re doing this with background information). So you might end up with repetition in your list.
  • The {optimize_title} uses whatever AI model you select to write your article. So the combination of Davinci or GPT-4 combined with URL background information in the Penny Arcade can start to get a little expensive if you’re not careful.
  • Note: Works in the Custom Outline only.

{prepend=data to prepend to subheading}

  • The only real use for this is in conjunction with the {optimize_title} variable. Let’s say you create a custom outline, but want certain outline elements to have a number at the start of each.
    • For example:
      • 1. Gather Supplies
      • 2. Wash Your Dog
      • 3. Dry Your Dog
    • Unfortunately, you can’t really do this because {optimize_title} nukes the entire subheading (except for other variables). This is where the new “prepend” variable can help. Here is how it can look:
      • Gather Supplies{prepend=1.}{optimize_title}
      • Wash Your Dog{prepend=2.}{optimize_title}
      • Dry Your Dog{prepend=3.}{optimize_title}
    • Easy peasy!

{voice_1ps}, {voice_1pp}, {voice_2p}, {voice_3p}, {voice_pro}

  • Overrides the article voice and applies this voice to the particular subsection
    • {voice_1ps} is first person singular
    • {voice_1pp} is first person plural
    • {voice_2p} is second person
    • {voice_3p} is third person
    • {voice_pro} is professional
  • Use case? Imagine an article where your website reviews five companies using scraped data. The article itself may be written in first person plural (we, us, our) but when the AI discusses the five companies, it might write as if it (your website) was the company. You don’t want that obviously. So you’d append {voice_3p} to each subheading title to avoid this effect.
  • Note: Works in the Custom Outline, SEO Writer subheading titles, and Bulk SEO CSV outline subheading titles.

{cta}

  • Creates a call to action button or link (depending on your selection in the ZimmWriter options menu) at the end of a subheading section.
  • Works in two places:
    • Penny Arcade – add a {cta} after a subheading in a Custom Outline to create a call to action at the end of that subheading. The link in the call to action is the link scraped by Penny Arcade.
    • SEO Writer – add a {cta} after a subheading to create a call to action at the end of that subheading. ONLY works if you have also provided a link in the URL to scrape input box for that subheading.
      • Note: scraping the URL is not required to get a call to action. So think outside the box because there are use cases that don’t involve scraping.
      • Using the “trigger product layout” button in the SEO writer will also cause a call to action to appear, so it is not necessary to use a {cta} variable in that instance.
  • If the domain in the URL matches a domain in a saved Scraping Surgeon profile + the profile has a saved affiliate link, then that affiliate link is appended on the end of the URL and when creating the call to action link.

{cp_your_custom_prompt}

  • You can use any custom prompts you have saved in your custom outline.
  • Only one custom prompt per subheading is permitted.

{raw_your_raw_prompt}

  • A new special prompt that replaces the ZimmWriter prompts when generating a subheading. You can read more about it in the raw prompt exhaustive guide.
  • Note that if the very first line of your outline begins with a raw prompt, it becomes a MASTER raw prompt and has superpowers. Read more in the exhaustive guide in the prior link.

{normal}

Use this placeholder at the start of the first line of your custom outline and something magical happens. But only if you put additional stuff on the subsequent line(s) below.

When you use {normal} as shown in the image above (there’s no other way to use it), ZimmWriter will write the entire article using an AI-generated outline. After writing the article, it’ll append any other custom outline subheadings you add.

In the example above, we have ZimmWriter create an entire article, but then add at the end of the already written article an H2 called “Call Us Today” and write it using a raw prompt.

Can you see how powerful that is? Imagine you’ve got a local business and want to add a call to action at the end of the article. Now you can! I’m sure there are lots of other use cases too.

As an aside, this is exactly like the “master” raw prompt concept, but instead of using a raw prompt, you’re just having ZimmWriter do it’s thing and write the entire article, but append additional subheadings at the end.

{cb_your_custom_background}

{tpl}

  • This variable stands for trigger product layout. It’s akin to the familiar checkbox in the SEO Writer. Now you can use it as a custom variable.
  • It’s very handy in the Bulk SEO CSV when adding a custom outline with a subheading that has a URL for scraping (e.g., {url=}). However, it does work elsewhere too such as in the SEO Writer attached to a heading, in a Custom Outline, and also in the Bulk SEO CSV file obviously.

{lp_your_link_pack_name}

  • You can also designate link packs on a subheading by subheading basis. So as an example, you can select a link pack to apply in the link pack menu, but then override this with a link pack specifically added to the end of a subheading. Pretty cool huh?

{img}

  • This variable causes an AI image to be added to the subheading
  • The AI image model used will be the one selected in the subheading dropdown on the main interface for the ZimmWriter feature you’re using (e.g., Bulk Writer, Penny Arcade, etc).

{save_text} & {load_text}

What I’m about to describe is MASSIVE in terms of power, but it’s also complex. So if you don’t understand it right away, no worries.

Anywhere in your custom outline, at the end of a line, you can append {save_text}.

When you add {save_text}, ZimmWriter will write the subsection and store the subsection title and subsection text (up to the first 3,000 characters) in a variable behind the scenes. (Read that again a few times).

That hidden variable can then be accessed in an image prompt using the {load_text} placeholder.

So when ZimmWriter sends that prompt to the AI to generate the image prompt, it’ll replace the {load_text} with the saved text.

Why’s this useful?

Imagine you’re generating a recipe. It’d be disappointing if the image didn’t reflect the ingredients. Typically, the image prompt relies on just the blog post’s title – e.g., {title} – and the subheading’s title – e.g., {subheading}, to generate the image. But since the AI isn’t being fed additional context, like the recipe itself, often the image won’t represent the actual recipe.

The solution? Feed the recipe itself into the prompt we’re using to generate the image. You can store the recipe using {save_text} and load it with {load_text}. Now the image can do a much better job of representing the recipe!

You can apply this concept beyond recipes too. You might want to use it anytime you’re describing something detailed within a subheading and need an image to better represent those details.

Now I have some VERY critical things to explain about using this cool feature:

First, the data for {save_text} is overwritten when {save_text} is used again in a subsequent subheading, or when ZimmWriter moves on to write a new article.

Second, each subheading image prompt is generated immediately after a particular subheading section is written. So something like this is perfectly okay:

Here’s an example I write with that exact custom outline: 10 Best Candy Cane Christmas Punch for Kids Recipes. The custom outline uses a master raw prompt {raw_recipe} and {save_text} which will apply to each subheading (since that’s how master raw prompts work) and also forces an AI image to be generated for each subheading. The subheading image prompt looks like this:

What ends up happening is that ZimmWriter writes the first subheading “Creamy Candy Cane Cooler” (see my published example), then stores the subheading text in {save_text}. It loads the image prompt and replaces {load_text} with our saved text, generates a relevant AI image prompt, feeds it to our AI image model, and creates a fantastically relevant AI image! Then… here’s the powerful part: it moves on to the next subheading “Peppermint Punch Paradise,” writes that subheading text, and stores it in {save_text}, overriding the prior saved text. It then loads the image prompt and replaces {load_text} with the newly saved text, and… etc., etc.

Pretty powerful stuff, isn’t it?

Now here’s the third and last critical thing to explain:

The featured image prompt is generated after the entire article’s written. So… the last text saved from your final {save_text} in your custom outline can be used in your featured image prompt!

That is a lot of stuff to think about! Incredible, incredible power.

{var1} to {var5}

You can now insert {var#} into a subheading of your custom outline to accomplish programmatic SEO. When ZimmWriter starts writing your article, it will replace the variables (e.g., {var1}) which the corresponding variable that you defined alongside the title. Here is how it works.

You define the variables in your title in the bulk writer:

Recipe for Southern BBQ Chicken{var1=Southern BBQ Chicken}{var2=BBQ Pork}

You then create your custom outline:

History of {var1}
Best Recipe for {var1}
Which is better: {var1} or {var2}
- Why {var1} is better than {var2}{optimize_title}
- Why {var2} is better than {var1}{optimize_title}

Then when you run it, the {var#} in the custom outline will be replaced with the data you defined in the title. Just be mindful that spaces matter. So when you create your custom outline, add a space before and after the {var#} recitation.

At the moment, this feature only works with the Bulk Writer and not the Bulk SEO CSV. It also does not work with the SEO Writer or Penny Arcade for good reason.

Additional Tips & Information

  • The custom outline overrides the # of H2 setting in the Bulk Writer and Penny Arcade
  • The custom outline also overrides the “only use the # of H2 as a recommendation” in the Penny Arcade
  • For a subheading, the order of the custom variables does not matter when combining them for one subheading so… “Recipe #3{optimize_title}{list}{yt}” will have the same outcome as “Recipe #3{yt}{list}{optimize_title}”
  • Using auto-keywords is NOT recommended when the outline element is very ambiguous. However, it’s better when using {optimize_title}.
ranking tactics logo

The information provided on this website is provided for entertainment purposes only. I make no representations or warranties of any kind, expressed or implied, about the completeness, accuracy, adequacy, legality, usefulness, reliability, suitability, or availability of the information, or about anything else. Any reliance you place on the information is therefore strictly at your own risk. Read more in my terms of use and privacy policy. You can also contact me with questions.

Owned and Operated by Revindir LLC
Copyright 2024