Use GPT to Structure Notion Databases for Blogging

Setting up the basic database skeleton

I started with an empty Notion page and instantly regretted it because the white void just stares back at you like, “Well? Type something.” So I created one lone table and named it Blog Master DB — highly original, I know — because every attempt to get fancy with names ends with me forgetting what they mean two weeks later. For beginners, just hit the + New Page button, choose Table view, and let it drop a basic table in your workspace. You’ll get a couple of default columns like Name and Tags; those can stay for now.

The first thing you want to do is figure out your main properties. I always set up Title (default), Status (select), Publish Date (date), Category (select), and Word Count (number). Keep this list short until you’ve actually used the thing for a week. I used to add Author, Editor, Featured Image URL, and so on right away, but all that does is give you extra empty fields you’ll feel guilty about not filling in.

A neat trick — if you want a Word Count column to auto update, you’ll have to maintain that manually unless you connect a script via the Notion API. Notion doesn’t magically count words in your text property (I spent a whole afternoon looking for a button :P). If that’s too much hassle, I sometimes just paste my draft in a Google Doc, check the word count, and copy the number over.

Adding properties that actually help

Once the skeleton is in place, the temptation is to add a dozen fancy properties because you saw someone’s elaborate productivity setup on YouTube. Resist that. The best properties are the ones you actually filter and sort by every day. In my case, Status is the lifeline — I use options like Draft, In Progress, Needs Review, Ready To Publish, and Published. Having just “To Do” and “Done” is overly vague for content.

Another one I can’t live without is a Priority select property. Sometimes blog posts are urgent because they’re tied to a trending topic or a client deadline. I set them as High, Medium, Low so I can drag all the “High” ones to the top instantly in Kanban view.

If you’re writing with SEO in mind, make a property called Target Keyword (text). I put just one or two keywords there rather than a whole paragraph — because trust me, when you’re staring at a big table of posts, a four-line keyword entry makes everything unreadable.

And here’s where the first bug rolled in: after adding a Checkbox property called Internal Link Added, half my rows refused to display whether they were checked or not. I reloaded, duplicated the table, even toggled it to a List view and back. Eventually, closing and reopening the entire Notion app fixed it. Zero explanation.

Linking your database to draft storage

Here’s where things got messy for me. I wanted each blog entry in my master DB to also open the actual draft as a linked page in Notion. So I made a property with the type “Relation” and linked it to another database called Blog Drafts. The idea was — click into a post from the master DB and instantly see the connected draft content.

When you pick Relation in the property type dropdown, it’ll ask you to choose a database to link to. Select your drafts DB, check “Allow linking to multiple entries” if you want that, and click Done. Now you can click the empty cell in that column, pick an existing draft, or even create a new draft on the spot.

Sounds simple… but for some reason, sometimes the relation wouldn’t sync both ways. I’d link a draft from the master DB side, but when I checked the draft page itself, the reverse relation column was empty. It’s supposed to update automatically, right? I wiped the relation property and recreated it — worked fine for two days, then broke again. At this point I just refresh both sides manually every few days ¯\\_(ツ)_/¯

Automating post status with Zapier

Because I clearly enjoy pain, I tried to hook Zapier into this so that when a post in the master DB changed its Status to Published, it would trigger a social media post. You can connect Zapier to Notion, but it’s still in beta as I write this, which means half the things you expect to work just… don’t.

My setup attempt: in Zapier, New Database Item in Notion or Database Item Updated as the trigger, specify my Blog Master DB, then a filter in Zapier checking for Status = Published. The action step would be Post Tweet in Twitter (now X). It half-worked — the Zap triggered, but mysteriously it sent out the tweet twice for the same entry. No idea why. Changing the trigger to “Database Item Updated” (instead of New) stopped the duplicates, but then it wouldn’t trigger at all for brand new published posts unless I edited them again afterward.

So if you’re just starting, maybe skip automation until you’re sure your database columns are rock solid and behaving predictably. Otherwise, you’ll spend more time chasing phantom triggers than actually publishing.

Using template buttons for speed

One of Notion’s underrated features for blogging is the template button inside a database. This lets you spawn a new page with prefilled structure — great for posts that use the same layout. In my Blog Drafts DB, I made a New Draft template that automatically adds headings like Title Ideas, Intro Paragraph, Key Points Table, Sources.

To make your own: go into your Drafts DB, click New Page, set it up exactly how you want for all future drafts. Then from the dropdown arrow on “New” (top right), pick + New Template, paste your structure into it. Now when you click “New Draft” from the master DB’s relation column, the template appears instantly.

I’ve noticed sometimes the template won’t attach properly if you create the page from the related column in the master DB instead of hitting New inside the Drafts DB directly. The result is an empty page with no headings, forcing you to redo the setup. When that happens, I delete the failed one and create it directly in the Drafts DB before linking it manually.

Sorting and filtering for actual use

Once you’ve got more than a dozen posts, the default table turns into a wall of text you’ll never scroll through. My fix is multiple views. I have:
– Table view, sorted by Publish Date descending.
– Kanban by Status so I can drag posts forward through the content pipeline.
– Calendar view showing only Published and Scheduled posts.

Filters are essential: for example, my Calendar view hides anything with Status = Draft, because seeing unfinished titles cluttering my monthly calendar drives me nuts. For beginners, those small view-level filters are way easier to manage than trying to hide irrelevant properties in a huge table.

One subtle bug — when I duplicate a filtered view, sometimes the filters just vanish in the copy. Notion support told me to simply rebuild the filters each time, which seems absurd but… okay.

Backing things up before they vanish

Notion is good at many things but it is not a perfect archive. I’ve had a handful of posts disappear after an accidental mass delete in a shared workspace. They do have a trash folder you can restore from, but if you don’t notice for a month, those items might be gone forever.

Now, every Friday I export the Blog Master DB as a CSV. It’s not pretty — attached pages and images don’t export with it — but at least the metadata and key text survive. You can do this from the top right menu of your DB: Export → CSV → pick current view only or all properties. I save them in a dated folder on Dropbox.

For drafts, I back them up by duplicating the Drafts DB into a private workspace only I can touch. It’s one extra click during work, but after losing a 2,000-word piece once, I’m not leaving it up to memory.

Connecting Notion to external writing tools

If typing in Notion feels clumsy for longform writing, you can still keep Notion as your master database while drafting elsewhere. I’ve written plenty of articles in Google Docs, then pasted them into the related Notion draft page later. There’s also a simple integration through Zapier or Make that can copy new Google Docs file links into a Notion property automatically. Here’s the catch — formatting can get messy. Bulleted lists and images almost always need redoing inside Notion.

Another option is using Notion’s API to build a small script that reads all posts marked In Progress, then creates matching documents in your preferred writing tool. That’s more technical but still doable if you know basic scripting. The API docs at notion.so are worth browsing if you see yourself going down that rabbit hole.

The important part is to decide whether Notion is your drafting space, your planning space, or both — and stick with it. Mixing roles can work for a while until you hit that one day where you discover your half-finished post hiding five layers deep in a relation that you forgot to check 🙂

Leave a Comment