How I Built WritingGPT, a Fully Automated AI Writing Team
It writes articles that rank on Google for about $1 each

ChatGPT is a massive leap forward in the AI creation of human-like writing. But when you ask the system to write an entire blog post or article, it often generates generic drivel or meanders off on bizarre tangents.
I’ve spent the last several years experimenting with AI writing. Although ChatGPT is a neat system, it never really met my needs for creating readable, useful articles.
Recently, though, two things changed that:
- The release of the GPT-4 API
- The emergence of AutoGPTs — AI agents that combine AI systems together in chains, improving their output by having the AI systems work together
The result is a new Beta system that I call WritingGPT. It’s a custom-developed Python program that uses Open AI’s GPT-4 to simulate an entire writing team, crafting high-quality blog posts based only on a prompt and a target keyword.
WritingGPT creates articles that provide genuine insights — and that rank on Google. Here’s how I built it.
AIs Talking to AIs
As
AutoGPTs are a powerful new tool in the generative AI toolbox. Much like the HuggingGPT model I wrote about recently, AutoGPTs use one AI system (usually ChatGPT) to direct the actions of other AI systems.AutoGPTs and HuggingGPT do this on the fly. Based on a query from a user, they write new code and create new connections to try and solve a problem. That makes them versatile since they can create new connections to solve a variety of problems. But for my goal of creating an AI writing team, I realized that I didn’t really need that level of versatility.
I had a very specific task: writing a good blog post. The steps to do that are fairly well defined — there was no reason that WritingGPT needed to write its own code or wire itself up dynamically.
Instead, I could conjure up a variety of AIs and chain them together in a consistent, predictable way intended to solve my specific, bounded problem.
Human Inspiration
To create the structure of WritingGPT, I turned to a process that I already knew well. Within the niche website community — and especially on podcasts.
These teams have a fairly consistent structure. Generally, the owner of a niche site will decide on a topic to write about based on their own knowledge and keyword research. They’ll then hand that task to a freelance writer, who will research the topic and write a draft blog post.
An editor — usually someone higher paid and with more experience — will review the draft and make suggestions. Sometimes, a dedicated SEO person will weigh in with suggestions specific to keywords, structure, and other SEO considerations.
The freelancer will rewrite their draft based on the suggestions they receive. Finally, a production editor will review the draft, insert photos, add links, format the draft and upload it to Wordpress or another content management system.
The website owner will generally look at the final version, make their own edits, ensure that the piece is in their voice (or their blog’s voice), work in personal experiences and anecdotes, and hit publish.
Again, it’s a consistent process that has straightforward roles and steps. Why, I wondered, couldn’t one recreate it using AI?
A Full Writing Team in Silicon
That’s exactly what I decided to do. Specifically, I created a Python script that integrates with the GPT-4 API from OpenAI.
GPT-4 is the most evolved version of OpenAI’s Large Language Model, and is the underlying technology currently powering ChatGPT Plus. It’s a remarkable model that’s capable of generating surprisingly human-like text.
As its initial input, WritingGPT takes in two things:
- An idea for a blog post. This can be as simple as a title for the post or as complex as a title and a list of notes about what the post should include.
- A target keyword or phrase for the post, for SEO purposes
It then hands these off to the GPT-4 API in a series of sequential steps.
WritingGPT is built around the API’s Chat Completion function. Much like ChatGPT, this function takes in a prompt and responds using GPT-4. Unlike ChatGPT, though, the API includes another useful function — the ability to specify a “role” for GPT-4, using what’s called a system message.
Basically, roles allow you to tell GPT-4 what kind of entity you want it to be. Whereas ChatGPT is locked into being a chatbot, roles let you specify exactly what capabilities you want GPT-4 to have.
For WritingGPT, GPT-4’s roles allow me to create a series of instances of GPT-4, each of which acts like a member of a traditional writing team.
When I provide WritingGPT with a prompt, its first step is to hand that prompt to a version of GPT-4 that I’ve instructed to play the role of a freelance copywriter. The AI copywriter interprets my prompt and writes a first draft of the target article.
Here’s an example of the code I’m using:
#Write initial draft
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "system", "content": "You are a professional freelance copy writer"}, {"role": "user", "content": "%s" % initial_directive}
]
)
initial_draft = (response.choices[0].message.content)
print ("Initial draft", initial_draft)
When the draft is complete, the AI copywriter sends it along to the next member of my virtual writing team: a version of GPT-4 that I’ve told to play the role of an experienced editor.
Depending on the type of article I’m having the system write, I can specify what type of editor I want to conjure up. If I’m having WritingGPT generate a tech article, for example, I can conjure up an AI editor with extensive experience working for tech publications, just by altering the system message.
The AI editor looks at the AI copywriter’s draft and provides a bulleted list of pieces of feedback and advice.

The draft then goes to an AI SEO professional, again created with a GPT-4 role. My system message — which defines the system's role — makes sure to specify that this SEO pro has “10+ years of experience” so that they’ll hopefully really know their stuff!
As with the AI editor, the AI SEO pro provides a list of pieces of advice for the AI copywriter based on their draft and also the target keyword I’ve specified.
The AI copywriter then takes this feedback from the AI editor and AI SEO pro and rewrites their draft into an improved, final version.
Once the final version is complete, the AI copywriter submits the draft to an AI photo researcher (again created with a GPT-4 role), who suggests photos to include in the article.
Finally, the AI photo researcher hands the draft to an AI production editor who formats the draft using HTML, adds links to the websites of any businesses or locations mentioned in the article, and then spits out the final version.
To summarize, here are the AI “people” on WritingGPT’s artificial team:
- Freelance copywriter
- Experienced editor
- SEO pro
- Photo researcher
- Production editor
By wiring together multiple, customized instances of GPT-4, WritingGPT simulates an entire writing team using AI.
Crucially, I didn’t need to train each AI “person” to perform their role. GPT-4 can perform all the roles well — it just needs to be told which role to play using different system messages.
Results
In my testing, WritingGPT does a great job writing coherent, SEO-optimized blog posts.
Let’s take a look at using WritingGPT to write a blog post for my niche website Life Tech Shorts, which covers home tech. We’ll write a post answering the question, “Are Dishwashers Airtight?”
Here is the initial prompt and target keyword that I gave to WritingGPT:
initial_directive = "Write a blog post answering the question Are Dishwashers Airtight?"
target_keyword = 'are dishwashers airtight'
In about 1 minute, the copywriter churned out a basic first draft answering the question and handed it to the AI “editor.” The first draft was essentially what you’d get out of ChatGPT.
Here’s what the AI editor had to say about improving the draft:
Title suggestion: “The Airtight Debate: Exploring the Truth About Dishwasher Seals.” This rephrased title creates a sense of curiosity and adds a more engaging tone.
- Introduction revision: Begin with an engaging hook in the introduction to capture the reader’s attention, like, “The dishwasher — savior of countless hours spent handwashing dishes and arguments over whose turn it is. But have you ever wondered how this clever appliance keeps water in and air out?”
- Simplify and restructure sentences to improve clarity and readability, e.g., change “Since the process involves using water and producing steam…” to “The dishwasher uses water and produces steam during its process…”
- Break up long paragraphs into shorter, more digestible ones for readers’ ease.
- Add statistics or studies that showcase the efficiency of dishwashers or the advances in dishwasher technology over the years to pique reader interest.
- Consider using subheadings to break up the text, making it easier for the reader to follow. For example, use “Watertight vs. Airtight: Understanding the Difference” as a subheading.
- Use a more conversational tone to keep the reader engaged, e.g., replace “it is crucial to note…” with “it’s important to remember…”
- Include real-life examples or anecdotes to make the blog post more relatable, such as personal experiences dealing with dishwasher issues or a well-known incident related to dishwashers.
- Conclusion revision: Strengthen the conclusion by summarizing the key points and providing a final thought or takeaway for the reader. For instance, “In the end, the dishwasher’s intricate balance between watertight and semi-airtight seals proves to be the secret behind its effectiveness. Next time you load those dirty dishes, you can appreciate the smart engineering and design that makes this kitchen helper so indispensable.”
That’s a lot of feedback! The AI-created SEO pro weighed in as well:
SEO edits 1. Optimize the title by incorporating target keyword: Consider revising the title to “Are Dishwashers Airtight? Everything You Need to Know about Dishwasher Sealing Mechanisms” to directly address the target keyword and appeal to user queries.
2. Add target keyword and related keywords in subheadings: Use subheadings that contain the target keyword and related keywords, such as “Are Dishwashers Airtight or Watertight?” and “Understanding Airtight and Watertight Design in Dishwashers.”
3. Include relevant internal and external links: Add internal links to your other blog posts related to dishwashers or appliances and external links to authoritative sources that discuss dishwasher mechanics, regulations, or energy efficiency.
4. Add images with optimized alt-tags: Incorporate relevant images, such as diagrams or photos of dishwasher components or seals, and include image alt-tags that contain focused keywords.
5. Enhance readability with bullets or numbering: Break down key points about dishwasher design, steam vents, and drying cycles into bulleted or numbered lists to make it easier for readers to digest the information.
6. Strengthen EAT elements: To establish Expertise, Authoritativeness, and Trustworthiness, add an author’s bio with their credentials and expertise in appliances or home maintenance. Also, consider including quotes, testimonials, or expert opinions from professionals in the field.
7. Apply LSI keywords: Incorporate Latent Semantic Indexing (LSI) keywords, which are terms that are frequently found with the target keyword, such as “dishwasher door seal,” “waterproof appliances,” and “dishwasher steam vent.”
8. Optimize meta description: Write a compelling meta description that includes target and related keywords to better inform potential readers of the blog post’s content and entice them to click-through.
9. Update and repurpose content: Periodically review and update the article with the latest information, trends, and technology regarding dishwasher design and functionality. Additionally, consider repurposing the content into different formats, such as infographics or videos, to reach a wider audience.
10. Monitor and maintain keyword ranking: Track keyword rankings and site traffic to ensure your post is effectively targeting the main keyword and its variations. Be prepared to make adjustments to the content to maintain or improve ranking performance.
WritingGPT’s AI copywriter then took both sets of feedback and rewrote the draft into a final version. It took some advice from its editor (especially about the introduction) and ignored other suggestions — just like a human writer!
The AI photo researcher then suggested some photos to integrate into the draft, and the production editor added in relevant H2s and other headings to structure the post.
The production editor also provided a solid title: “Are Dishwashers Airtight? Understanding the Mechanics of Your Kitchen Hero”
Here’s a chunk of the resulting article, loaded into my site’s Wordpress backend:

GPT-4 can’t produce photos (yet), so instead of actually adding in photos, I instructed WritingGPT to provide the alt text for a proposed photo, which I could then go and take in the real world.
I’m a professional photographer, so unique photos are a big selling point for my niche websites. Producing original photos helps to make the output of WritingGPT more unique and useful for my readers. The AI photo researcher gives me a photographic brief just as a real photo researcher/editor would, and I produce and add the photos!
In future iterations, I could potentially integrate with the DALL-E API to add custom illustrations. But for now, I like the addition of real-world photos.
After adding the photos, I reviewed the draft and fact-checked WritingGPT’s output. I also added some of my own experiences and made sure that each part of the article was compelling and made sense. It’s the same process I would use with a draft from a human writer or writing team. That process takes about 5 minutes per article.
Here’s the final result, published on my blog:

It also comes back as 0% plagiarized.

How does it do from an SEO perspective? Right off the bat, the article scores a 40 on Surfer. That’s not perfect, but it's not bad given that the average competing article is around 52.

The primary issue here is that the article is short — only about 500 words. For more complex topics, WritingGPT writes longer articles, which generally means higher Surfer scores.
But regardless of an SEO score, the proof is, as they say, in the pudding. Within six hours of publishing my post from WritingGPT, it had ranked #2 on Google for the target term. It will likely move into the number 1 slot in a few days.

Granted, this is a long-tail keyword. But still, ranking in a few hours is a great sign that Google likes the content and knows that it’s valuable for audiences. I guess WritingGPT’s virtual SEO consultant knows their stuff!
Limitations and Future Additions
Although I’ve found that WritingGPT is a useful tool for a wide variety of blog post types, there are some limitations. Like any generative AI system, WritingGPT occasionally “hallucinates” or makes things up.
If anything, the multiple layers of writers and editors seem to introduce more “hallucinations” (alongside more accurate and unique insights) into the system’s output. It seems like the AI copywriter sometimes takes things that the AI editor says as fact, which can introduce errors if the AI editor made those things up.
The system is pretty good at not pretending to be a person — partially because I included guardrails, like telling WritingGPT not to perform tasks for which it has inadequate information — but it still sometimes makes errors.
That’s why checking the system’s results carefully is essential — you can’t just grab the output and hit publish. Of course, you should check the work of human writers if you hire them to write for your site, too!
WritingGPT is also more expensive to use than ChatGPT. Because the system is constantly handing long-ish drafts and chunks of text back and forth to its various parts — and because the GPT-4 API is a lot more expensive than earlier versions — writing articles with the system isn’t free.
Still, it’s pretty cheap. Based on my billing data, writing 1,000 words with WritingGPT seems to cost about $1. WritingGPT is also slow, taking about 10 minutes to write a full article.
The system can write a surprising variety of types of blog posts. I’ve found that feeding it a bit of unique information — notes from a visit to a local restaurant, for example — helps it produce truly interesting and unique content. The more detail you feed in, the better and less AI-sounding the results become.
Another nice thing about WritingGPT is the fact that the system is modular. I could easily add in other “team members” with new roles any time I want.
For example, I could add an AI fact checker. Or an AI critic, who would debate the points in the copywriter’s article, helping the copywriter to make the article better — kind of like a verbal version of the Generative Adversarial Networks that generate artificial faces.
Or once GPT-4’s Browse function gets added to the API, I could add an AI research assistant who would visit live websites to feed WritingGPT up-to-the-minute data.
My Plans for WritingGPT
At the moment, I’m not planning to release WritingGPT for others to use, although that could change. I’m using it for my own internal niche websites and also for some of my clients.
The basic idea behind the system, though, is one that nearly anyone could apply to nearly any industry. Combining together AI entities — imbued with intelligence via GPT-4 and assigned different roles — and having them speak to each other and work together to improve their output is a powerful process that’s widely applicable.
I could see an AI-generated legal team helping to structure a legal case, identify documents to seek in discovery, draft complaints, and otherwise collaborate. I could also see an AI-generated medical team doing “rounds” on a patient by leveraging various AIs playing the role of different specialists, nurses, and providers.
AutoGPTS are powerful, but they’re hard to control. The “team GPT” approach behind WritingGPT leverages the power of having multiples AIs talk to each other, but also ensures that their work followers a clear operating procedure and thus yields useful, consistent output.
Team-based AI is also a way to move beyond the arms race of building ever-bigger language models. WritingGPT is smarter, not bigger or more powerful. It uses an existing system — along with a process derived from the real world — to improve its work.
Comments
Post a Comment
Thank You.