Visit Project Liberal Foundation
Project Liberal β€” Content System Documentation
πŸ—ΊοΈ

Overview

All Project Liberal content β€” tweets, graphics, and video shorts β€” lives in Notion databases. Notion is where you add new content, review it, tag it, schedule it, and track its performance. Most of your day-to-day work happens here.

A Google Chat chatbot is also available as a companion tool. It can search, edit, and upload content to Notion through plain-language messages, and includes AI-powered workflows that help you write tweets, develop graphic concepts, and draft video scripts. The chatbot is covered in its own section later in this guide.

The system handles three content types:

Content Type

Tweet

Text-only posts published to Twitter/X, Facebook, Threads, Bluesky, and other text-compatible networks.

Content Type

Graphic

Images β€” memes, data graphics, quote cards, bold statements β€” published to all networks including Instagram and Pinterest.

Content Type

Video Short

Short-form video published to all networks including TikTok and YouTube.

Once content is added and scheduled, the system automatically publishes it to social media at the scheduled time, creates a record of the posting, and sends a confirmation. No manual posting is required.


πŸ›οΈ

Organizations

Project Liberal operates two organizations, each with its own Notion content database and its own set of social media accounts:

Project Liberal Action
Project Liberal Foundation

Content you add to PL Action Content publishes to Action's social accounts. Content in PL Foundation Content publishes to Foundation's accounts. The two databases are structurally identical β€” same properties, same automations, same workflow.

Two supporting databases are shared across both orgs:

People in Content
Scheduling History

🐦

Adding a Tweet

To add a tweet, create a new page in the appropriate Notion database (PL Action Content or PL Foundation Content). Most fields are filled in automatically by the system β€” you only need to provide the tweet text itself.

Step by Step

  • Open the correct content database in Notion and click + New to create a new page.
  • Fill in Caption (public) with the actual tweet text. This is exactly what gets posted to social media.
  • If the tweet references or mentions a specific person, select them from the People in Content relation field. If the person isn't in the database yet, type their name and any identifying info into the Internal Notes field instead β€” the system will sort it out.
  • You can also use Internal Notes to include any relevant context β€” topics, background info, related events β€” that helps the system categorize the content.
  • Set Type to Tweet. This is the trigger. Once Type is set, the automation runs and fills in the remaining fields automatically (Name - Description, Tags, AI Summary, etc.).

What You Provide vs. What the System Fills In

FieldWho Fills ItNotes
Caption (public)YouThe tweet text. This is the only required field you need to write.
People in ContentYou (if applicable)Select the person from the relation, or put their name in Internal Notes if they're not in the database.
Internal NotesYou (optional)People not yet in the database, topics, context, background β€” anything relevant. The system uses this for categorization.
TypeYouSet to Tweet to trigger the automation. Do this last after filling in the fields above.
Name - DescriptionSystemAuto-generated internal label based on your content.
TagsSystemAuto-generated from content analysis.
StatusYou or SystemSet manually to track workflow, or use an action status to trigger scheduling. See Statuses & Triggers.
⚠️
Setting Type triggers the automation. Fill in Caption (public) and any other fields before setting Type. Once you select the Type, the automation fires and processes whatever is on the page at that moment.
πŸ’‘
Need to re-run the automation? Clear the Type field, then re-select the content type. This sends the content through the automation again β€” useful if you changed something after the first run.

πŸ–ΌοΈ

Adding a Graphic

To add a graphic (meme, data graphic, quote card, bold statement, etc.), create a new page and attach the image. The system handles everything else β€” Name, Tags, AI description, thumbnail generation.

Step by Step

  • Open the correct content database and click + New.
  • Upload the image file to the File (public) property. This is the image that will be published. You can upload directly or paste a Google Drive link.
  • If the graphic references or mentions a specific person, select them from the People in Content relation field. If the person isn't in the database yet, type their name and any identifying info into Internal Notes.
  • Use Internal Notes for any other relevant context β€” topics, event names, organizations, background β€” that helps the system categorize the content.
  • Set Type to Graphic. This is the trigger. The automation runs and fills in Name - Description, Tags, AI description of the image, thumbnail, and other fields automatically.

What You Provide vs. What the System Fills In

FieldWho Fills ItNotes
File (public)YouThe image file. This is the only required field you need to provide.
People in ContentYou (if applicable)Select the person from the relation, or put their name in Internal Notes.
Internal NotesYou (optional)People, topics, context. The system uses this to generate better metadata.
TypeYouSet to Graphic to trigger the automation. Do this last.
Name - DescriptionSystemAuto-generated from the image analysis.
TagsSystemAuto-generated from content analysis.
Caption (public)You (optional)Social media caption posted alongside the image. Can be added before or after the automation runs.
Public ThumbnailSystemThumbnail generated and uploaded to WordPress automatically.
StatusYou or SystemSet manually or use an action status for scheduling. See Statuses & Triggers.

Optional Fields You May Want to Add

Caption (public) β€” the text that accompanies the image on social media. Canva Link β€” link to the Canva design. Twitter Image Alt Text (public) β€” alt text for accessibility. Instagram Hashtags (public) β€” hashtags for Instagram.

⚠️
Setting Type triggers the automation. Upload the image and fill in any notes before setting Type. The automation processes whatever is on the page at that moment.
πŸ’‘
Need to re-run the automation? Clear the Type field, then re-select Graphic. This sends the content through the automation again.

🎬

Adding a Video Short

To add a video short, create a new page and attach the video file. The system automatically transcribes the audio, generates a summary, creates metadata, and tags people β€” you just provide the video.

Step by Step

  • Open the correct content database and click + New.
  • Upload the video file to the File (public) property, or paste a Google Drive link to the video.
  • If the video references or mentions a specific person, select them from the People in Content relation field. If the person isn't in the database, type their name and any identifying info into Internal Notes.
  • Use Internal Notes for any other relevant context β€” topics, event names, related news, background β€” that helps the system categorize the content.
  • Set Type to Video Short. This is the trigger. The automation runs and fills in Name - Description, Tags, Transcript (from audio), AI summary, and other fields automatically.

What You Provide vs. What the System Fills In

FieldWho Fills ItNotes
File (public)YouThe video file. This is the only required field you need to provide.
People in ContentYou (if applicable)Select the person from the relation, or put their name in Internal Notes.
Internal NotesYou (optional)People, topics, context. The system uses this to generate better metadata.
TypeYouSet to Video Short to trigger the automation. Do this last.
Name - DescriptionSystemAuto-generated from content analysis.
TagsSystemAuto-generated from content analysis.
TranscriptSystemAuto-generated transcription of the spoken audio. Makes the video searchable by keyword.
Caption (public)You (optional)Social media caption. Can be added before or after the automation runs.
Video Title (public)You (optional)Used as the YouTube title. Add this if the video will be published to YouTube.
StatusYou or SystemSet manually or use an action status. See Statuses & Triggers.
ℹ️
Transcription may take a minute or two depending on video length. Once complete, every word spoken in the video becomes searchable β€” a major advantage for finding content later.
⚠️
Setting Type triggers the automation. Upload the video and fill in any notes before setting Type.
πŸ’‘
Need to re-run the automation? Clear the Type field, then re-select Video Short. This sends the content through the automation again.

πŸ”„

What Happens After Adding Content

Setting the Type property is the trigger that kicks off all automatic processing. The automation reads whatever is on the page at that moment and fills in the rest.

You set Type on a new Notion page
↓ Notion automation fires automatically
Graphic β†’ image described by AI β†’ thumbnail uploaded β†’ Name, Tags generated
Video Short β†’ audio extracted β†’ transcribed β†’ AI summary β†’ Name, Tags generated
Tweet β†’ AI generates Name, Tags, and summary
↓ For all types
People in Content tagging attempted automatically

You don't need to wait for or monitor this processing. It runs in the background and populates the relevant fields on the Notion page. If you need to verify it completed, check whether Name - Description and Tags have been filled in.

⚠️
Fill in your fields before setting Type. The automation processes whatever is on the page when Type is set. If you add Internal Notes or People in Content after the automation has already run, those additions won't be picked up automatically.
πŸ’‘
To re-run the automation: clear the Type field, then re-select the content type. This sends the content through the full automation pipeline again. Use this if you changed something important after the first run or if something didn't process correctly.

πŸ“‹

Properties Reference

Every content page in both databases has the same set of properties. Some are filled in by you; others are populated automatically by the system.

Fields You Fill In

PropertyTypeDescription
Name - DescriptionTitleInternal name for the content. What you see in database views and use for searching. Not published.
TypeSelectTweet, Graphic, or Video Short. Setting this triggers automatic processing β€” see What Happens After.
StatusSelectWorkflow state. Some values trigger automations β€” see Statuses & Triggers.
Caption (public)Rich textThe text posted to social media. For tweets, this is the tweet. For graphics/video, this is the accompanying caption.
TagsMulti-selectTopic tags for categorization and search.
File (public)FilesThe media file (image or video). Upload directly or paste a Google Drive URL.
Scheduled DateDateWhen to publish. Setting this triggers the publishing pipeline β€” see Scheduling Content.
Video Title (public)Rich textTitle for YouTube uploads. Only relevant for Video Shorts.
Description (public)Rich textLonger description for platforms that support it.
Twitter Image Alt TextRich textAlt text for images posted to Twitter.
Instagram HashtagsRich textHashtags appended to Instagram posts.
Canva LinkURLLink to the Canva design. Appears as "Open in Canva" on chatbot cards.
Internal NotesRich textUse this to add context the system needs: people not yet in the database, topics, event names, background. The automation also writes to this field (AI image descriptions, transcript summaries), so your notes and the system's notes coexist here.
People in ContentRelationSelect people who appear in or are referenced by this content. If the person isn't in the database, put their name in Internal Notes instead.
TempRich textScratch space for temporary internal notes.

Fields Populated Automatically

PropertyTypeDescription
TranscriptRich textFor video shorts: auto-generated transcription of the audio. Makes spoken content searchable by keyword.
Public ThumbnailURLThumbnail URL generated from the media file. Used on chatbot content cards.
Google Drive View LinkFormulaAuto-generated link to view the file in Drive.
Google Drive Download LinkFormulaAuto-generated direct download link.
Google File IDTextDrive file ID, extracted from the URL.
Full Tags listFormulaComma-separated list of all tags.
Created ByTextWho or what created the page (e.g. "PL Make Integration" for chatbot uploads).
Submission DateDateWhen the content was first added.
Last UsedDateLast time this content was published.
Evergreen RatingTextHow reusable/timeless the content is.
Unique IDTextSystem-generated identifier.

Relation Fields (Auto-Managed)

PropertyDescription
Scheduling HistoryLinks to records created each time this content is published. Auto-populated by the publishing pipeline.

🚦

Statuses & Triggers

The Status property tracks workflow state. Most statuses are passive labels, but any status with "Schedule" in the name triggers the scheduling automation. Setting status to Rejected will prevent content from being published regardless of any other settings.

Passive Statuses

These statuses are labels only. Setting them does not trigger any automation.

StatusMeaning
ApprovedContent is approved and ready to be scheduled or published.
Needs ReviewContent needs a human to review it before proceeding.
Needs GraphicA tweet or script that still needs a graphic designed for it.
RejectedContent was reviewed and rejected. Setting this prevents content from being sent out, even if it was previously scheduled.

Schedule Statuses (Action Triggers)

Any status that contains "Schedule" triggers the scheduling automation. These are not final states β€” the system assigns a Scheduled Date and changes the Status to Approved once processing completes.

StatusWhat It Does
Schedule - Send NowPublishes the content as soon as possible. There is a 4-minute window after setting this during which you can cancel by changing the status to Schedule - Cancel. After 4 minutes, the content is sent.
Schedule - Today 8:00 AMSchedules the content for today at 8:00 AM in your timezone.
Schedule - Today 10:00 AMSchedules the content for today at 10:00 AM in your timezone.
Schedule - Today 6:00 PMSchedules the content for today at 6:00 PM in your timezone.
Schedule - Tomorrow 10:00 AMSchedules the content for tomorrow at 10:00 AM in your timezone.
Schedule - CancelCancels a pending schedule. Use this within the 4-minute window after setting Schedule - Send Now, or before any other scheduled time arrives.
⚠️
The "Schedule - Today" time options are based on your timezone. Make sure your timezone is set correctly in the chatbot (see Timezone) β€” otherwise the times will be off. The available time options may vary.
🚫
Canceling a schedule: If you set Schedule - Send Now by mistake, immediately change the status to Schedule - Cancel. You have approximately 4 minutes before the content is sent. After that, it cannot be recalled. For other schedule statuses, you can cancel any time before the scheduled time arrives.
πŸ’‘
To prevent content from ever being published, set its status to Rejected. This overrides everything β€” even if a Scheduled Date exists, rejected content will not be sent.

How Scheduling Flows

Status set to any "Schedule -" option
↓ Automation fires
System assigns the appropriate time slot
↓
Scheduled Date set β†’ Status changed to Approved
↓
Content enters publishing pipeline

πŸ“…

Scheduling Content

πŸ”
Scheduling Permission required. To schedule content through the chatbot, your account must have Scheduling Permission. Without it, any scheduled date you set via the chatbot will be silently removed. If you can't schedule content, ask an administrator to grant you Scheduling Permission. You can check your current permissions at any time by asking the chatbot: "What are my permissions?"

There are three ways to schedule content for publication:

Option 1: Set Scheduled Date Directly

Open the content page in Notion and set the Scheduled Date property to the desired date and time. Make sure the content Status is Approved (if you set a Scheduled Date via the chatbot, it does this automatically β€” in Notion you need to set both).

Option 2: Use a Schedule Status

Set Status to any option that starts with Schedule -. For example, Schedule - Send Now publishes as soon as possible (4-minute delay), Schedule - Today 10:00 AM schedules for that time, and so on. The system sets the Scheduled Date and changes Status to Approved for you. See Statuses & Triggers for the full list.

Option 3: Use the Chatbot or Card Buttons

Tell the chatbot to schedule a piece of content (e.g. "Schedule [Notion URL] for March 20 at 9am"), or click a scheduling button on a content card (e.g. "Send in 1 hour"). Scheduling via the chatbot requires Scheduling Permission β€” see the note above.

ℹ️
Once a Scheduled Date is set, the content enters the Publishing Pipeline automatically. A delay system holds the content until the exact scheduled time, then publishes it across all configured social networks.
⚠️
There is a minimum 4-minute delay between scheduling and publishing. If you used Schedule - Send Now, you have those 4 minutes to set Schedule - Cancel if you need to stop it.

πŸš€

Publishing Pipeline

When content has a Scheduled Date, the automated publishing pipeline handles everything from that point forward.

Scheduled Date set on Notion page
↓ Notion automation detects date change
Delay system holds content until scheduled time
↓ At the scheduled time
Content published to social networks via Metricool
↓
Scheduling History record created in Notion
↓
Content page status updated in Notion
↓
Confirmation message sent to Google Chat

Social Networks by Organization

NetworkActionFoundationContent Types
Twitter / Xβœ“βœ“All
Facebookβœ“βœ“All
Threadsβœ“βœ“All
Blueskyβœ“βœ“All
Instagramβœ“βœ“Graphics, Video Shorts
TikTokβœ“βœ“Video Shorts
YouTubeβœ“βœ“Video Shorts
LinkedInβœ“β€”All
Pinterestβœ“β€”Graphics
Twitchβœ“β€”Video Shorts
ℹ️
Video shorts are uploaded directly to YouTube using the YouTube API (not just cross-posted via Metricool). The Video Title (public) property is used as the YouTube title β€” make sure this field is filled in for any video you want on YouTube.

πŸ‘₯

People in Content

The People in Content database tracks individuals who appear in or are referenced by content β€” politicians, public figures, commentators, etc. Each record stores the person's name, bio, identifying information, and social media handles across all major platforms (Twitter, Threads, Bluesky, Facebook, Instagram, TikTok, YouTube).

How People Get Tagged

When new content is added and its Type is set, the system automatically tries to identify people mentioned in the content and link them via the People in Content relation. If a person isn't in the database yet, a new record may be created. You can also tag people manually by editing the relation field on any content page.

Social Handle Lookup

To have the system automatically find someone's social media profiles, set the person's Status to Search for handles. The system will search the web for their profiles across all platforms and populate the URL fields. Handle formulas then extract the usernames automatically (e.g. (@ProjectLiberal)).


πŸ“Š

Scheduling History

Every time content is published to social media, a record is automatically created in the Scheduling History database. This provides a log of what was published, when, and how it performed.

PropertyDescription
NameAuto-generated label (date + org + content name)
OrganizationWhich org this was published under
TypeTweet, Graphic, or Video Short
Scheduled DateWhen the content was published
24 Twitter PerformancePerformance metrics after 24 hours
1 Week Twitter PerformancePerformance metrics after 1 week
PL Action / Foundation ContentRelation back to the original content page

You can use this database to review publishing history, analyze what content performs well, and identify posting patterns.


πŸ’¬

Chatbot Overview

The Google Chat chatbot is a companion tool that lets you interact with the content system through plain-language messages. It can do everything you can do in Notion β€” search, edit, upload β€” plus it has AI-powered workflows for writing tweets, developing graphic concepts, and drafting video scripts.

Send a message to the chatbot in any Google Chat space and it determines what you're asking for and routes it to the right workflow. No special commands needed.

Google Chat message received
↓
Message logged Β· permissions loaded Β· last 10 messages loaded as context
↓
AI Intent Router β†’ determines workflow
↓
Search Edit Upload Tweet AI Graphic AI Video AI Permissions Buttons
↓
Response returned as card or text in Google Chat

Key Behaviors

Message history β€” the bot loads the last 10 messages from the current space on every execution, so it understands short follow-up replies.

Reply threading β€” when you reply to a message, the bot fetches the full original message for context.

New users β€” first-time users get a welcome message and a link to this documentation. An admin must grant permissions before you can take actions.

New spaces β€” when added to a new space, the bot auto-provisions settings and detects the organization from the space name.

Permissions β€” your available actions are controlled by permissions assigned to your account. The bot tells you exactly which permission is missing if something doesn't work. See Permission Types.


πŸ›οΈ

Organization Setup (Chatbot)

The chatbot needs to know which organization you're working with before processing any request. In Notion you simply work in the correct database β€” but in the chatbot, org context is set per space.

In a dedicated space (name contains "Action" or "Foundation"): org is detected automatically and locked.

In a Direct Message with the bot: you can set or switch org freely.

β†’"Set my org to Project Liberal Action"
β†’"What org am I on?"
⚠️
If org is not set and can't be detected from the space name, no requests will be processed until you set it.


✏️

Editing Content (Chatbot)

Requires Editing Permission

You can edit content directly in Notion at any time. The chatbot provides an alternative: share a Notion URL and describe what to change. The page ID is extracted automatically. All edits require confirmation before applying.

β†’"Approve this: [Notion URL]"
β†’"Schedule [Notion URL] for March 20 at 9am"
β†’"Update the tags on [Notion URL] to Economy, Jobs"
β†’"Change the title on [Notion URL] to 'New title here'"

Editable Fields via Chatbot

Status Β· Name - Description Β· Caption (public) Β· Description (public) Β· Transcript Β· Tags Β· Temp Β· Scheduled Date (requires Scheduling Permission) Β· File (public) Β· Canva Link

πŸ’‘
Auto-status rule: When you set a Scheduled Date via the chatbot, the Status is automatically set to Approved. If you lack Scheduling Permission, the date is silently stripped and the rest of the edit proceeds normally.

⬆️

Uploading via Chatbot

Requires Upload Permission

While the recommended way to add content is directly in Notion (see the Adding Content sections above), you can also upload through the chatbot. This is useful for quick submissions or when you're already in a Google Chat conversation.

β†’"Upload this tweet: Free trade isn't just policy β€” it's how we beat poverty."
β†’[Attach image with no text] β€” automatically routed to graphic upload
β†’"Upload this graphic about tax policy, tag it Economy" + [attached image]
β†’[Attach video] β€” automatically routed to video upload
β†’"Submit this to Notion" β€” after using an AI creation workflow, uploads the result

The chatbot infers content type from what you send: text-only β†’ Tweet, image β†’ Graphic, video β†’ Video Short. Uploads proceed immediately with no confirmation step. Default status is Needs Review unless you include a Scheduled Date (which sets it to Approved).

Spell Check on Graphics

When you upload an image with visible text through the chatbot, it reads the text and checks for spelling/grammar errors. If errors are found, you'll be asked whether to fix them or continue. This check does not happen when adding graphics directly in Notion.

Links & Attachments

Canva links β€” any canva.com URL is extracted and stored in the Canva Link field.

Google Drive links β€” image links are downloaded and re-uploaded; non-image links stored in File (public).

Other URLs β€” images are treated as uploads; webpages are fetched and passed to the AI as context.

Direct image attachments β€” fetched, uploaded to Drive, thumbnail generated, AI description created.

πŸ’‘
Graphic + no help request β†’ upload. Graphic + help request (like "what should this say?") β†’ Graphic Creation AI. The bot distinguishes these automatically.

🐦

Tweet Creation (AI)

The chatbot can write, rewrite, and generate tweet alternatives in Project Liberal's established voice β€” punchy, unapologetic, and rooted in classical liberal values.

β†’"Write a tweet about the new tariff announcement" β€” new tweet from scratch
β†’"Rewrite this to be punchier: [paste tweet]"
β†’"Give me 4 alternatives for this tweet" β€” numbered variations
β†’"Make it shorter" / "Try a sarcastic version" β€” refine

Available Styles

Punchy declarative Β· Contrast / hypocrisy callout Β· "You can't be X and Y" Β· Question-led Β· "To be X is to be Y" Β· Sarcastic mockery Β· Historical parallel Β· Quote + attribution

Multiple tweets are always numbered. After delivery the bot offers follow-up options. Once satisfied, say "upload this" to send it to Notion.


πŸ–ΌοΈ

Graphic Creation (AI)

The chatbot can develop meme concepts, graphic copy, and visual content ideas β€” full concepts including visual format, exact text, and how image and text work together.

β†’"Give me a graphic concept about the tariff deal"
β†’"Write the text for a Drake meme about isolationism"
β†’[Attach graphic] "Help me with the copy for this"
β†’"Give me 3 different concept options about DOGE"

Available Formats

Meme / image macro Β· Comparison / contrast Β· Stat-led / data graphic Β· Bold statement Β· Quote / screenshot Β· Question graphic Β· Satirical composite Β· List / breakdown

Each concept includes: the visual description, exact primary text, supporting copy, branding note, and a one-line explanation of why it works. Multiple concepts are always numbered.


🎬

Video Short Creation (AI)

The chatbot can write spoken-word scripts for short-form video β€” authoritative, evidence-driven, and built to stop the scroll.

β†’"Write a script about Trump defying the courts"
β†’"Rewrite this script to be more urgent"
β†’"Give me 2 alternative approaches"
β†’"Punch up the opening hook" / "Make it shorter β€” target 30 seconds"

Script Structures

Breaking news + analysis Β· Hook-first escalation Β· Contrast / reversal Β· Data-led argument Β· Rapid-fire rhetorical questions Β· Direct address / viewer response Β· Human interest story Β· Philosophical essay

Target Lengths

LengthWord CountBest For
Short150–250 wordsBreaking news, single-point arguments
Standard250–400 wordsAnalysis + takeaway (most common)
Long400–600 wordsMulti-point arguments, philosophical pieces

Scripts include inline visual directions where relevant (e.g. [ON SCREEN: $330 billion / year]). Word count is noted with every delivery. Multiple scripts are always numbered.


πŸƒ

Content Cards (Chatbot)

When the chatbot returns search results, edit confirmations, or upload confirmations, it displays them as interactive cards in Google Chat.

[ Thumbnail / type icon ]
Title of the content piece
Scheduled Date: Mar 20, 2026 9:00 AM
Project Liberal Action Search: Searching for tariffs...
Open in Notion  |  Open in Canva
Approve Reject Send in 1 hour

Each card shows a thumbnail, title, scheduled date, and up to 4 action buttons. Clicking a button applies the action (approve, reject, schedule, etc.) and the card updates in-place β€” no new message is posted.

The "Open in Canva" link only appears if the content has a Canva URL stored. Thumbnails use the Public Thumbnail URL, a Twitter icon for tweets, or a default placeholder.

Button configuration is per-space and managed through the Button Manager.


πŸ”

Permissions (Chatbot)

Chatbot actions are gated by permissions. Viewing your own permissions is available to everyone. Changing permissions requires Admin access. Changes require explicit confirmation.

Permissions only apply to the chatbot β€” anyone with access to the Notion workspace can work in the databases directly.

β†’"What are my permissions?" β€” answered immediately
β†’"Give Jane Search and Editing permission" β€” admin only
β†’"Remove scheduling permission from John" β€” admin only
β†’"What permissions does Sarah have?" β€” admin only
🚫
Admin Permission cannot be changed through the chatbot. It must be modified directly in the system.

πŸŽ›οΈ

Button Manager (Chatbot)

Configure up to 4 action buttons on content cards. Button configuration is per-space.

Default Configuration

ButtonNameAction
Button 1Approveapprovecontent
Button 2Rejectrejectcontent
Button 3Send in 1 hourschedule60
Button 4blankblank

Available Actions

approvecontent Β· rejectcontent Β· scheduleN (N = minutes) Β· suggestcontent

β†’"What are the current buttons?"
β†’"Rename Button 3 to 'Send in 30 min' and set its action to schedule30"
β†’"Clear Button 4" / "Reset buttons to default"
β†’"Add a new available action: label 'hold', value 'holdcontent'"
ℹ️
Button actions must exist in the available actions list. A button must have both a name and an action, or neither. You can't remove an action assigned to a button β€” clear the button first. Schedule actions require specifying minutes.

πŸ•

Timezone (Chatbot)

Your timezone affects how the chatbot interprets scheduled dates. Any user can view or change their timezone.

β†’"What's my timezone?"
β†’"Set my timezone to Pacific" / "Change my timezone to America/New_York"
⚠️
Default timezone is America/Chicago (Central Time). If you're elsewhere, set this before scheduling content through the chatbot.

πŸ”‘

Permission Types

Permissions control what you can do through the chatbot. They do not affect direct access to Notion.

PermissionWhat It Unlocks
AdminView and modify permissions for any user. Cannot be changed via chatbot.
SearchSearch the content database via the chatbot.
EditingEdit fields on existing Notion pages via the chatbot.
UploadingUpload new content to Notion via the chatbot.
SchedulingSet the Scheduled Date field via the chatbot. Without this, the date is silently stripped.

All users can view their own permissions: "What are my permissions?"

⚠️
Permissions are checked live on every request. Even if a prior message says permissions were changed, the bot always re-checks the current values.

πŸ’‘

Tips & Edge Cases

Working in Notion

  • Setting Type is the trigger. All automatic processing (Name, Tags, transcription, thumbnails, AI descriptions, people tagging) starts when you set the Type property. Fill in your fields first, then set Type last.
  • To re-run the automation, clear the Type field and re-select the content type. This sends the content through the full pipeline again.
  • Any status with "Schedule" triggers publishing. Schedule - Send Now publishes immediately (4-min delay). Schedule - Today options use your timezone. Schedule - Cancel stops a pending schedule.
  • You have 4 minutes to cancel "Schedule - Send Now." Change the status to Schedule - Cancel within that window.
  • Set status to Rejected to block publishing. Rejected content will never be sent, even if a Scheduled Date exists.
  • Schedule time options depend on your timezone. Set your timezone via the chatbot (see Timezone) to ensure the times are correct.
  • Fill in Video Title for YouTube. The Video Title (public) property is used as the YouTube title.
  • Use Internal Notes liberally. People not in the database, topics, context, event names β€” put it all here. The system uses it for better categorization.
  • People auto-tagging isn't perfect. Check the People in Content relation and add any missing people manually.
  • Set Status to "Search for handles" on People records to trigger automatic social media profile lookup.

Using the Chatbot

  • Short replies continue the last workflow. Replying "yes" or "confirmed" picks up where the bot left off.
  • Edits need confirmation; uploads don't. Uploads fire immediately. Edits always ask first.
  • Only one Notion page per message. If you reference multiple URLs, only the first is acted on.
  • Graphic + no help request β†’ upload. Graphic + help request β†’ Graphic Creation AI.
  • Creation workflows offer follow-ups automatically. After every tweet, concept, or script, the bot suggests ways to refine.
  • Multiple outputs are always numbered. Reference them by number for refinements.
  • Once happy with a creation, say "upload this" to send it to Notion.
  • Spaces are fully isolated. History, org settings, and buttons are per-space.
  • Error messages are specific. If blocked by a permission, the error names exactly which one is missing.
  • Chatbot spell-checks graphics on upload. If text errors are detected, you'll be asked before proceeding.
  • Scheduling requires Scheduling Permission. If you can't schedule content via the chatbot, ask an administrator. You can check what you currently have with "What are my permissions?"