ChatGPT Fiction — A Detailed Demo

David J. Germain
23 min readJan 20, 2023

--

A step-by-step example of writing prose with GPT-3

“Garden Interiors,” by David J. Germain and Midjourney v2

Table of Contents

-Part One — Input Text
— Get Started with a Synopsis
— Story Beats
— Character Bios
-Part Two — Dialog
— GPT-3 Limitations
— Possible Workarounds
— Generating Basic Dialog
— Stylizing Dialog
— The Dialog Result
— My General Advice on Dialog
-Part Three — Prose
— Prose Style
— Applying Prose Style
— Checking Prose for Issues
— Fixing Dialog Tags
— World-Building
-Conclusions

Part One — Input Text

Note: Here’s a condensed version of this article.

Get Started with a Synopsis

Where should you begin? By preparing your input text. The input text will serve as a seed from which the AI will grow a piece of fiction. In practical terms, this probably means dreaming up some story details that interest you and writing them into the prompt.

In this example, I’m not writing an entire novel, only an opening scene. This is because ChatGPT, in my experience, does best with smaller assignments. As assignments grow in scope, the alignment problem creeps in — the AI has more room to misinterpret your requirements. I suggest defining a synopsis with the AI, something that will become, say, 1500 words of written prose.

Here’s an example input (all input will be in italics):

The following is “Synopsis A”:

A crypto BROKER meets with her CLIENT who is concerned about the solvency of the COIN he’s invested in. Through their conversation, it becomes clear that other similar funds have recently crashed, and COIN is likely next to become valueless. COIN has frozen trading and the client is concerned. The client believes that QianCoin might have been a Ponzi scheme. However, the client suggests that he is part of an organized crime syndicate, and they want their money back. The crypto broker explains that she’s just an influencer who promotes the coins. She has no power. The client threatens her. He explains that the money isn’t his — it belongs to his mob BOSS. The BOSS will do anything to get that money back. The girl explains that she doesn’t know how crypto coins work. She’s just a YouTuber that people approached to sell these coins. She’s paid in coins too. She’s broke now. The client asks where her EMPLOYER is, but she doesn’t know. Maybe Puerto Rico? Bahamas? The client puts the broker on speaker phone with his mob BOSS. The BOSS warns her — she has 48 hours to get the money back or her life will be hell. Then the BOSS warns the client. The same goes for you. The broker and the client look at each other. They realize they’ve been thrust into a dangerous game together.

What parts of this synopsis should you take note of?

I’m labeling things — “Synopsis A,” “BROKER,” etc. The AI won’t “remember” what you tell it in a traditional human sense, but it will leverage information that you’ve already shared with it in the same chat. You can make this process easy for the AI by labeling bits and pieces of your conversation.

Second, I’m labeling my main characters and objects using generic words (like CLIENT or COIN) instead of assigning proper names. I’m doing this because it will make substitution easier later. Also, I can write detailed character or object descriptions and leverage these generic labels.

Note that when I give my “Synopsis A” to ChatGPT, it will try to write a story or analyze my story. That’s fine — you can ignore these results at this point or press the “Stop Generating” button. There is one exception — if you have violated its safety requirements. When your story depicts certain types of sex or violence, ChatGPT will refuse to assist you or will recommend.

Story Beats

Now that I have a synopsis, I want to convert my brainstorm-style synopsis into story beats — major sections of story that I can work with. I’m going to use Dan Harmon’s Story Circle. I could have referenced “Save the Cat” or a Shakespearian sonnet. The more of these structures you’re familiar with, the more options you have.

Rewrite “Synopsis A” using Dan Harmon’s Story Circle as the structure, but I would like to end on a cliffhanger. Label each of the eight sections in the Story Circle. Do not add additional story beats. The cliffhanger should finish with “Then the BOSS warns the client. The same goes for you. The broker and the client look at each other. They realize they’ve been thrust into a dangerous game together.”

What am I doing with this request? If you’ve used an AI writing system, you probably noticed their tendency to become too creative. They will often continue a story or add additional story beats. Because I have a clear idea in mind, I want to restrict its creativity by clearly specifying the ending of this section.

Here’s the output that ChatGPT gives me:

The Ordinary World: The crypto broker is a successful YouTuber who promotes various crypto coins to her followers. She’s made a good income from it but doesn’t have much knowledge about the inner workings of the crypto market.

The Call to Adventure: The client, who is concerned about the solvency of a coin he’s invested in, meets with the broker. Through their conversation, it becomes clear that other similar funds have recently crashed, and the coin is likely next to become valueless. The coin has frozen trading, and the client is worried.

Refusal of the Call: The broker tries to play down the situation, saying that she’s just an influencer and has no power to help the client recover his money. But the client reveals that he’s part of an organized crime syndicate, and they want their money back. The broker is scared and tries to avoid getting involved.

Meeting the Mentor: The client puts the broker on speakerphone with his mob boss. The boss warns the broker that she has 48 hours to get the money back or her life will be hell. He also warns the client that the same goes for him. The broker and the client are both terrified and realize they’ve been thrust into a dangerous game together.

Crossing the Threshold: The broker and the client look at each other. They realize they’ve been thrust into a dangerous game together.

Tests, Allies, Enemies: Cliffhanger, It’s not specified

Approach to the Inmost Cave: Cliffhanger, It’s not specified

The Ordeal: Cliffhanger, It’s not specified

Why am I doing this? ChatGPT will tell me which beats are missing from the structure I desire. In my case, these are the last three beats, which is fine because I want a cliffhanger anyway. However, if I was missing a critical beat early in my story, I might want to rework my synopsis (or ask ChatGPT to rework my synopsis).

Most importantly, I can now leverage these story beat labels in future writing tasks, emphasizing the theme of each beat (i.e., the “refusal” nature of the third beat).

So, I copy the first five beats of the Story Circle output and paste them back into ChatGPT. I’ll refer to these as “Synopsis B.”

Character Bios

By the end of this series, I want ChatGPT to build some dialog and prose for me. However, I’ll need some characters to produce this dialog. How do we make sure the characters we create with ChatGPT are believable and true-to-character? By building out their bios.

When I do this, I’ll restrict my current bio to four or five key sentences that are directly related to the scene I’m writing. Maybe my character has a bad relationship with her mother, but if it’s not going to influence her behavior directly in this scene, I won’t mention it.

ChatGPT is not building a complex personality profile. It doesn’t handle subtext well. If you mention someone’s mother, there’s a high chance she’ll find her way into the story. Focus on these categories:

· Character name

· Character background — one sentence that sets up the current story/scene

· Character personality — how does the character appear vs. what are they really like

· Character motivation — what is the character trying to do in this story/scene?

· Character Dialog traits — sentence length, vocabulary, questions vs statements

Here are my examples:

The following is the “BROKER Dialog Description”:

The BROKER is named Alice. The BROKER became a minor celebrity on YouTube, an influencer, then she was hired by COIN to promote their crypto coin. She presents herself as bubbly and fun, but she’s cleverer and more grounded than she appears. Her motivation is to distance herself from COIN, which she senses is about to implode. The Broker often speaks about herself in long, rambling sentences.

The following is the “CLIENT Dialog Description”:

The CLIENT is named Mr. Chen. The CLIENT joined organized crime in his early 20s and has risen through the ranks and is now trusted with laundering money. He presents himself as a financial advisor, but he’s rougher and more dangerous than he appears. His motivation is to retrieve his investment from Alice before COIN collapses. The CLIENT speaks in short, direct sentences, asking pointed questions or making definitive statements.

The following is the “BOSS Dialog Description”:

The BOSS is named the Boss. The BOSS was born into a crime family and feels he must constantly prove he belongs there through ruthlessness. He presents himself as invincible, but he fears being disrespected or looking weak. His motivation is to frighten BROKER and CLIENT into retrieving his money. The BOSS speaks in angry outbursts and threats.

Next, we need to define some of the character relationships. How do the characters think of each other when the scene begins?

The following is the “BROKER CLIENT Relationship”:

The BROKER views the CLIENT as an attractive and wealthy investor. He is her customer, but she doesn’t mind his company. The CLIENT views the BROKER as an attractive and naïve way to launder money.

“Garden Interiors 2,” by David J. Germain with Midjourney v2

Part Two — Dialog

GPT-3 Limitations

At this point, its worth discussing the practical limitations of ChatGPT. ChatGPT (and its underlying software, GPT-3) currently allow 4000 tokens per chat. For simplicity, I think of tokens as words. Included in this 4000-word max are the words you write in prompts and the words it uses to reply. In the future, this may expand, but the computing cost gets higher as the number of tokens in the chat increases.

Perhaps for this reason, ChatGPT will often write a very short, very direct version of whatever you provide. Even if you ask it to use 500 words, it will often write something shorter and more to-the-point.

Possible Workarounds

For this reason, we want to use each chat to create a useful and concise output, then use that output as input for our next chat.

Here’s an example of a broad process we could use for prose writing:

· In chat #1, use input text to create a Synopsis Structure output and Character Descriptions.

· In chat #2, use the Synopsis Structure/Characters input to create a Dialog output.

· In chat #3, use the Dialog input to create a Prose output.

· In chat #4, use our Prose output to create a Revised Prose output.

Alternatively, we can break apart our dialog into several sections, as follows:

· In chat #1, use input text to create a Synopsis Structure output and Character Descriptions.

· In chat #2, use Ordinary World story beat to generate dialog, prose, etc., for that sections.

· In chat #3, use Call to Adventure story beat to generate dialog, prose, etc., for that sections.

· In chat #4, use Refusal of the Call story beat to generate dialog, prose, etc., for that sections.

· In chat #5, use Meeting the Mentor story beat to generate dialog, prose, etc., for that sections.

· In chat #6, use Crossing the Threshold story beat to generate dialog, prose, etc., for that sections.

For me, this second solution worked best. The writing tracked most closely to my original plan (aka fewer alignment problems). In addition, I can make subtle adjustments to character and tone in different sections of the scene — if my POV character changes from happy to nervous, I can set different instructions for each section.

Generating Basic Dialog

Now we will generate some dialog. But before we do, it’s worth asking why I’m generating dialog prior to, say, world-building. Is the decision to start with dialog arbitrary?

I’ve found that, when working with ChatGPT, the alignment problem is a difficult one. Very often, the AI will hijack my story and inject details that fundamentally deviate from my intentions. The best solution I’ve found to this problem is to construct a backbone of dialog that I can prohibit the AI from changing. Later, I can edit this dialog, and then rewrite it as prose.

We’re going to use a “zero shot prompt” to generate our dialog. This means we will provide zero examples to the AI. Some people like to work with “one shot” or “few shot” prompts, where they show the AI examples of writing they like prior to generation. Since we’ll be stylizing our dialog in a later step, a zero shot works fine here:

Using “BROKER Dialog Description,” write a scripted dialog for “Synopsis B” Ordinary World beat, in which BROKER watches a YouTube video of herself. In the YouTube video, she’s promoting COIN. While watching the video, she’s talking on the phone, confessing that she knows nothing about crypto coins.

I’m generating only the Ordinary World section of the dialog. Here’s a sample of what I get back:

Alice: (answering phone) Hello?

Voice on phone: Hey, it’s Sarah. How’s it going?

Alice: Oh, hey Sarah. It’s going okay. Just watching an old video of myself promoting COIN.

Voice on phone: Oh yeah? How’s that going for you?

Alice: (hesitantly) It’s not great. I don’t actually know anything about crypto coins. I was just paid to promote COIN and now I’m worried that it’s going to crash.

You will probably notice that the dialog produced is cheesy, on-the-nose, and overly wordy. That’s OK — ChatGPT is just creating a rough first draft for you. However, if you notice that things are completely wrong, you may want to redirect with some follow-up instructions. In the second example, I needed to give some additional direction.

(Note: Remember that I’m generating each of these sections in a different chat.)

Using “BROKER Dialog Description,” “CLIENT Dialog Description,” and “BROKER CLIENT Relationship,” write a scripted dialog for “Synopsis B” Call to Adventure beat, in which CLIENT arrives in a coffee shop to discuss his investment with BROKER, then voices several concerns: coins similar to COIN have recently crashed, and CLIENT thinks COIN is likely to crash soon. BROKER lies and assures him everything is fine, persuading him to be optimistic. But CLIENT is unconvinced, pointing out that COIN trading has been frozen. This is a surprise to CLIENT, who also has money in COIN.

After the first pass, the AI had the characters meeting for the first time, which I didn’t like. So, I asked for a rewrite where they already know each other.

Rewrite the scripted dialog above, only now Mr. Chen and Alice know each other already. Mr. Chen has arranged this meeting with Alice in advance.

Once I was satisfied with the general direction, I continued. In three more chats, I generated the three remaining story beats, giving small rewrite directions where I saw it deviating from my wishes. At this point, after about 30 minutes, we’ve generated about 1250 words of dialog which follow the story beats I laid out, but which are generally low-quality — repetitive, wooden, “vomit draft” dialog.

“Plant Pots,” by David J. Germain with Midjourney v2

Stylizing Dialog

Now we want to liven up the dialog. If I wanted to hire a ghost writer for this project, who would I hire? Aaron Sorkin. I could ask the AI to rewrite the dialog “in the style of Aaron Sorkin,” but I found that this produces some very odd results (like randomly mentioning social networks and “a few good men.”)

Much better, ask the AI to teach itself to write like Aaron Sorkin.

If I wanted to advise an AI to write like Aaron Sorkin, what instructions should I give? Consider sentence length, number of questions, rhythm, tone, voice, and other features of language.

Ethical Note: I’m not cribbing Aaron Sorkin. I’m trying to find the key words and phrases that ChatGPT associates with a writer like Aaron Sorkin.

Here are the key points that I got back:

Write fast-paced and witty dialogue, which often features long, complex sentences with many clauses. Use rhetorical devices such as parallelism and repetition to create a sense of rhythm and momentum in dialogue. Characters should speak in a highly educated and articulate manner, using sophisticated vocabulary and allusions to literature, history, and pop culture. In terms of tone, write dialogue that is often marked by a sense of urgency and intensity, as characters engage in heated debates and discussions. The tone can also be humorous, with characters delivering witty one-liners and clever banter. Use a lot of questions, which serves to further the plot and reveal character motivations. Use questions as a way for characters to challenge each other, or to reveal information in a dramatic way. Overall, dialogue should be highly stylized and distinctive.

Now, I will create five new chats for my five sections of bad dialog — Ordinary World, Call to Adventure, etc. In each chat, I will input my character information, and apply this new “Stylized and Distinctive Dialog” for a rewrite.

Rewrite the following dialog using “Stylized and Distinctive Dialog”:

[paste in the dialog]

Technical Note: Sometimes, ChatGPT will just stop in the middle of a writing task. Maybe it reaches a certain word or token count? I’m not sure. Either way, just type in “keep going” and it will continue the task where it left off.

Why am I doing this as five separate tasks? To overcome ChatGPT’s various limitations regarding token counts and alignment problems. In each chat I’m working on something that’s around 250 words. If I notice that my results are strange or inappropriate, I can feed back in specific commands. For instance, if I notice that characters are arguing about Hamlet, I might request:

“Rewrite the dialog but remove any allusions to literature.”

Once I’ve written my “Stylized and Distinctive Dialog” in all five chats, I take my sections, edit them down slightly to remove any repetitive phrases, and feed them back into their chats.

After all that, we’ve got 760 words of dialog, so our stylized edit actually reduced the word count quite a bit.

The Dialog Result

Here are the results so far:

(Alice is sitting at table in a coffee shop, scrolling through her YouTube channel. She clicks on a video of herself and starts watching it)

(On the video)

Alice (on the video): Hey everyone! I’m Alice, your favorite crypto kid, and today I want to tell you all about COIN.

(Back to the present)

Alice (to herself, watching her video): (sarcastically) “Your favorite crypto kid”? Please.

(phone rings)

Alice: (answering phone) Hello?

Voice on phone: Hey, it’s Sarah. How’s it going?

Alice: (muttering) Oh, just watching myself flog a sinking ship.

(On the video)

Alice (on the video): You won’t regret investing in COIN!

(Back to the present)

Voice on phone: (concerned) You need to distance yourself from COIN before it’s too late.

Alice: I know, but — (Alice sees Mr. Chen enters the coffee shop) Wait. Gotta go.

(Mr. Chen sees Alice sitting at a table)

Mr. Chen: (brusquely) Hello, Alice.

Alice: (nervously) Hi, Mr. Chen. What brings you here today?

Mr. Chen: (sharply) I’ve been hearing some worrying things about COIN. Coins similar to COIN have recently crashed and I think COIN is likely to crash soon.

Alice: (lying) Oh, no, don’t worry. COIN is completely different from those other coins. It’s secure and has a great team behind it. I’m sure everything is fine.

Mr. Chen: (unconvinced) I appreciate your optimism, but I’ve also noticed that COIN trading has been frozen.

Alice: (surprised) Oh, I wasn’t aware of that. But I’m sure it’s just a temporary measure.

Mr. Chen: (frustrated) I hope you’re right. I have a lot of money invested in COIN, and I wanted to hear your thoughts on the matter, that’s why I arranged this meeting.

Alice: (trying to persuade) Don’t worry, Mr. Chen. I’m sure everything will be alright. Just stay optimistic.

Refusal of the Call

Mr. Chen: (pointedly) You need to get me my money back from COIN.

Alice: (downplaying) I’m sorry, Mr. Chen. I’m just an influencer. I don’t have the power to help you recover your money.

Mr. Chen: (directly) That’s not good enough.

Alice: (confused) What do you mean?

Mr. Chen: (revealing) Let me tell you something. I have connections. Connections to an organization.

Alice: (shocked) Organized crime? I had no idea.

Mr. Chen: (nodding) Yes, the Black Brothers. And they want their money back.

Alice: (trying to avoid) I see. I’m sorry, Mr. Chen. I really can’t get involved —

Mr. Chen: (threatening) That’s too bad. Because you’re already involved.

Alice: (terrified) What do you mean?

Mr. Chen: (intimidating) You should have thought about that before you promoted COIN.

(Alice looks distraught)

Mr. Chen: (urgently) Look, I know it’s a lot to ask, but I need your help. The Black Brothers won’t hesitate to —

(Mr. Chen’s phone rings)

Mr. Chen: (nervously) Excuse me.

(Mr. Chen answers the phone)

Mr. Chen: (nervously) Hey, boss.

Mr. Chen: (nervously) Yes, boss. That’s why I’m here with her. Yes, right now.

Mr. Chen: (nervously) Okay, boss. (to Alice) He wants to speak with you. (Hesitates) Be careful, a lot might depend on what you say.

(Mr. Chen puts the BOSS on speakerphone)

BOSS: (angrily) …and I want it now.

Alice: (nervously) Umm, who is this?

BOSS: (intimidating) You don’t need to know who I am. Just know that I have a lot of money invested in this COIN, and I’m not happy about it being frozen.

Alice: (defensively) I’m just an influencer. I don’t have any control over the coin or its trading.

BOSS: (angrily) I don’t care about your excuses. You have 48 hours to get our money back, or there will be consequences.

Alice: (terrified) I understand, but I really don’t know how to do that.

BOSS: (threatening) Figure it out, or you’ll be sorry. (Pause) And Chen. Same goes for you.

(BOSS hangs up)

Alice: (shaken) Who was that?

Mr. Chen: (nervously) My boss. And he means business.

Alice: (terrified) What are we going to do?

Mr. Chen: (determined) We need to find your employer and unlock the frozen COIN. We don’t have a choice.

Alice: (in denial) I can’t believe this is happening. Maybe this is all just a YouTube prank show.

Mr. Chen: (urgently) This is real, Alice. And we need to act fast. Where is your employer? Where do they keep their servers?

Alice: (hesitantly) I don’t know. I’ve never actually met them. But I think they might be based in the Bahamas.

Mr. Chen: (decisively) Then that’s where we need to go.

(Alice and Mr. Chen look at each other, realizing the gravity of their situation)

(Cliffhanger)

“Ancients,” by David J. Germain with Midjourney v2

My General Advice on Dialog

What is my advice so far?

· Generate dialog beat by beat, offering rewrite directions when sections deviate from your vision. Working with smaller sections of dialog will avoid problems.

· Ask the AI to teach itself how to write like Aaron Sorkin or David Mamet or Elmore Leonard. Then apply that style to its (wooden, horrible) dialog for another rewrite.

· ChatGPT is an assistant, not a writer. Feel free to copy and paste the dialog into a notepad file, edit it yourself, then paste it back into the AI.

“Library Interiors,” by David J. Germain with Midjourney v2

Part Three — Prose

Prose Style

How do we convert our dialog to prose?

Rewrite “Draft Script” as prose.

Does this work? Not at all. It just converts your script into a one-paragraph summary of your story.

Rewrite “Draft Script” as prose. Keep 100% of the original dialog but write the accompanying prose.

This works a lot better, but you’ll find your results are plain vanilla ChatGPT prose. The AI will guess at everything — tone, voice, point of view, tense — often with misaligned results.

First, and easiest, I need to make some decisions about my tense and POV:

Use first person from the perspective of Alice. Use present tense.

Next, what we want to do is create a “Prose Style” that captures the prose-reading experience we’re looking for. Personally, I’m a huge fan of author Joe Abercrombie. Content-wise, his stuff is completely different than what we’re writing here — he writes grimdark fantasy — but I love his writing and want to emulate it.

So, I find a section of his text — something of similar length and similar dialog-to-non-dialog ratio — and paste it into ChatGPT.

If I wanted to advise an AI to write like this, what instructions should I give? Consider tone, voice, and other features of language.

Here is an edited version of what I got back:

Write with descriptive and evocative language to create colorful vivid imagery, and immersive sensory details to create a visceral picture of the events taking place. Use figurative language to depict characters and surroundings in a way that evokes emotion in the reader. Use personification to create a sense of individual body parts, like hands and eyes, being alive.

The second part of the feedback was more specific to characters in Joe Abercrombie’s scene, and so I modified it to fit my scene:

Set a suspenseful and confrontational tone, with emphasis on the reluctance of Alice and insistence of Mr. Chen. Show Alice as feeling a sense of intimidation and confusion while remaining objective in the description of the characters and their emotions. The voice should be intimidated and confused, with a sense of confrontation and suspense throughout.

I then combine these together (putting tense/POV first because its most important) and label this as “Prose Style.”

Applying Prose Style

As we said before, ChatGPT does better with smaller assignments. I recommend breaking your dialog into four or five natural breaking points (sub-scenes) and running each one through separately.

Rewrite “Draft Script” as prose, using “Prose Style.” Keep 100% of the original dialog but write the accompanying prose.

At several points, I need to stop generating text because its using the wrong tense or not repeating the dialog as I intend. I remind ChatGPT what I want: “Use present tense” or “Keep 100% of the original dialog.” This tends to happen most often in the first section. After that, the AI catches on to my desire and the following sections are in keeping with my desires.

Checking Prose for Issues

Let’s read through what we have so far. Here’s a sample:

I nervously greet Mr. Chen, “Hi, Mr. Chen. What brings you here today?” I feel nervous as I try to appear calm and collected. The air around us is thick with tension, like a storm cloud looming on the horizon. Mr. Chen’s eyes, sharp like knives, bore into me as he replies, “I’ve been hearing some worrying things about COIN. Coins similar to COIN have recently crashed and I think COIN is likely to crash soon.”

The AI has combined multiple speakers into a single paragraph, which I don’t like. So far, I haven’t found a way to stop this so I will edit this myself and break up paragraphs with multiple speakers.

Here’s another sample:

He’s direct, “That’s not good enough.”

I’m confused and unsure of what to do, “What do you mean?”

The dialog tags always precede the dialog, which doesn’t match the 21st century fiction I’m going for. Also, many of the dialog tags state directly what Alice is thinking. Personally, I prefer to use body language to convey some of this information.

Fixing Dialog Tags

To fix these issues, I run the following instructions on each subsection of prose. I run these commands separately to avoid the instructions overlapping and becoming misaligned.

Note: This is the slowest part of the process, because I need to run these commands on five different subsections of prose, once for each command. So ten separate operations. Ideally, future versions will handle this with a single command.

Revise “Draft Prose,” so that no clauses appear before dialog in sentences.

Revise “Draft Prose,” with less emphasis on Alice’s emotions and more emphasis on her physical sensations or what her hands are doing.

What does the result look like? Here’s a sample:

“Hi, Mr. Chen. What brings you here today?” I nervously greet Mr. Chen, my hands twist in my lap as I try to appear calm and collected.

“I’ve been hearing some worrying things about COIN,” Mr. Chen replies, his eyes sharp like knives bore into me. “Coins similar to COIN have recently crashed and I think COIN is likely to crash soon.”

“COIN is completely different from those other coins,” I insist, my hands fidgeting nervously. “It’s secure and has a great team behind it. I’m sure everything is fine.” But my words ring hollow in my ears, and I can tell from the look on Mr. Chen’s face that he is not convinced.

This is what I’d call over-written prose, or purple prose. But its not bad for a first draft because I can trim it down later.

“Library of Statues,” by David J. Germain with Midjourney v2

World-Building

What’s else is missing from my prose? Plenty, but one thing that jumps out at me is the generic nature of my coffee shop. I want to create some details about the location, and very specifically where my scene is taking place in that location. In other words, I want to do some world-building.

BROKER’S coffee shop table is located on the fourth floor of a Starbucks, beside a large bay window looking down onto a bustling intersection beside the Daan MRT station in Taipei city, Taiwan. Through the window, she can see scooters and pedestrians fighting their way across the busy intersection. Inside the crowded Starbucks, customers talk and clatter dishes, the milk steamer screams as it prepares a latte.

First question — why am I setting my story in Taiwan? Well, I live in Taiwan so I’m familiar with this exact location. Second, ChatGPT is a research juggernaut. It can find details about millions of locations the world over and incorporate them into your story. Why not take advantage?

We can ask ChatGPT to include this information in our prose. However, in my experience, it almost always front-loads or backloads these details. In other words, it sticks a giant paragraph of location description up front, and then nothing for the rest of the scene.

Instead, I will ask it to describe the coffee shop from Alice’s perspective in various tones — neutral, negative, and extremely negative.

From Alice’s perspective in present tense, write 10 sentences that describe different aspects of the coffee shop.

Alice’s coffee shop table is located on the fourth floor of a Starbucks, beside a large bay window looking down onto a bustling intersection beside the Daan MRT station in Taipei city, Taiwan. Through the window, she can see scooters and pedestrians fighting their way across the busy intersection. Inside the crowded Starbucks, customers talk and clatter dishes, the milk steamer screams as it prepares a latte.

This gives me ten sentences (but -fail — not in first person).

Now write 10 sentences with a negative tone.

Try again, but even more negative.

From these 30 sentences, I select four that I like:

Outside the window, the scooters honk loudly and recklessly.

Pedestrians struggle to make their way across the crowded and chaotic intersection beside the MRT station.

The constant chatter and clinking of dishes grates on my nerves — it’s hard for me to concentrate.

The milk steamer lets out a loud screech, adding to the noise pollution.

These are interesting sentences, but notice that there’s nothing special here about Taiwan that I didn’t provide myself.

Once I have these location sentences, I edit my prose draft, cutting excess words and including my location sentences.

“Greenspace,” by David J. Germain with Midjourney v2

Conclusions

After about an hour of using ChatGPT and another hour of messing around (brainstorming ideas at the beginning and editing over-written text at the end), I have 1150 words.

Here’s the final product.

The potential is clearly here. With some small improvements to the software experience (i.e., more tokens per chat), and slightly better alignment, this software will be an incredible writing assistant.

Could I have written this myself in the same amount of time? Almost certainly. At this point, I will say that ChatGPT is workable, but it’s no “Photoshop for Writers.” It often forgets or ignores commands (like “write in first person present tense”) so I wasted a fair bit of time cajoling it into executing the commands I wanted. Based on the incredible advancements that other AI systems have gone through (i.e., Midjourney) I suspect we’re six months to a year away from having many of these problems ironed out.

In summary, Photoshop for Fiction Writers is just around the corner.

--

--

David J. Germain

David J. Germain is a writer, teacher, and AI researcher based in Taipei. Topics include Natural Language Processing, Fiction Writing, and their intersection.