Content

The Content database stores all of your Content projects – long-form videos, Shorts, blog posts, podcast episodes, etc. If it’s a piece of content that you want to plan and track in Creator’s Companion, it goes here.

Content is the primary database in Creator’s Companion; it’s what enables you to capture content ideas, write outlines and scripts, set publish dates, etc. Most of the other databases connect to Content in some way.

Below you’ll find a reference guide for all database templates and properties in the Content database. Properties are in alphabetical order.

content

content

content

Blog Post

content

content

content

Type: Checkbox

Typically used for “archiving” old content ideas that you’d like to clear out of the majority of your Ideas views.

Was called “Graveyard” in previous versions of this template.

Type: Relation

The channel this piece of content will be published under – e.g. a YouTube channel, blog, or podcast.

This relation property connects to the Content relation property in the Channels database.

Type: Number

The number of comments this piece of content has gained.

You can input this data manually, or pull it in via APIs such as the YouTube Data API.

Type: Created Time

The date and time at which this page was created.

Type: Rich Text

A short pitch for this piece of content. Useful when brain-dumping ideas in the Content Ideas page.

Type: Status

Useful for tracking editing stages for video projects that are set to Editing in the main Status property.

See the Edit Bay page to learn more.

Unlock the Content database to add more options.

NameDescription
Group: To-do
To IngestThe initial stage of the edit, when footage needs to be ingested (offloaded to editing workstation or server). Proxies can optionally be made.
Group: In progress
Final CutDuring this stage, the video’s final cut is done.
AssemblyClips are being trimmed down and marked as usable or thrown out.
Rough CutThe initial cut is done during this stage. For YouTube videos, this will often be the “A-roll Cut” or “Talking Head Cut”. If separate VFX/Sound teams will be working on this while cutting is happening, feel free to skip directly from Rough to Final.
VFXVisual effects, motion graphics, and animations are created and brought into the video at this stage.
SFX & MusicIn this stage, sound effects are added to the video. Background music is also selected and added in – or scoring is done.
Color GradingIn this stage, color grading is added to any shots that need grading in order to achieve the video’s intended look and mood.
Group: Complete
Edit LockedAt this point, the edit is done (or “locked”) and the video is ready to be uploaded and scheduled for publishing.

Type: People

If this video has a specific editor, add them here.

Type: Files & Media

Add any files related to this Content Project to this property, such as a thumbnail image.

Type: Relation

Any keywords you’re focusing on ranking for with this piece of content. Used mainly for SEO-focused written content.

This Relation property connects to the Associated Content Relation property in the Keywords database.

Type: Multi Select

Used in the Validation dashboard and views. If there’s a particular reason this idea deserves your time investment, you can mark that reason here.

Unlock the Content database to add new options.

NameDescription
Content PillarThe idea fits one of the “content pillars” – i.e. a core part of your content strategy.
Proven TopicYou – or other creators – have already created high-performing content around this topic or niche.
Trending TopicThis idea is centered around a trending/popular topic.
Search VolumeThis idea’s related keywords have high search volume.
Needs to ExistThis idea simply needs to exist, and you don’t need no stinkin’ stats or fancy spreadsheets to justify it!
Gut FeelingYou’ve just a gut feeling that this idea will perform well.

Type: Number

The number of likes this piece of content has gained.

You can input this data manually, or pull it in via APIs such as the YouTube Data API.

Type: Select

Allows you to label this content project with its media type – e.g. Short, Long-Form, Stream, Written, etc.

Useful as channels now allow you to post multiple types of media.

Unlock the Content database to add more options.

NameDescription
Long-FormLong-form video content.
ShortShort-form video content, made for YouTube Shorts, TikTok, Instagram Reels, etc.
StreamPlanned live streams for YouTube, Twitch, Twitter, etc.
AudioAudio-first content, such as a podcast.
WrittenWritten content, such as blog posts or long Twitter/X posts.

Type: Title

The name of this content project – e.g. video, blog post podcast episode, etc.

Type: Number

If you and/or your team number pieces of content manually, you can use this property to do so.

This can be useful if you also add numbers to the names of the folders for each project in your computer’s file system, or on a server. E.g. “047 – How to Gain Self Discipline”.

Type: Checkbox

Use this checkbox on sponsored content to mark whether or not the deal has been paid by the sponsor.

Type: Formula

If this piece of content is sponsored, this property will return the date at which you should be paid.

It is calculated based on the Publish Date of the content and the Sponsor’s pay schedule setting (e.g. Net30 would pay 30 days after the publish date).

ifs(
	prop("Sponsor").empty(),
	"".parseDate(),
	lets(
		sponsor,
		prop("Sponsor").first(),
		eomBuffer,
		if(
			sponsor.prop("Pay Structure").test("EOM"),
			dateBetween(
				prop("Publish Date").dateAdd(1, "months").dateSubtract(prop("Publish Date").date(), "days"),
				prop("Publish Date"),
				"days"
			),
			0
		),
		netBuffer,
		ifs(
			sponsor.prop("Pay Structure").test("60"),
			2,
			sponsor.prop("Pay Structure").test("30"),
			1,
			0
		),
		ifs(
			sponsor.prop("Pay Structure") == "On Deal Close" or sponsor.prop("Pay Structure").empty(),
			"".parseDate(),
			sponsor.prop("Pay Structure") == "On Publish",
			prop("Publish Date"),
			prop("Publish Date").dateAdd(eomBuffer, "days").dateAdd(netBuffer, "months")
		)
	)
)
Code language: JavaScript (javascript)

Type: Rich Text

Add any notes about this video’s performance here.

Type: Date

Time Format: Hidden (prevents times from showing)

The intended publish date of this piece of content. This date is used for the calendar view in the Project tracker. You can also update this date after a piece of content goes live in the case that it was published on a different date than planned.

Type: Relation

Use this Relation property to relate (or create) other content projects that represent repurposed versions of this content project.

E.g. if this is a YouTube video, you may also want to create and track a blog post and several Shorts/TikToks.

Type: Relation

Any research items associated with this content project.

This Relation property connects to the Content Relation property in the Research database.

Type: Date

Use this to set a date at which this content should be reviewed or updated.

For example, you may have a blog post that needs to be updated every year.

In the Maintenance view, you’ll see upcoming content that needs to be reviewed, ensuring you won’t forget about it.

Type: Last Edited Time

The date and time that this page was last updated.

Type: Relation

If this piece of content is sponsored, you can add the sponsor’s page from the Sponsors database here.

This relation property connected to the Content relation property in the Sponsors database.

Type: Select

If you’re working with sponsors who provide performance data, you can tag sponsored posts by their relative performance here.

This is a select property, as many sponsors don’t share exact conversion data.

Unlock the Content database to add new options.

NameDescription
GreatPerformance was much better than expected.
GoodPerformance was on-par with expectations or slightly better.
OkayPerformance was slightly below expectations, but within tolerances.
PoorPerformance was far below expectations; the audience did not resonate with the offer.

Type: Number

If this piece of content is sponsored, enter the rate for it here.

Type: Url

If this piece of content is sponsored, you can add the sponsor’s landing page/promo link URL that you’ve been provided.

Type: Formula

Formats the numbers from Views, Likes, and Comments into a labeled, aesthetic property used on the Thumbnail view within the Completed section of certain Channel pages.

if(
	prop("Views").empty() and prop("Likes").empty() and prop("Comments").empty(),
	"",
	lets(
		firstCommaSetter,
		"(\d+)(\d{3})",
		secondCommaSetter,
		"(\d+)(\d{3},\d{3})",
		views,
		if(
			prop("Views").empty(),
			"",
			("👀 " + prop("Views").
				replace(firstCommaSetter,"$1,$2").
				replace(secondCommaSetter,"$1,$2")
			).style("c","b","green","green_background")
		),
		likes,
		if(
			prop("Likes").empty(),
			"",
			("👍 " + prop("Likes").
				replace(firstCommaSetter,"$1,$2").
				replace(secondCommaSetter,"$1,$2")
			).style("c","b","green","green_background")
		),
		comments,
		if(
			prop("Comments").empty(),
			"",
			("💬 " + prop("Comments").
				replace(firstCommaSetter,"$1,$2").
				replace(secondCommaSetter,"$1,$2")
			).style("c","b","green","green_background")
		),
		[views, likes, comments].filter(!current.empty()).join("\n")
	)
)
Code language: JavaScript (javascript)

Type: Status

The current status of this content project. Use this property to see which projects are currently in the research stage, which are being edited, which are completed, etc.

Content is Planned by default unless added in an Idea view.

Unlock the Content database to add new options.

NameDescription
Group: To-do
IdeaAll projects start in the Idea stage, unless you create them in a specific view that forces another Status option. Ideas are just that – ideas. Set a project to Planned to “greenlight” it.
On HoldUse this option for in-progress projects that you need to put on temporary hold. Note: You can use the Archive checkbox property to “archive” a project without fully deleting it.
Group: In progress
PlannedOnce a project goes to Planned, it’s “greenlit” – you’ve committed to producing it.
ResearchThe research/info-gathering stage of the project.
WritingThe writing/scripting stage of the project.
ReviewIf you’re working on a team, you may need to have someone review the script/outline before filming, or before publishing written content.
RecordingThe filming/recording stage of the project. Content projects in Recording will show up in the Film Queue page within Content Projects.
EditingThe editing stage of the project. Content projects in Recording will show up in the Edit Bay page within Content Projects.
Ready to PublishWhen a project’s final edit is finished, market Ready to Publish so final uploading and checks can be done.
Needs UpdateUse this status for projects that need regular updates – e.g. a tutorial that needs to list the latest version numbers of included software tools.
Group: Complete
CompletedFinished, published projects.

Type: Multi Select

If you’ve defined multiple types of content within a single channel (often called Content Pillars), you can use this property to tag pieces of content with those types/pillars.

Unlock the Content database to add new options.

NameDescription
Sample TagChange this to anything you like. Tags are free-form values.

Type: Relation

Tasks that are part of this content project. This Relation property connects to the Content Relation property in the Tasks database.

Type: Formula

This formula property displays the number of active tasks in the content project, along with the number of overdue tasks.

lets(
	active,
	prop("Tasks")
		.filter(
			current.prop("Status") != "Done" and current.prop("Status") != current.prop("Localization Key").at(2).last()
		)
		.length(),
	overdue,
	prop("Tasks")
		.filter(
			current.prop("Status") != "Done" and current.prop("Status") != current.prop("Localization Key").at(2).last()
			and now().dateBetween(current.prop("Due"), "days") > 0
		)
		.length(),
	ifs(
		prop("Tasks").length() == 0,
		"",
		active == 0,
		"",
		if(
			overdue == 0,
			(active + " Active").style("blue"),
			(active.style("b") + " Active - ").style("blue") 
			+ (overdue.style("b") + " Overdue").style("red")
		)
	)
)
Code language: JavaScript (javascript)

Type: Url

The public URL for this piece of content, once uploaded/published.

Type: Number

The number of views this piece of content has gained (or pageviews for blog content, streams/downloads for podcast episodes, etc.)

You can input this data manually, or pull it in via APIs such as the YouTube Data API.

Type: People

If this video has a specific writer, add them here.

Type: Formula

If you have B-Roll items related to this Content project with a Meta type of Chapter, this formula will create a YouTube chapter list from them and their timecodes.

This formula expects timecodes to be in 00:00:00:00 format (hours:minutes:seconds:frames).

lets(
	chapterMarkers, 
	prop("B-Roll").filter(current.prop("Meta").includes("Chapter")).sort(current.prop("Timecode")).map(
		current.prop("Timecode")
			.replace("^(.*?):\d{2}$", "$1")
			.replace("^00:(\d{2}:\d{2})","$1")
		+ " - " + current.prop("Name")
	),
	if(
		chapterMarkers.first().test("^00:00") or chapterMarkers.empty(),
		chapterMarkers.join("\n"),
		"00:00 - Introduction\n" + chapterMarkers.join("\n")
	)
)
Code language: JavaScript (javascript)

🤔 Have an UB Question?

Fill out the form below and I’ll answer as soon as I can! ~Thomas

🤔 Have a Question?

Fill out the form below and I’ll answer as soon as I can! ~Thomas