ZimmWriter Changelog

by Matt Zimmerman

Updated November 27, 2023

Version 9.005

Released 2023-11-27

  • Added a magical +SS button in the SEO writer next to each subheading background. I wonder what it does? Hint: Optionally use it after performing a SERP scrape.
  • Fixed a bug where SERP scrape data was carried over to the Penny Arcade.

Version 9.004

Released 2023-11-26

  • Fixed localization default for ScrapeOwl not saving.
  • Removed “none” from the voice setting for the Bulk Writer and SEO Writer because when “none” was used, I set it to second person behind the scenes. So to avoid confusion, I just removed “none” as an option and defaulted it to second person on the front end.
  • Fixed a bug that had the 1-click writer use the scraped data from a prior Bulk Writer or SEO Writer job.

Version 9.003

Released 2023-11-25

  • The text file from the SEO Writer was not displaying the URLs that were used in the SERP scrape in the situation where a pre-scrape was performed. Now this is fixed (it was a cosmetic issue).
  • The text file was not displaying the number of calls attributed to SERP scraping. Now this is fixed (it was another cosmetic issue).
  • On a side note, I’m still afraid to step on the scale… holidays are always scary. I do have stretchy jeans and an adjustable belt, so I guess that’s a win.

Version 9.002

Released 2023-11-24

  • The recent update broke the 1-click writer. So I unbroke it.

Version 9.001

Released 2023-11-24

  • SERP background wasn’t being used for some situations in the SEO Writer.
  • Fixed another JSON error that could crop up from websites with incorrect HTML.

Version 9.000

Released 2023-11-24

  • Added SERP scraping to the Bulk Writer and SEO Writer (note: SERP scraping requires a ScrapeOwl plan)
  • Tons of little improvements and tweaks.
  • Fixed a bug that would cause a crash when a policy violation was detected by OpenAI on a keyboard trigger.
  • Added caching of scraped URLs and SERPs (current limit is 1,500 of each and it’s auto pruned).
  • Added an option in the advanced trigger menu to overwrite the cache for a URL (otherwise the cache will be used when processing a magic command with a URL).
  • Added auto adding of domains (and ScrapeOwl detection) when using ScrapeOwl without Scraping Surgeon.
  • Overhauled introductions,
  • Improved error message when adding a WordPress site.
  • Adjusted the WP test post language to remove “ZimmWriter” so as to not confuse clients.
  • Added CSV to penny arcade and cache.
  • Added more improvements to connected to WordPress sites.
  • Fixed a bug that could cause duplicate categories created in WordPress.
  • Fixed a glitch in the custom midjourney prompt generation when using it for subheadings.

Version 8.258

Released 2023-11-10

  • Added gpt-4-1106-preview model. Note: after December 11, this model will no longer work as OpenAI will rename it to “gpt-4-turbo” and I’ll publish a ZimmWriter update to reflect the change.
    • OpenAI has placed TPD (token per day) and RPD (requests per day) limits on this model.
    • The daily limits has caused me to re-work how the “free trial” message is displayed in ZimmWriter because it’s possible now to get that message even if you are a paid OpenAI user.
    • So now, if ZimmWriter detects a limit exceeded message from OpenAI, it will display a status message “OpenAI Account/Model Limited” in the main menu. When this message appears, it could be that you are in a free trial, or it could also mean that you simply triggered an OpenAI limit.
    • In addition, the limit message by ZimmWriter is on a model by model basis now. So if you get the “OpenAI Account/Model Limited” status message, simply change to a different model and it will likely go away. You’ll understand… you’re smart. I believe in you. Go get ’em tiger.
    • Important links:

Version 8.257

Released 2023-11-09

  • Added gpt-3.5-turbo-1106 model. Note: after December 11, this model will auto roll into “gpt-3.5-turbo” and upon the post December 11 update, I’ll remove “gpt-3.5-turbo-1106” since it will be rolled into the base model.
  • Fixed a bug that would cause a crash when the status indicator was disabled and the only summarize was used in the penny arcade.
  • Increased compatibility of the WordPress connection with some sites that would not work.

Version 8.256

Released 2023-11-01

  • Fixed a crash that would occur in the SEO Writer when you supplied an invalid URL for a subheading image
  • Improved magic command generation quality, especially when outputting to a non-English language.

Version 8.255

Released 2023-10-25

  • Fetching YouTube videos broke because the YouTube code changed. I patched it so now it works. The added benefit is that now, fetching YouTube videos only costs 1 ScrapeOwl credit! Hopefully the YouTube code remains stable and we can keep the low price.
  • Fetching YouTube transcripts IS STILL BROKEN. I’m waiting on ScrapeOwl support to get back with me. But since it’s been 18 hours, I decided to just push out this release so at least we can get those videos working again.

Version 8.254

Released 2023-10-22

  • Fixed a bug in the SEO Writer where the global background would not be used when clicking “Start SEO Writer (without scraping)” in a specific scenario.

Version 8.253

Released 2023-10-16

  • Fixed a typo where a user would run the Topical Authority Generator and then immediately run the SEO Writer. What would happen is the SEO Writer would not clear out the cost for the TAG run from the memory, and so it would add that cost into the SEO Writer article cost, making it appear like the SEO Writer article cost more than reality. I debated making a simple PSA post in the FB group but then Bharat reminded me that no one reads anything I write and I should just patch it.

Version 8.252

Released 2023-10-13

  • Amazon scraping has been problematic still; so for the BULK SEO CSV I’ve added several retries for an amazon scrape
  • Now you can add WordPress sites that are installed on a subpath (e.g., https://www.domain.com/installpath)
  • Overhauled blog title generation in Topical Authority Generator (TAG)
  • Added 0 Blog Post Titles in TAG so you can only get Topical Clusters and Long Tail Keywords (save $ if you don’t want titles)
  • Boosted TAG limits to 30 Topical Clusters and 30 Long Tail Keywords (but Blog Post Titles still capped at 1,000)
  • Added a block_resources=false domain addon for ScrapeOwl settings which helps with some domains that use REACT and would not normally scrape
  • Added a custom prompt feature to the summarize only in the Penny Arcade
  • Added a language translation feature to the summarize only in the Penny Arcade

Version 8.251

Released 2023-10-10

  • Some users reported speed issues. So it looks like maybe OpenAI is using different speed servers in different locations. My hunch is lowering the timeout is great for people in the US, but not so for people in areas with slower OpenAI servers. Therefore, I’m bumping up the timeout to 240 seconds. Maybe that will be a happy ground for everyone.
  • Improved quality of categories and long-tails in the Topical Authority Generator
  • Increased the limits in the Topical Authority Generator to 20 clusters and 20 long tails. But the upper limit for rows is still 1,000 due to generation time and GPT4 cost. So now depending on your settings, the quantity of blog post titles available in the dropdown is auto-adjusted based on the first two settings. Note: the timeout for blog title generation in the TAG is 90 seconds (up from 5). It’s nearly impossible to find a happy medium, so to err on the side of caution, 90 seconds is probably a good choice. But this means it might take longer to generate 1,000 titles for some people.
  • Fixed a crash in the Topical Authority Generator caused by disabling the progress indicator in the ZimmWriter options menu.
  • Fixed a crash caused by a rare situation where meta-description generation failed
  • Improved subheading generation, especially when using outilne_focus
  • Overall prompt improvements to various aspects in ZW. It’s like pringles. Once you pop, you can’t stop.

Version 8.250

Released 2023-10-9

  • Enhanced the Custom Prompt feature.
    • Now you can add up to 50 custom prompts which are saved to the ZimmWriter database. You can apply different prompts in different places, and even use them as variables in your custom outline!
  • Fixed a bug in WordPress categories where you’d select “All” as the main category but then the subcategory would remain without switching to “none”.
  • Added the ability to select a parent WordPress category without a child category.
  • Added a Topical Authority Generator.
  • Added fluff reduction behind the scenes. ๐Ÿ”ช๐Ÿ‡ 
  • Reduced GPT 3.5 Turbo “wait” to 90 seconds and GPT-4/Davinci “wait” to 180 seconds. Back in the day (which is like 4 months ago in AI land) OpenAI could take 3-4 minutes to respond. If we didn’t wait long enough, and terminated the request, it would cost you money since OpenAI would later respond and the request would be lost. So ZimmWriter’s prior “wait” time was 300 seconds for Turbo and 600 seconds for GPT4. Now it seems that OpenAI is much faster to respond, but sometimes it just hangs and never responds. So I’ve reduced the timeout as described above.
  • Added {url=} functionality to the “Outline” section in the Bulk SEO CSV. You can now add a single URL to any subheading you desire. Check the Google sheet for an example.
    — NOTE: It is recommended not to use LONG URLs. So for Amazon, use a shorter URL such as https://www.amazon.com/dp/B0CG5SDLHX/ and not the super long one with all the extraneous information.
    — NOTE: If one URL fails to scrape, then the article aborts and goes to the next article. At the moment, scraping can fail for numerous reasons. So if this is a concern to you, then use the SEO writer and pre-scrape the data before running the SEO writer.
  • Added {tpl} as a variable available in the Bulk SEO CSV, Custom Outline, and SEO writer. It allows you to trigger a product layout using the variable as opposed to the checkbox which is only available in the SEO Writer.
  • Improved the auto style prompt to account for OpenAI weirdness.
  • Amazon scraping should now be 1 credit per URL because of some backend stuff that ScrapeOwl did. Just make sure you haven’t added amazon.com or any Amazon domain to the ScrapeOwl boxes in the ScrapeOwl settings in ZimmWriter.

Version 8.135

Released 2023-09-26

  • Fixed a bug in the ScrapeOwl settings menu where JavaScript rendering and LazyLoading would not trigger if you put the domains in the respective boxes.
  • Previously Scraping Surgeon would not scrape a webpage when the title was less than 6 characters. I realized that some titles are in fact less than that (such as some AppSumo products). So I reduced it down more so that as long as the title is 3 characters or more, we’re good.

Version 8.133

Released 2023-09-23

  • Fixed a bug that would cause ZimmWriter to crash when running Scraping Surgeon on a URL that contained data that violated OpenAI’s moderation check.
  • Further improved the subheading content.
    • Let’s peak behind the curtain. It seems that OpenAI is like a human in that it gets tired. When it’s tired, it’s lazy and returns weak responses. A few patches ago I implemented some features to further boost the quality of the output. But it seems that when OpenAI gets tired, the quality of those improvements dramatically suffers (and even turn into negatives). So I’ve played with the prompts some more and I’m happy with the output at the moment. Remember one thing… I’m a developer who demands high quality output from his software. So when you see the occasional update with a tweak, remember that it’s your buddy Matt who is working hard to make things even better for you.

Version 8.131

Released 2023-09-21

  • Fixed a BIG bug that would cause blog posts to be uploaded to your site even when you disabled WordPress uploads.
  • Fixed a weird bug that caused a “We encountered an error using your scraper API to scrape the URL.” message on some computers.
  • Improved usage of determining the title of a scraped article.
  • Added functionality to better process URLs with encoded ASCII characters.

Version 8.130

Released 2023-09-17

  • Fixed a bug in the SEO Writer. How scraping is there is intended to work is any URLs in the subheading URL box will get scraped when you press the scrape button so long as the background section for that subheading is empty. Previously ZimmWriter was accidently re-scraping everything.

Version 8.129

Released 2023-09-16

  • Fixed a bug that would cause a crash if you selected the erase all button inside Scraping Surgeon.

Version 8.128

Released 2023-09-15

  • General tweaks
  • Fixed a bug with certain URLs that had their characters already decoded to hex (e.g., %C3%A9) instead of undecoded (e.g., รฉ) causing a double escape.
  • Fixed a bug where listicles would have the correct number of list items but the the title would not reflect it.
  • ZimmWriter now first attempts to download Scraping Surgeon images via ScrapeOwl proxy IP (1 credit) before attempting downloading via your personal IP. This is likely the safer route.
  • Added status messages for image downloading and wordpress uploading.

Version 8.127

Released 2023-09-14

  • Fixed a bug with lazy loading (ScrapeOwl setting).
  • Fixed a bug with image detection in Scraping Surgeon.

Version 8.126

Released 2023-09-14

  • I can’t win with these stupid affiliate tags in Scraping Surgeon. It was adding ?=tag to all non-Amazon sites. So check your Scraping Surgeon profiles. Make sure everything is valid.

Version 8.125

Released 2023-09-14

  • Improved the output where sometimes the AI would lose focus when discussing a H3 in the context of an H2, or an H4 in the context of an H3.
  • Added markdown bold to items the AI added as bold
  • Updated ZimmWriter to fix YouTube transcript scraping that Google broke with their update
  • Fixed a bug that would cause a table or list in the very last subsection to not appear when uploaded to WordPress.
  • Added an option to the SEO writer (at the top) to erase all of the article details but keep the settings.
  • Added a feature in the penny arcade to only summarize URLs. You can create a “job” and the job will be the filename. Each URL summarized will be jobname_0001.txt, jobname_0002.txt, etc.
  • Amazon affiliate tag was broken and now it’s fixed.

Version 8.005

Released 2023-09-11

  • Fixed a bug causing a crash in the new results window on the Bulk Writer.
  • Fixed a bug that would cause the SEO CSV button in the Bulk Writer to turn green when using a custom outline.

Version 8.003

Released 2023-09-11

  • Added the ability to use the HTML tags H1 or H2 for Scraping Surgeon Title and also some various HTML tags for the Text portion.
  • Added a LazyLoad feature for domains in the ScrapeOwl setting. It forces JavaScript and enables a LazyLoad feature which helps on some sites. But don’t use it on an infinite scroll site.
  • Fixed a bug that would cause the Bulk Writer using the SEO CSV to continue to write the blog post even if the scrape failed.
  • Note: sometimes scraping surgeon will not download the image if you’re blocked by a CDN. So for some sites and depending on where your IP address is located (since images are at the moment downloaded using your IP and not ScrapeOwl), you might be blocked from getting image. I might be able to work on a fix for this.
  • Added a results window the the Bulk Writer.

Version 8.002

Released 2023-09-10

  • Fixed bug where you couldn’t change the call to action button color.
  • Removed the “Test WP” website button and instead I auto-test anytime you press the Save or Update button.
  • Fixed a bug that would cause a crash if you input invalid WordPress credentials but attempted to generate a blog post.

Version 8.000

Released 2023-09-10

  • Improved the Local SEO Buffet for generating articles where the business is an individual’s name (such as a doctor office).
  • Many improvements to overall output everywhere.
  • Fixed some UI glitches where a custom outline was updated or saved but the UI did not reflect the changes.
  • Added more rate limit functionality because OpenAI is awesome.
  • Added {outline_focus=} to the bulk writer. You simply add it to the end of your title in the bulk writer and it will direct the AI when writing your outline. Example:
    • Example of two titles for the bulk writer, each with an outline focus:
      how to get more backlinks{outline_focus=Discuss how someone can get more backlinks using HARO, reverse outreach, the shotgun skyscraper approach, and paid links)
      secrets to get into college{outline_focus=Study harder. Play sports. Take extracurricular activities. Help out in your community. Take on leadership roles.}
    • What happens is when ZimmWriter uses the AI to write your article outline, it will use the outline focus you provided to help focus the AI’s attention on those specific things.
    • Note: it only applies to the AI generated outline, nothing else. Limit is 1,000 characters per outline focus. It can theoretically work even if you’re using a custom outline via the “custom outline” button, but YMMV.
  • Added a SEO CSV upload option to the Bulk Writer. It basically creates a bulk version of the SEO Writer as you can specify your title, background information, outline (distinguished from “custom outline”), and SEO keywords. The only thing it does not have is subheading background. Note that when using SEO keywords, the # of keywords per subheading is dynamic based on the number of subheadings, and ranges between 3 and 10.
  • Improved custom outline prompting.
  • Fixed Penny Arcade when using the Keep Original Title option to translate the title at least into English (unless a non-English output is chosen).
  • More tweaks to translated output to make it better with less duplicated subheadings.
  • JSON errors are now 99.99% fixed.
  • Added new custom voice variables which apply at a subheading level to override the global voice you chose. It works in the SEO writer, Bulk Writer SEO CSV, and Custom Outline. {voice_1ps}, {voice_1pp}, {voice_2p}, {voice_3p}, {voice_pro}.
  • Added a ScrapeOwl option to process the full URL for a specific domain. It doesn’t cost extra credits and sometimes helps when you get a missing H1 error
    • Example: https://www.fs.usda.gov/recarea/florida/recarea/?recid=83720
  • Amazon: It seems they are implementing Captcha and the non-premium proxies are being trapped by it; so I disabled JavaScript rendering for Amazon and enabled premium proxies. So an Amazon scrape is 10 ScrapeOwl credits. Nothing I can do about it. Again, have to spend $ to make $. Don’t be a wuss.
  • More improvements to uppercase lettering inside the subheadings.
  • Vastly improved auto voice detection for Penny Arcade.
  • Spent a long time figuring out how to get non-English uploads working on WordPress. Now they do!
  • Added WordPress uploads, including categories, subcategories, and post status.
  • Added call to action variable {cta} which works in custom outlines in Penny Arcade and adds a call to action whenever the domain matches scraping surgeon. It will also add your affiliate link present in scraping surgeon if it exists.
    • You can adjust some of the call to action options in the ZimmWriter options menu. The options included having the call to action displayed as a raw link, instead of a button. You can also change the color for the call to action.
  • WordPress uploads with YouTube will auto convert the YouTube link to an iframe embed regardless of your settings now. The only thing the settings (in the YouTube button) do is control how you want it output in the text file.
  • I added a wrapper DIV with class .zw-youtube around the YouTube iframe and a wrapper div with class .zw-cta around the CTA button so you can style it however you want.
  • YouTube iframe video embeds have the proper aspect ratio now.
  • Improved the paragraph quality throughout ZimmWriter.
  • Removed the “enable” button from the custom outline window. Now, to enable a custom outline, just select it. To disable it, just select “None” from the dropdown.
  • In the SEO Writer, using the trigger product layout on a subheading when a URL is present inserts a call to action button.
  • Added image API to retrieve images from Pexels (25,000 images a month for free), download them to your hard drive, and even auto-upload them as a featured image to WordPress.
  • Added image downloads for Scraping Surgeon and even upload them as featured images inside Penny Arcade or inline within the blog post when using them in the SEO Writer.
  • Adjusted the SEO writer to take into account costs associated with scraping and heading generation so long as you don’t perform a keyboard trigger or another writing function outside of the SEO Writer prior to writing your article but subsequent to the scraping and outline generation in the SEO Writer. Phew.

Version 7.809

Released 2023-08-14

  • I really want to ditch the tease option, but it’s like government spending. Once you give people benefits, it’s hard to remove them even if they aren’t right for the individual. Soโ€ฆ I improved the tease function to be less overbearing and dramatic. No one likes a date that comes on too quickly. You’ve got to play it cool.
  • Fixed a bug where using ScrapeOwl was generating a debug.txt file. It’s a boring peak behind the scenes. You can delete the debug.txt file or leave it for giggles.
  • Added an update check every 24 hours. It was 24 hours before, but only if you left ZimmWriter running. Now, it will also check for an update if you start ZimmWriter and the last check was over 24 hours.
  • I changed the icon for those on the alternative version. It’s about time right?

Version 7.808

Released 2023-08-13

  • Gave the YouTube video insertion some love. Now it is even better with less non-found videos (previously ZimmWriter was also picking up YT shorts, which are not valid for embedding).
  • Improved the rewrite hotkey performance.
  • Fixed a FalseFalse bug with the 1-click writer. Thanks Brett!
  • Fixed a bug where ScrapeOwl wouldn’t let you set a new API key.

Version 7.806

Released 2023-08-11

  • I was wrong… 7.805 broke custom outlines. So I beat it back into submission and now it works.

Version 7.805

Released 2023-08-11

  • Custom Midjourney prompts never worked… now they do.
  • Prevented the possibility of changing a dropdown value when scrolling with your mouse wheel.
  • Added color coding to SEO outline to help indicate which H3 and H4 go with which H2.
  • Amazon scraping should be vastly improved in some situations.
  • Forcing JavaScript rendering on Amazon links. I am finding that more are failing without it. Unfortunately JavaScript rendering is 5 ScrapeOwl credits. But you’ve got to spend money to make money.
  • Cleaned up some more poor quality results from GPT 3.5 Turbo.
  • Overhauled a lot of backend ScrapeOwl calls to shift away from REGEX to instead using a JSON library. I’ve tested it a lot and it doesn’t appear anything has broke.
  • Added an option for a persistent magic menu.

Version 7.803

Released 2023-08-07

  • Improved analysis of Title vs. H1 in Penny Arcade. It’s backend stuff that basically makes using the Original Title (for listicles) very good.

Version 7.802

Released 2023-08-07

  • Disabled listicle handling in the Bulk Writer and Penny Arcade when custom outline is active.
  • Increased detection of a listcle up from a 2 digit number to a 3 digit number less than or equal to 200.
  • Fixed a bug where auto voice in penny arcade coupled with summarzing raw text (not a URL) would throw an error.
  • Fixed a lack of capitalization when using custom outlines.

Version 7.800

Released 2023-08-07

  • Completely overhauled the subheading and H3 generation everywhere in ZimmWriter. Higher quality, less failed generation messages.
  • Completely overhauled how capitalization works.
  • Added a subheading quantity auto-override feature for the Bulk Writer called “Use # of H2 as Suggestion”. It already exists in the Penny Arcade, but now with some changes.
    • Bulk Writer (read the full guide here)
      • If you do not enable “Use # of H2 as Suggestion” then you get the # of H2 you specified
      • If you do enable it…
        • And ZimmWriter detects a list in the title (~95% accuracy) then it will override your # of H2 and use as many are as appropriate for the article.
          • Note: if the listicle is over 15 items, then it will re-title the article to only have 15 items.
          • Note: the list amount must appear before any other numbers or things will get screwed up. So “10 Things to Do When You Reach 25” is fine but “You Just Reached 25: Now Here’s 10 Things to Do” will utterly fail and bad things will happen…
        • And ZimmWriter does not detect a listicle, then it will use the # of H2 you specified, unless that number was greater than 5. In that situation, it will choose a random number between 5 and your # of H2 specified as the quantity to write for that specific article.
    • Penny Arcade (read the full guide here)
      • Identical to how the Bulk Writer works except that when using the # of H2 as suggestion and a listicle is not detected, the # of H2 you specified is further based on summarization length that ZimmWriter generated.

Version 7.755

Released 2023-08-03

  • Added a patch for non-English translations to help avoid situations where sometimes the translation would go off the rails and provide extra output.
  • Improved the overall quality of the subsection output, especially when choosing medium and long length.
  • Made some improvements to capitalization.
  • Reworked auto-voice for penny arcade so that it is VERY accurate when the input webpage content is English. However, when the input webpage content is non-English, it does not work well. Please keep that in mind.
  • Fixed a bug where sometimes the penny arcade confirmation screen for URLs wouldn’t display certian URLs
  • In regards to non-seo writer, sometimes ZimmWriter would have issues when the AI generated less subheadings then required. In regards to the seo writer, this can still happen, but an error message will simply appear asking the user to retry.
  • Fixed a major glitch with custom prompts where it would not use the model you chose but instead only use Davinci.

Version 7.752

Released 2023-07-31

  • Fixed a GUI bug for users on the “normal” subscription plan.
  • Added a hyperlink to the directions for custom outlines in the custom outline menu. Some people are not understanding how they are supposed to work. Maybe having a direct link to the directions might help?
  • Eliminated the possibility of choosing both the YouTube Videos button + using the {yt} variable in a single article. It’s intended to be one or the other.
  • Cleaned up the “OpenAI Paid (Fast)” and “OpenAI Free Trial (Slow)” indicator. It looks less like a button and more normal now.
  • Cleaned up a prompt.

Version 7.750

Released 2023-07-31

  • Added custom outlines to the Bulk Writer and Penny Arcade.
  • Added variables to the custom outlines.
  • Improved the quality ZimmWriter output on H2, H3, H4 subsections to further account for the change in GPT 3.5 Turbo this past month.
  • Added auto-h3 to the custom outlines.
  • Added a Magic Menu keyboard trigger which makes all 14 of your Advanced Triggers available in a floating pop-up menu. Note: the Magic Menu is disabled while using the 1-Click Writer, SEO Writer, Bulk Writer, and Penny Arcade.
  • Fixed a bug that didn’t allow parenthesis in URLs.
  • Further tweaked the summaries by ZimmWriter’s scraper.
  • Fixed a math bug in cost calculation for Penny Arcade posts using raw text instead of a URL.
  • Enhanced scraping for some tough domains when using ScrapeOwl if you add them to the Javascript box in the options menu.
  • Fixed a bug in the global background scraping counter for URLs. It never said it was on URL 2, 3, etc. Now it’s fixed.
  • Further patched the occasional JSON message.
  • Changed the GPT-4 access message from the waitlist message to now having a credit card on file at platform.openai.com and having at least one billing cycle complete.
  • Fixed an issue that would cause ZimmWriter to completely freeze up when using Crossover on Mac.

Version 7.543

Released 2023-07-21

  • I’m not looking to abuse auto updates… trust me. LOL. But, a user pointed out a bug and after investigation it really needed fixing. Sometimes the output would get “schannel” language which was unintended and could also lead to failed requests at OpenAI. It originated because I was learning how to deal with OpenAI rate limits. Yawn. It is fixed now.

Version 7.542

Released 2023-07-20

  • Rolled back a patch to translation that was giving poor results.

Version 7.540

Released 2023-07-19

  • Added 1-click ZimmWriter updates! Just click the update button in the ZimmWriter main menu!
  • OpenAI adjusted how the rate limits work, especially for GPT-4. So I completely overhauled how rate limits are handled. Now you should be able to work at 100% maximum throughput.
  • Improved scraping summarization (summarize=-, penny arcade, and backgrounds).
  • Improved title detection for YouTube video and fixed a bug where forcing ZimmWriter to use the title for YouTube videos didn’t work.
  • Fixed a bug that was introduced a few patches ago which removed hard line breaks in background summaries, making going through the data to clean it up visually hard.
  • Improved the generation of introductions to avoid those long ones that you might have been seeing because of the new GPT 3.5 Turbo update a week or two ago.

Version 7.53

Released 2023-07-14

  • Fixed a bug that would cause ZimmWriter to crash if you disabled the progress indicator (in the Bulk Blog Writer or global options). Note: you don’t need to upgrade if you leave it enabled by default.

Version 7.52

Released 2023-07-13

  • Fixed a glitch where a custom prompt might be applied twice for a product type.
  • Fixed a bug with the percentage displayed while writing. Now it’s more accurate.
  • Increased length limit for a URL in penny arcade for scraping from 225 characters to 400.
  • Fixed an issue where translations would get weird “## Input” text prompt leaking causing your manual removal.
  • Fixed a bug that would cause an undefined variable error message box if you had an expired ScrapeOwl key (maybe that you forgot about) and enabled YouTube video embedding. Now if you try to embed a YouTube video with a bad ScrapeOwl key, you’ll get a proper error message and not a fatal error.
  • Fixed an issue that would cause a double nn to appear in the text such as the conclusion and lists.
  • Increased auto-abort in penny arcade from 4 consecutive failed URL scrapes to 10.
  • Fixed an OpenAI issue where they would rate limit you even with a paid account (usually occurred with GPT-4).
  • Fxed scraping of URL titles and H1s to better account for situations where they might be prepended with non-alphanumeric characters.

Version 7.51

Released 2023-07-02

  • Fixed a bug where if using the SEO writer and an H2 using option 3 was generated that included the word “introduction”, “conclusion”, or “frequently asked questions”, it would say something to the effect of it can’t generate your outline, please try again.
  • Fixed a bug where the pop-up please wait message would not go away when generating H3 or H4 in the SEO writer when it failed to generate; however, you could click the +S to try again and it would clear it out.
  • Fixed a bug where the the SEO writer would throw a GPT-4 error message even if GPT-4 was not selected if you tried to generate H3 and/or H4 subheadings when you enabled the auto-style box (prior to generating the headings) + lacked GPT-4. Phewโ€ฆ
  • Fixed a bug where ZimmWriter would display an undefined variable error message; hard to explain why this occurred, but the nutshell is when OpenAI didn’t know what to do, and responded to ZimmWriter’s request, some of the data that ZimmWriter thought should be in there was not and this caused an error. It’s fixed now.
  • Improved AI title generation when using Penny Arcade.
  • Improved AI output of YouTube articles that were heavy in the first person… “I am”, “I did”, etc. It’s not perfect, but a step in the right direction.

Version 7.50

Released 2023-06-30

  • Added automatic H3 and H4 generation inside the SEO Blog Writer.
  • Fixed a bug where a scrape might not work if there were multiple H1 tags on the page and the first was commented out.
  • Increased success rate when using ScrapeOwl to scrape websites when using the render using Javascript option with a domain in the options menu of ZimmWriter (e.g., Airbnb now scrapes if you add the domain to the ScrapeOwl box in the options menu).
  • Added Midjourney 5.2 support.
  • Included an option to add Midjourney prompts to each H2 inside the Penny Arcade.
  • Included option for custom Midjourney prompts globally (see the ZimmWriter options menu).
  • Fixed a bug that would cause JSON errors at times. It’s an embarrassing bug… but word to the wise, don’t name OpenAI temperature variables $temp because that would be dumb.
  • Dramatically reduced articles not scraped when using Penny Arcade and ScrapeOwl together.
  • Adjusted the cost of GPT 3.5 Turbo to reflect the cost reduction by OpenAI.
  • Added a new real-time access check anytime you switch OpenAI models. In the prior versions, users would select GPT-4, lack access, and ZimmWriter would display an error and then close (losing your inputs). Now that is done away with and ZimmWriter will check on the spot, when you change models, if your API has access. Also note that ZimmWriter will bump you down to GPT 3.5 Turbo if you switch to a new API since it does not know if that new API has GPT-4 access. So you’ll have to re-select it.
  • Added an option to copy your outline OUT of the SEO writer. I know a few people wanted that feature.
  • Added a ZimmWriter version indicator to just about every window and popup.
  • ZimmWriter uses GPT 3.5 Turbo for scraping (regardless of your choices) and will use your model of choice after the scraping for article generation. A few days ago, OpenAI updated their GPT 3.5 Turbo model and it’s (at least in my opinion) weaker at following certain rules. Some of these rules involved the prompts I fed the model to summarize the scraped data. So I have fixed this and hardened it so it should likely not break again.
  • Fixed an odd bug where you’d get an error message about no H2s in the SEO writer when you had at least one H2 set.
  • Added an option to select Davinci and GPT-4 for article writing in the Penny Arcade. Keep in mind that scraping and summarization still uses GPT 3.5 Turbo.
  • You can now summarize and scrape YouTube auto-transcripts via a YouTube URL. You can use them with magic commands, inside the SEO writer, and inside of the Penny Arcade. Just paste in the YouTube URL. However, there are a few things to keep in mind.
    • YouTube URL scraping requires ScrapeOwl
    • YouTube URLs must be in the following format:
      • https://www.youtube.com/watch?v=KNM5_lO1dOA
    • Each scrape costs between 5 and 15 ScrapeOwl credits and is not always 100% successful
    • The transcripts are the auto-transcripts that YouTube generates. So… if they are not present, haven’t generated yet., etc, then it will not work.
  • You can now have ZimmWriter add related YouTube videos into your articles in any of the writing funtions, such as the SEO blog writer, bulk blog writer, and penny arcade. However, there are a few things to keep in mind.
    • YouTube video searching requires ScrapeOwl
    • Each scrape costs 5 credits and is not always 100% successful if a relevant video cannot be found
  • You can now add custom prompts for the AI while writing your articles inside the SEO blog writer, bulk blog writer, and penny arcade. Training for this can be found in the SEO writer exhaustive guide. As an aside, people should click the “online help” button in the ZimmWriter menu more often…
  • Fixed a delay in the status windows between Penny Arcade finishing a scrape and transitioning into writing the article. Some people thought ZimmWriter crashed, but now, it was just a pop-up delay.

Version 7.30

Released 2023-0609

  • Fixed a bug for Non-English ZimmWriters users who reported a character encoding issue as a result of the last update.

Version 7.29

Released 2023-06-08

  • OpenAI changed how they returned data today and broke things. I fixed them. Now, back to my vacation. I also made the alternative version available on the normal help page too.

Version 7.27

Released 2023-06-06

  • Added a user specified # of H2 subheadings for Penny Arcade
  • Added a dynamic option to use the # of H2 subheadings as merely an upper limit
  • Improved the AI portion of the scraping functionality to summarize even more URLs now without issues.
  • Fixed a bug where the Bulk Blog Writer and the Penny Arcade would not indicate which blog post # it was currently processing.
  • More verbose errors when adding a ScrapeOwl key and their server informs ZimmWriter there is a problem (e.g., your free trial ended).
  • More verbose errors when using ScrapeOwl to scrape but an error occurs (e.g., your free trial ended).
  • Dramatically boosted quality on GPT 3.5 Turbo.
  • Fixed a bug that was causing ZimmWriter to crash with this error “error: subscript used on non-accessible variable” (pain to find).
  • Fixed a bug where automatic voice would be displayed in SEO writer and Bulk writer. It only works in Penny Arcade.
  • Fixed an issue with GPT 3.5 Turbo which, since it is a weaker model, might introduce a double introduction or double conclusion. I have patched this, but you might not get the same number of H2 subheadings you specified. So for example, if you specify 15, and ZimmWriter detects that GPT 3.5 Turbo was being lazy, then you might only get 13 H2 subheadings. Just be happy and grateful for less editing and the 13 you didn’t have to write by hand.
  • Fixed a bug where ZimmWriter would not display the model used when performing a magic command using “summarize=”

Version 7.26

Released 2023-06-04

  • Fixed a bug for normal plan subscribers where ZimmWriter v7.25 would not start
  • Fixed a bug where scraping a URL where the meta title had a symbol would not work

Version 7.25

Released 2023-06-01

  • Added Penny Arcade which is a feature to rewrite Internet content for pennies. You can input up to 1,000 URLs and ZimmWriter will summarize each URL and write an article using the summary. You can even feed in raw text and summarize things such as YouTube videos.
  • Added functionality for the “summarize=” command in magic commands to now also summarize up to 10,000 words (no URL required).
  • Added a fix to help ZimmWriter work on other windows installs, such as server 2019.
  • Changed a cost warning of global background + 10 subheadings + non-turbo to happen before scrape.
  • Changed previously no table or list on H4 to now allowing for it to occur.
  • Fixed a bug where skinny paragraphs would not work on non-english output.
  • Scraping now works even better for Amazon products (ScrapeOwl API key required).
  • Added a short FAQ option.
  • Added auto voice to penny arcade.
  • Increased chance of generating a table in blog posts.
  • Added option to disable the conclusion.
  • Added a key takeaway option to the SEO Writer, Bulk Writer, and Penny Arcade.
  • Set default model to AI.
  • Improved scraping of websites.
  • Boosted number of H3 to 25 per H2 and H4 to 25 per H3.

Version 7.07

Released 2023-05-13

  • A couple bugs have been patched which deal with various things.
  • The major delay in getting this out was scraping non-english websites with script characters (e.g., Japanese, Chinese, etc). On some Windows computers (about 10%) and on Mac users using wineskin/crossover, it would fail. So the solution makes it no longer break, however, scraping those characters will not work well. You can scrape non-script non-english websites, but I do not recommend websites where 50% or more of the text is non-english script because the results will not be that great.
  • Article cost can get pricey when you combine a lot of subheadings (e.g., 10 or more) + global background + non-turbo. So to help with some of these costs, without losing quality, I am forcing turbo on determination of auto-keywords of each subheading when global background is being used. Again, it’s just being forced for the step of determining the auto-keywords on each subheading call. The generation of the result is still based on your model of choice and can still add up if you’re doing more than 10 H2s + non-turbo + global background.
  • Fixed a bug in the bulk generator which would default to 5 subheadings if you chose 15. Now you can get the full 15.
  • In the SEO Blog Writer, Option 1 copy headings from clipboard no longer uses # because it’s too confusing for users. # denotes markdown. The headings you copy should use a single – to denote a H3 and a double – to denote a H4. For H2, nothing comes before it. Also, every heading should be on its own line.

Version 7.06 โš”๏ธ

Released 2023-05-10

  • Fixed the vertical menus from re-positioning themselves in the center of the screen after adjusting the settings.
  • Fixed the JSON message in about 99% of the cases.
  • Fixed the H1 message in about 99% of the cases.
  • Dramatically improved number of websites which can be scraped.
  • Added a concurrency check on ScrapeOwl requests.
  • Patched a scary infinite loop.
  • Added a way in the advanced triggers to disable scraping of URLs in magic commands.
  • Added a non-english output option in the advanced triggers which also applies to scraped URLs (however it’s not recommended to feed non-english summaries into ZimmWriter for blog posts)
  • Bulk generation should now fail waaaaay less.
  • Fixed a bug where the SEO writer would start without any H2.
  • Added numbers to track each H2, H3, and H4.
  • You can now copy H3 and H4 levels using Option 1 inside the SEO Blog Writer.
  • Midjourney prompt is available for every H2 in both the SEO Blog Writer and Bulk Blog Writer.
  • Custom prompt layout configuration.
  • The comma to separate blog post titles in the bulk generator has been replaced with a semicolon.
  • Fixed an issue a user was having with generating the outline for the Bulk and SEO Blog Writers.

Version 7.04

Released 2023-05-07

  • Fixed a pop-up that displays your scaled screen resolution when you start ZimmWriter. It was accidently left in from last night’s wee hour debugging session.

Version 7.03 ๐Ÿ˜ด

Released 2023-05-06

  • A user with 4 monitors was having issues where the SEO writer would not re-open. It appears there are some edge case issues with using the menu location memory. So I am unfortunately turning this off for now until I can figure it out.

Version 7.02 ๐Ÿ˜ด

Released 2023-05-06

  • Fixed a bug where the main menu would not re-appear after closing ZimmWriter when the menu was minimized.

Version 7.01 ๐Ÿ˜ฎโ€๐Ÿ’จ

Released 2023-05-06

  • Fixed a bug that prevented users from using their own IP to scrape without first entering a valid ScrapeOwl API key.

Version 7.0 ๐ŸŽ‰

Released 2023-05-06

  • Added the Internet to ZimmWriter. It is just the first step. At the moment, you can scrape a URL using a magic command and also use URLs inside of the SEO Writer. Training will come on the help page soon. Again, this is the first step.
  • Fixed a bug where the bulk writer would stop when OpenAI returned an outline with a comma.
  • Introduction now talks about stuff in the article.
  • Adjusted the keyboard triggers to take advantage of the 8,000 token increase in GPT-4 (but it’s $$). In general, you should be able to feed up to 5,000 words before getting a length error. However, that will also depend on other settings you have chosen.
  • Fixed an annoyance where ZimmWriter would title case headings. ZimmWriter should no longer change your article heading formatting aside from the title itself.
  • Huge boost to the quality of the write in the style of box and auto-style box. It should no longer pretend to be the person but rather use their style of writing to its best ability.
  • Added a global background for SEO which affects writing the entire article and also Option 3 H2 generation.
  • Nearly eliminated repetition of the title in each H2 intro paragraph.
  • Found a way to have a particular spelling (e.g., Hillbilly English, UK English, Australian English, etc). Just put that into the language box (e.g., (Hillbilly upper Central Tennessee, east of Nashville which includes southcentral Kentucky).
  • Fixed a math glitch that made it seem like the SEO buffet cost more than they really were. I forgot to zero out the running total between pages.
  • Added a confirmation window when you click the Erase All Data button in the SEO Writer to prevent accidental clicks.
  • Most of the main menus now retain where you moved them on the screen when you re-open them.
  • The vertical menus are now 75% the height of your screen size (so much taller).
  • Voice got an overhaul and the addition of “We”.
  • Active voice.
  • Dramatic reduction in failure rates during article generation.
  • Local SEO Buffet now has voice.
  • Added a “summarize=” secret code for prepending to a URL as a standalone Magic Command.
  • Upon using a URL in a Magic Command, the summary (which is not normally output absent the secret code) should be stored in the clipboard as a bonus.
  • Added a moderation safety check to the scraper. You can disable it if you want at your own risk.
  • Paid OpenAI accounts get a speed unlock.
  • Added rate limit checking to conform to the new OpenAI rules.
  • Non-paid OpenAI accounts are rate limited to 2 requests per minute. I added an option so that if you have a paid account, I lift this restriction. How much faster will ZimmWriter go? Your limit goes up to 50 requests per minute. But, some requests take over a minute (I have seen some requests take up to 170 seconds for a single request) so it’s not a direct 25x faster speedup. But for many requests that are quick, they will not get paused by the rate limit.

Version 6.551

Released 2023-04-14

  • Bulk Writer
    • Fixed a bug. When using the bulk writer, ZimmWriter generates an outline using OpenAI. Sometimes that outline would include an H2 that had a comma. The comma caused ZimmWriter to hiccup and stop the bulk generation without any error message. I have patched this and the Bulk Writer should run longer now.

Version 6.55

Released 2023-04-07

  • Bulk Writer
    • In addition to adding titles as a CSV list, you can now also add them as a title on each new line
    • If the title you add is intended to have a comma (e.g., How to Lose Weight, Get Fit, and Win at Life) then you can add a forward slash before each comma in the title (e.g., How to Lose Weight\, Get Fit\, and Win at Life) for ZimmWriter to include the comma and not break it up into different articles
  • Bulk Writer and SEO Writer
    • In 6.5 the paragraphs are split up into shorter paragraphs. It does not affect word count. It simply affects readability. Do you like longer fatter paragraphs? If so, then check the disable skinny paragraphs button and life will be good for you.
    • I added a new length setting of Tiny. So now you have tiny, short, medium, and long. It is possible to generate blog posts of all kinds of sizes and shapes. If you ever have any questions about “How do I write X number of words” then just visit this link and review how it was accomplished.

Version 6.54

Released 2023-04-03

  • Fixed a bug that would remove numbers from the start of a H2 when you press the button to copy them from the clipboard inside the SEO Blog Writer
  • Fixed an issue that cut off a lower portion of the vertical menus (SEO Blog Writer and Local SEO Buffet) on certain displays
  • Shortened conclusion
  • Now the keywords and outline generation across ZimmWriter use the model chosen by the user. Previously I used Davinci for those, regardless of your model of choice because it gave good output, whereas using Turbo for instance gave worse output. However, this made some users confused when using Turbo but seeing a higher estimated price when using keywords or the outline. So, the TLDR is now whatever model you choose, is what ZimmWriter uses for the keywords and outline generation.
  • I removed the tokens spent because the math and wordcount won’t add up due to backend processing. I left in the price because that is very accurate. Note that any outline generation you perform inside the SEO Blog Writer is not added into the resulting cost. It’s there, but just not added in because it happens before you write the article and I don’t know how many generations you will decide to perform.
  • Fixed a bug how the AI would sometimes write a markdown H2 and then the heading again in non-markdown format immediately below.

Version 6.53

Released 2023-04-01

  • Fixed a bug in the Title input box of the SEO Blog Writer that limited the title length
  • Fixed a bug that caused the H3s to sometimes generate a looooooong list of H3 items
  • Fixed a bug that caused back to back H2s with H3s
  • Restored functionality to specify up to 10 keywords per H2 subheading in the SEO Blog Writer
  • Improved the quality of the outline generation of H2 headings in the Bulk Blog Writer and SEO Blog Writer
  • Added a feature to disable all keyboard triggers except exit
  • Fixed a bug that caused the text in some buttons on some user’s computers to get cut off and not display
  • Fixed a bug that wouldn’t let 25 H2s generate using option 2 inside the SEO Blog Writer

Version 6.51

Released 2023-03-31

  • hotfix to a debug popup window that appeared in certain situations when generating using H3

Version 6.50

Released 2023-03-31

  • Added GPT-4 and GPT3.5 Turbo throughout ZimmWriter. You can select a global default in options, but then also temp override the global in the various areas inside ZimmWriter. If you attempt to use GPT-4 and your OpenAI account does not have access to that AI model, you will get an error message and ZimmWriter will close
  • Increased the limit of bulk generation from 10 articles to 1,000 articles
  • The paragraphs in the 1-click, bulk, and seo writer went on a diet; so no more (or less frequent) fat paragraphs
  • Added an adjustable # of H2 + background settings for the SEO writer. The added bonus is now the method 2 and 3 will generate your H2 headings using that designation
  • Reflowed the entire SEO writer vertically (was not fun and took a day) but now it’s easier to add more stuff from a layout perspective
  • Adjusted the Local SEO Buffet prompt so that it reduces the chances of stating that your business is “located in [city] but rather that your business simply serves the city
  • Added a location background section to the Local SEO Buffet
  • Added an option to customize the number of services and locations in the Local SEO Buffet to 25 each, giving a total of 625 articles
  • Modified the SEO keyword box so now you can put in single word keywords (previously it would filter those out but the ZimmWriter community wanted short tail words too)
  • Added option in the options menu to hide the input on a magic command and rewriting. Previously, it would paste the input (highlighted text) and the output. Now you can turn off pasting of the input. Some people prefer this because they can just press CTRL-Z to undo the magic command or rewrite if they don’t like the output.
  • Added option in the options menu to hide the tokens spent when using a keyboard trigger that cost over 1,000 tokens.
  • Lowered max keywords per H2 section from 10 to 5. The reason is 10 is just too high, and with so many requests for shorter articles, the is one way to help accomplish that goal. You can also reduce the length of your article by selecting less H2, not enabling FAQ, not enabling tease, not using KW, etc.
  • Adjusted the non-english output of the Bulk and SEO writer. Now it doesn’t use any extra tokens (like the previous version) and if you use GPT-4, the result should be a lot better.
  • Advanced triggers no longer has an “update” checkbox. Instead, to access the menu for a magic command or background trigger, just right click on the button. You can also delete individual saved background and magic commands.
  • Fixed it so you can’t accidently press a trigger (magic command, rewrite, continue writing) multiple times by accident and queue it up causing multiple runs.
  • Tooltips for many options inside the SEO writer and Bulk writer
  • Sometimes people get odd errors from OpenAI (no credit card on file, their account isn’t active, their account was terminated due to a violation, etc). Now those errors should display upon starting ZimmWriter if there is a problem with the user’s API key.
  • Added better flagging if content doesn’t pass OpenAI’s usage policy. They will send a message and I’ll display that message, even on long blog creations. The only time I don’t do usage checks (as far as I’m aware) is some of the Local SEO Buffet (but I do some usage checks there, just not on everything)
  • Button in the SEO blog writer to copy your headings from the clipboard and auto-insert them into the input fields. Ideally have them in list format or CSV format.
  • Additional checks on the output directory to avoid situations where ZimmWriter would write the files but fail to save them due to lack of filesystem permissions, but keep going.
  • Added non-english output to the Local SEO Buffet.
  • Auto generate a Midjourney AI image prompt for blog posts.
  • Auto generate a meta description for blog posts.
  • Added error detection for when a user selects GPT4 as the model but their OpenAI account does not have access.
  • ZimmWriter is now more persistent at retrying when OpenAI fails. That means that you should experience less article failures.
  • Live OpenAI health indicator in each output file so you can keep track of how OpenAI is doing and when you might want to hold off generation. It goes well beyond the green status bar OpenAI has.
  • H3… yes, you can now select it as an option in Bulk and force it in the SEO blog writer. It adds a LOT of words to the output, so don’t enable it and then wonder why you get a lot of words. Also, it is inserted at random in the bulk generator when active so don’t expect it to see it all the time when enabled.
  • VA mode has been created which will marry the Gumroad license key to your OpenAI key. You go through the setup (and generate the settings.ini) on your computer, with the secure mode enabled. You zip it all back up, send it to your VA, and when you revoke the API key, ZimmWriter will stop working (either immediately or within a few hours).

Version 6.05

Released 2023-03-01

  • Fixed a bug that accidently limited the input of magic commands to 250 words.

Version 6.0

Released 2023-02-27

  • Improved AI generation of H2s in both Bulk and SEO modes
  • Reduced fluff at the beginning of each H2 subsection
  • Added an auto-style option
  • Added an automatic keywords option
  • Added a markdown table option
  • Adjusted the bullet and numeric lists so that they are in markdown format and paste better into WordPress
  • Fixed a bug that caused “\t” to appear in the output (frequently when having ZimmWriter generate code)
  • Added a Local SEO Buffet mode
  • Added a background section for magic commands, continue writing, and rewriting
  • Added options such as boost mode, literary devices, listicles, etc., for magic commands, continue writing, and rewriting
  • Added a save feature for background data and a background data repository
  • Added a save feature for magic commands and a magic command repository
  • Added three extra keyboard triggers which are assignable to the saved magic commands
  • Added an output to the text file in Bulk and SEO mode which displays the options chosen
  • Added an output to the text file in Bulk and SEO mode which displays the automatic keywords used
  • Added an option to disable displaying the tokens spent + options used in the Bulk and SEO mode text files
  • Added an option to disable displaying the automatic keywords used in the Bulk and SEO mode text files
  • Added an feature which automatically saves the settings used in the Bulk and SEO modes
  • Added a feature to reposition and/or hide the progress indicator for Bulk and SEO modes
  • Added a changelog ๐Ÿ˜‰
ranking tactics logo

The information provided on this website is provided for information 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 2023