@synap-core/workspace-templates 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +493 -19
- package/dist/index.js +23899 -20
- package/dist/index.js.map +1 -0
- package/package.json +6 -5
- package/src/blockchain-ecosystem.yaml +372 -0
- package/src/communication.yaml +662 -0
- package/src/content-studio.yaml +268 -0
- package/src/crm.yaml +101 -2187
- package/src/define.ts +25 -2
- package/src/dev-dashboard.yaml +3 -0
- package/src/ecosystem.yaml +478 -0
- package/src/foundation.yaml +226 -0
- package/src/grants.yaml +1096 -0
- package/src/hr.yaml +6 -0
- package/src/index.ts +6 -5
- package/src/internal-runbook.yaml +499 -0
- package/src/legal.yaml +6 -6
- package/src/marketing.yaml +36 -9
- package/src/operations.yaml +146 -420
- package/src/social.yaml +246 -0
- package/src/templates.ts +9130 -9598
- package/src/types.ts +55 -0
- package/dist/define.d.ts +0 -97
- package/dist/define.d.ts.map +0 -1
- package/dist/define.js +0 -91
- package/dist/index.d.ts.map +0 -1
- package/dist/templates.d.ts +0 -7
- package/dist/templates.d.ts.map +0 -1
- package/dist/templates.js +0 -24237
- package/dist/types.d.ts +0 -350
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -8
- package/src/content-os.yaml +0 -1064
- package/src/radar.yaml +0 -297
package/src/content-os.yaml
DELETED
|
@@ -1,1064 +0,0 @@
|
|
|
1
|
-
# Content OS workspace template
|
|
2
|
-
# Creator Operations / publishing hub — campaigns, posts, pillars, platforms,
|
|
3
|
-
# newsletters, and brand deals in one relational workspace.
|
|
4
|
-
# Distinct from content-studio.yaml (video render pipeline) — both are kept.
|
|
5
|
-
# AI-generation-friendly YAML. Validated against types.ts at build time.
|
|
6
|
-
|
|
7
|
-
meta:
|
|
8
|
-
slug: content-os
|
|
9
|
-
name: Content OS
|
|
10
|
-
description: "A sovereign content operating system. Plan campaigns, manage posts across platforms, track brand deals, and own your newsletter audience — all in one relational workspace you control forever."
|
|
11
|
-
icon: file-edit
|
|
12
|
-
color: "#6366F1"
|
|
13
|
-
tags: [content, creator, social-media, newsletter, campaigns]
|
|
14
|
-
isPublic: true
|
|
15
|
-
|
|
16
|
-
workspace:
|
|
17
|
-
name: "Content OS — Creator Operations Hub"
|
|
18
|
-
description: "A sovereign content operating system. Plan campaigns, manage posts across platforms, track brand deals, and own your newsletter audience — all in one relational workspace you control forever."
|
|
19
|
-
proposalId: content-os-v1
|
|
20
|
-
subtype: content-studio
|
|
21
|
-
visibility: members
|
|
22
|
-
|
|
23
|
-
profiles:
|
|
24
|
-
- slug: post
|
|
25
|
-
displayName: Post
|
|
26
|
-
icon: file-edit
|
|
27
|
-
color: "#6366F1"
|
|
28
|
-
description: "Your atomic content unit. One idea, multiple platform formats — tracked from spark to publication."
|
|
29
|
-
scope: WORKSPACE
|
|
30
|
-
properties:
|
|
31
|
-
- slug: post-status
|
|
32
|
-
label: Status
|
|
33
|
-
valueType: string
|
|
34
|
-
inputType: select
|
|
35
|
-
enumValues: ["Idea", "Briefed", "In Draft", "Review", "Scheduled", "Published", "Archived"]
|
|
36
|
-
- slug: post-format
|
|
37
|
-
label: Format
|
|
38
|
-
valueType: string
|
|
39
|
-
inputType: select
|
|
40
|
-
enumValues: ["Article", "Thread", "Short Video", "Long Video", "Carousel", "Image Post", "Story", "Newsletter Section", "Podcast Episode", "Other"]
|
|
41
|
-
- slug: post-platform
|
|
42
|
-
label: Platform
|
|
43
|
-
valueType: string
|
|
44
|
-
inputType: select
|
|
45
|
-
enumValues: ["LinkedIn", "Instagram", "TikTok", "YouTube", "Twitter / X", "Threads", "Bluesky", "Newsletter", "Podcast", "Blog", "Other"]
|
|
46
|
-
- slug: post-pillar
|
|
47
|
-
label: Pillar
|
|
48
|
-
valueType: entity_id
|
|
49
|
-
- slug: post-campaign
|
|
50
|
-
label: Campaign
|
|
51
|
-
valueType: entity_id
|
|
52
|
-
- slug: post-sponsor
|
|
53
|
-
label: Sponsor
|
|
54
|
-
valueType: entity_id
|
|
55
|
-
- slug: publish-date
|
|
56
|
-
label: Publish Date
|
|
57
|
-
valueType: date
|
|
58
|
-
- slug: post-hook
|
|
59
|
-
label: "Hook / Headline"
|
|
60
|
-
valueType: string
|
|
61
|
-
inputType: text
|
|
62
|
-
placeholder: "Opening line or headline that stops the scroll"
|
|
63
|
-
- slug: post-cta
|
|
64
|
-
label: CTA
|
|
65
|
-
valueType: string
|
|
66
|
-
inputType: text
|
|
67
|
-
placeholder: "What should the audience do?"
|
|
68
|
-
- slug: post-tags
|
|
69
|
-
label: Tags
|
|
70
|
-
valueType: array
|
|
71
|
-
- slug: engagement-score
|
|
72
|
-
label: Engagement Score
|
|
73
|
-
valueType: number
|
|
74
|
-
inputType: number
|
|
75
|
-
placeholder: "Numeric performance metric (likes + comments + shares)"
|
|
76
|
-
- slug: post-reach
|
|
77
|
-
label: "Reach / Views"
|
|
78
|
-
valueType: number
|
|
79
|
-
inputType: number
|
|
80
|
-
- slug: repurposed-from
|
|
81
|
-
label: Repurposed From
|
|
82
|
-
valueType: string
|
|
83
|
-
inputType: text
|
|
84
|
-
placeholder: "Source post or content this was adapted from"
|
|
85
|
-
- slug: post-url
|
|
86
|
-
label: Published URL
|
|
87
|
-
valueType: string
|
|
88
|
-
inputType: text
|
|
89
|
-
placeholder: "https://..."
|
|
90
|
-
constraints: { format: url }
|
|
91
|
-
|
|
92
|
-
- slug: campaign
|
|
93
|
-
displayName: Campaign
|
|
94
|
-
icon: target
|
|
95
|
-
color: "#F59E0B"
|
|
96
|
-
description: "A grouped content initiative — product launch, editorial series, seasonal push, or challenge."
|
|
97
|
-
scope: WORKSPACE
|
|
98
|
-
properties:
|
|
99
|
-
- slug: campaign-status
|
|
100
|
-
label: Status
|
|
101
|
-
valueType: string
|
|
102
|
-
inputType: select
|
|
103
|
-
enumValues: ["Planned", "Active", "Completed", "Paused", "Cancelled"]
|
|
104
|
-
- slug: campaign-type
|
|
105
|
-
label: Type
|
|
106
|
-
valueType: string
|
|
107
|
-
inputType: select
|
|
108
|
-
enumValues: ["Product Launch", "Editorial Series", "Seasonal", "Brand Partnership", "Challenge", "Evergreen", "Awareness", "Other"]
|
|
109
|
-
- slug: campaign-pillar
|
|
110
|
-
label: Primary Pillar
|
|
111
|
-
valueType: entity_id
|
|
112
|
-
- slug: campaign-start
|
|
113
|
-
label: Start Date
|
|
114
|
-
valueType: date
|
|
115
|
-
- slug: campaign-end
|
|
116
|
-
label: End Date
|
|
117
|
-
valueType: date
|
|
118
|
-
- slug: campaign-goal
|
|
119
|
-
label: Goal
|
|
120
|
-
valueType: string
|
|
121
|
-
inputType: text
|
|
122
|
-
placeholder: "What does success look like? Followers, sign-ups, revenue..."
|
|
123
|
-
- slug: campaign-kpi
|
|
124
|
-
label: Primary KPI
|
|
125
|
-
valueType: string
|
|
126
|
-
inputType: select
|
|
127
|
-
enumValues: ["Follower Growth", "Newsletter Sign-ups", "Engagement Rate", "Revenue", "Reach", "Brand Deals Closed", "Link Clicks", "Other"]
|
|
128
|
-
- slug: kpi-target
|
|
129
|
-
label: KPI Target
|
|
130
|
-
valueType: number
|
|
131
|
-
inputType: number
|
|
132
|
-
placeholder: "Numeric target for the primary KPI"
|
|
133
|
-
- slug: kpi-result
|
|
134
|
-
label: KPI Result
|
|
135
|
-
valueType: number
|
|
136
|
-
inputType: number
|
|
137
|
-
placeholder: "Fill when complete"
|
|
138
|
-
- slug: campaign-budget
|
|
139
|
-
label: "Budget (€)"
|
|
140
|
-
valueType: number
|
|
141
|
-
inputType: number
|
|
142
|
-
- slug: post-count
|
|
143
|
-
label: Post Count
|
|
144
|
-
valueType: number
|
|
145
|
-
inputType: number
|
|
146
|
-
- slug: campaign-tags
|
|
147
|
-
label: Tags
|
|
148
|
-
valueType: array
|
|
149
|
-
|
|
150
|
-
- slug: pillar
|
|
151
|
-
displayName: Pillar
|
|
152
|
-
icon: columns
|
|
153
|
-
color: "#8B5CF6"
|
|
154
|
-
description: "A recurring content theme — the lens through which your audience knows you. The organizing principle of your brand."
|
|
155
|
-
scope: WORKSPACE
|
|
156
|
-
properties:
|
|
157
|
-
- slug: pillar-status
|
|
158
|
-
label: Status
|
|
159
|
-
valueType: string
|
|
160
|
-
inputType: select
|
|
161
|
-
enumValues: ["Active", "Developing", "Paused", "Retired"]
|
|
162
|
-
- slug: pillar-audience
|
|
163
|
-
label: Audience Segment
|
|
164
|
-
valueType: string
|
|
165
|
-
inputType: text
|
|
166
|
-
placeholder: "Who does this pillar speak to?"
|
|
167
|
-
- slug: pillar-goal
|
|
168
|
-
label: Audience Goal
|
|
169
|
-
valueType: string
|
|
170
|
-
inputType: text
|
|
171
|
-
placeholder: "What should the audience think, feel, or do after consuming this pillar?"
|
|
172
|
-
- slug: pillar-formats
|
|
173
|
-
label: Primary Formats
|
|
174
|
-
valueType: string
|
|
175
|
-
inputType: select
|
|
176
|
-
enumValues: ["Articles + Threads", "Short Video", "Long Video", "Newsletter", "Podcast", "Carousel", "Mixed"]
|
|
177
|
-
- slug: post-count-pillar
|
|
178
|
-
label: Total Posts Published
|
|
179
|
-
valueType: number
|
|
180
|
-
inputType: number
|
|
181
|
-
- slug: avg-engagement
|
|
182
|
-
label: Avg Engagement Score
|
|
183
|
-
valueType: number
|
|
184
|
-
inputType: number
|
|
185
|
-
- slug: top-post
|
|
186
|
-
label: Top Performing Post
|
|
187
|
-
valueType: string
|
|
188
|
-
inputType: text
|
|
189
|
-
placeholder: "Title of best performing post in this pillar"
|
|
190
|
-
- slug: posting-frequency
|
|
191
|
-
label: Target Frequency
|
|
192
|
-
valueType: string
|
|
193
|
-
inputType: select
|
|
194
|
-
enumValues: ["Daily", "3x / week", "2x / week", "Weekly", "Bi-weekly", "Monthly", "Ad hoc"]
|
|
195
|
-
- slug: pillar-tags
|
|
196
|
-
label: Tags
|
|
197
|
-
valueType: array
|
|
198
|
-
|
|
199
|
-
- slug: platform
|
|
200
|
-
displayName: Platform
|
|
201
|
-
icon: share-2
|
|
202
|
-
color: "#06B6D4"
|
|
203
|
-
description: "A social account, newsletter publication, or podcast channel. Each platform has its own audience metrics and publishing rhythm."
|
|
204
|
-
scope: WORKSPACE
|
|
205
|
-
properties:
|
|
206
|
-
- slug: platform-type
|
|
207
|
-
label: Type
|
|
208
|
-
valueType: string
|
|
209
|
-
inputType: select
|
|
210
|
-
enumValues: ["LinkedIn", "Instagram", "TikTok", "YouTube", "Twitter / X", "Threads", "Bluesky", "Newsletter", "Podcast", "Blog / Website", "Other"]
|
|
211
|
-
- slug: platform-status
|
|
212
|
-
label: Status
|
|
213
|
-
valueType: string
|
|
214
|
-
inputType: select
|
|
215
|
-
enumValues: ["Active", "Building", "Maintenance Mode", "Inactive"]
|
|
216
|
-
- slug: platform-url
|
|
217
|
-
label: Profile URL
|
|
218
|
-
valueType: string
|
|
219
|
-
inputType: text
|
|
220
|
-
placeholder: "https://..."
|
|
221
|
-
constraints: { format: url }
|
|
222
|
-
- slug: follower-count
|
|
223
|
-
label: "Follower / Subscriber Count"
|
|
224
|
-
valueType: number
|
|
225
|
-
inputType: number
|
|
226
|
-
- slug: follower-target
|
|
227
|
-
label: Target Count
|
|
228
|
-
valueType: number
|
|
229
|
-
inputType: number
|
|
230
|
-
- slug: avg-engagement-rate
|
|
231
|
-
label: "Avg Engagement Rate (%)"
|
|
232
|
-
valueType: number
|
|
233
|
-
inputType: number
|
|
234
|
-
- slug: platform-posting-freq
|
|
235
|
-
label: Posting Frequency
|
|
236
|
-
valueType: string
|
|
237
|
-
inputType: select
|
|
238
|
-
enumValues: ["Daily", "3x / week", "2x / week", "Weekly", "Bi-weekly", "Monthly", "As Needed"]
|
|
239
|
-
- slug: last-post-date
|
|
240
|
-
label: Last Post Date
|
|
241
|
-
valueType: date
|
|
242
|
-
- slug: platform-notes
|
|
243
|
-
label: Notes
|
|
244
|
-
valueType: string
|
|
245
|
-
inputType: text
|
|
246
|
-
placeholder: "What works here? Tone, format, best times..."
|
|
247
|
-
- slug: platform-tags
|
|
248
|
-
label: Tags
|
|
249
|
-
valueType: array
|
|
250
|
-
|
|
251
|
-
- slug: newsletter
|
|
252
|
-
displayName: Newsletter
|
|
253
|
-
icon: mail
|
|
254
|
-
color: "#10B981"
|
|
255
|
-
description: "A newsletter issue — your direct channel to an owned audience. No algorithm, no platform fee, no intermediary."
|
|
256
|
-
scope: WORKSPACE
|
|
257
|
-
properties:
|
|
258
|
-
- slug: newsletter-status
|
|
259
|
-
label: Status
|
|
260
|
-
valueType: string
|
|
261
|
-
inputType: select
|
|
262
|
-
enumValues: ["Idea", "Drafting", "Editing", "Scheduled", "Sent", "Archived"]
|
|
263
|
-
- slug: newsletter-series
|
|
264
|
-
label: Series
|
|
265
|
-
valueType: string
|
|
266
|
-
inputType: text
|
|
267
|
-
placeholder: "Which newsletter series is this issue part of?"
|
|
268
|
-
- slug: issue-number
|
|
269
|
-
label: Issue Number
|
|
270
|
-
valueType: number
|
|
271
|
-
inputType: number
|
|
272
|
-
- slug: subject-line
|
|
273
|
-
label: Subject Line
|
|
274
|
-
valueType: string
|
|
275
|
-
inputType: text
|
|
276
|
-
placeholder: "The subject line — your most important copy"
|
|
277
|
-
- slug: preview-text
|
|
278
|
-
label: Preview Text
|
|
279
|
-
valueType: string
|
|
280
|
-
inputType: text
|
|
281
|
-
placeholder: "45-character preview shown in inbox (after subject)"
|
|
282
|
-
- slug: send-date
|
|
283
|
-
label: Send Date
|
|
284
|
-
valueType: date
|
|
285
|
-
- slug: subscriber-count
|
|
286
|
-
label: Subscriber Count at Send
|
|
287
|
-
valueType: number
|
|
288
|
-
inputType: number
|
|
289
|
-
- slug: open-rate
|
|
290
|
-
label: "Open Rate (%)"
|
|
291
|
-
valueType: number
|
|
292
|
-
inputType: number
|
|
293
|
-
- slug: click-rate
|
|
294
|
-
label: "Click Rate (%)"
|
|
295
|
-
valueType: number
|
|
296
|
-
inputType: number
|
|
297
|
-
- slug: newsletter-sponsor
|
|
298
|
-
label: Sponsor
|
|
299
|
-
valueType: entity_id
|
|
300
|
-
- slug: newsletter-campaign
|
|
301
|
-
label: Campaign
|
|
302
|
-
valueType: entity_id
|
|
303
|
-
- slug: newsletter-pillar
|
|
304
|
-
label: Primary Pillar
|
|
305
|
-
valueType: entity_id
|
|
306
|
-
- slug: newsletter-tags
|
|
307
|
-
label: Tags
|
|
308
|
-
valueType: array
|
|
309
|
-
|
|
310
|
-
- slug: sponsor
|
|
311
|
-
displayName: Sponsor
|
|
312
|
-
icon: briefcase
|
|
313
|
-
color: "#F43F5E"
|
|
314
|
-
description: "A brand deal or sponsorship — from first contact to final payment. Track deliverables, deadlines, and performance in one place."
|
|
315
|
-
scope: WORKSPACE
|
|
316
|
-
properties:
|
|
317
|
-
- slug: deal-status
|
|
318
|
-
label: Deal Status
|
|
319
|
-
valueType: string
|
|
320
|
-
inputType: select
|
|
321
|
-
enumValues: ["Prospecting", "Outreach Sent", "In Negotiation", "Contract Signed", "Active", "Deliverables Pending", "Completed", "Invoiced", "Paid", "Declined"]
|
|
322
|
-
- slug: sponsor-type
|
|
323
|
-
label: Deal Type
|
|
324
|
-
valueType: string
|
|
325
|
-
inputType: select
|
|
326
|
-
enumValues: ["Newsletter Sponsorship", "Social Post", "Podcast Ad", "Video Integration", "Affiliate", "Product Review", "Ambassador", "Event", "Other"]
|
|
327
|
-
- slug: contact-name
|
|
328
|
-
label: Contact Name
|
|
329
|
-
valueType: string
|
|
330
|
-
inputType: text
|
|
331
|
-
placeholder: "Brand contact / campaign manager"
|
|
332
|
-
- slug: contact-email
|
|
333
|
-
label: Contact Email
|
|
334
|
-
valueType: string
|
|
335
|
-
inputType: text
|
|
336
|
-
placeholder: "contact@brand.com"
|
|
337
|
-
constraints: { format: email }
|
|
338
|
-
- slug: deal-value
|
|
339
|
-
label: "Deal Value (€)"
|
|
340
|
-
valueType: number
|
|
341
|
-
inputType: number
|
|
342
|
-
- slug: payment-status
|
|
343
|
-
label: Payment Status
|
|
344
|
-
valueType: string
|
|
345
|
-
inputType: select
|
|
346
|
-
enumValues: ["Not Yet Due", "Invoice Sent", "Paid", "Overdue", "Disputed"]
|
|
347
|
-
- slug: contract-date
|
|
348
|
-
label: Contract Date
|
|
349
|
-
valueType: date
|
|
350
|
-
- slug: deliverable-deadline
|
|
351
|
-
label: Deliverable Deadline
|
|
352
|
-
valueType: date
|
|
353
|
-
- slug: exclusivity-end
|
|
354
|
-
label: Exclusivity End Date
|
|
355
|
-
valueType: date
|
|
356
|
-
- slug: deliverables
|
|
357
|
-
label: Deliverables
|
|
358
|
-
valueType: string
|
|
359
|
-
inputType: text
|
|
360
|
-
placeholder: "What exactly was promised? (2 posts, 1 newsletter mention, story, etc.)"
|
|
361
|
-
- slug: talking-points
|
|
362
|
-
label: Key Talking Points
|
|
363
|
-
valueType: string
|
|
364
|
-
inputType: text
|
|
365
|
-
placeholder: "Brand messages, required mentions, do-not-say list"
|
|
366
|
-
- slug: performance-notes
|
|
367
|
-
label: Performance Notes
|
|
368
|
-
valueType: string
|
|
369
|
-
inputType: text
|
|
370
|
-
placeholder: "What results did you report to the brand?"
|
|
371
|
-
- slug: sponsor-tags
|
|
372
|
-
label: Tags
|
|
373
|
-
valueType: array
|
|
374
|
-
|
|
375
|
-
views:
|
|
376
|
-
- name: Content Calendar
|
|
377
|
-
type: calendar
|
|
378
|
-
scopeProfileSlug: post
|
|
379
|
-
config:
|
|
380
|
-
dateField: publish-date
|
|
381
|
-
colorField: post-platform
|
|
382
|
-
- name: Post Pipeline
|
|
383
|
-
type: kanban
|
|
384
|
-
scopeProfileSlug: post
|
|
385
|
-
config:
|
|
386
|
-
groupByField: post-status
|
|
387
|
-
cardFields: [post-format, post-platform, post-pillar, publish-date]
|
|
388
|
-
- name: All Posts
|
|
389
|
-
type: table
|
|
390
|
-
scopeProfileSlug: post
|
|
391
|
-
config:
|
|
392
|
-
visibleColumns: [post-status, post-format, post-platform, post-pillar, publish-date, engagement-score, post-reach]
|
|
393
|
-
defaultSort: { field: publish-date, direction: desc }
|
|
394
|
-
rowHeight: default
|
|
395
|
-
- name: Ideas Inbox
|
|
396
|
-
type: kanban
|
|
397
|
-
scopeProfileSlug: post
|
|
398
|
-
config:
|
|
399
|
-
groupByField: post-format
|
|
400
|
-
cardFields: [post-format, post-status, post-hook, post-tags]
|
|
401
|
-
- name: Repurposing Queue
|
|
402
|
-
type: table
|
|
403
|
-
scopeProfileSlug: post
|
|
404
|
-
config:
|
|
405
|
-
visibleColumns: [post-status, post-format, post-platform, post-pillar, repurposed-from, publish-date]
|
|
406
|
-
defaultSort: { field: post-platform, direction: asc }
|
|
407
|
-
rowHeight: default
|
|
408
|
-
- name: Content Graph
|
|
409
|
-
type: graph
|
|
410
|
-
scopeProfileSlugs: [post, campaign, pillar, newsletter, sponsor]
|
|
411
|
-
config:
|
|
412
|
-
layout: force
|
|
413
|
-
showRelations: true
|
|
414
|
-
- name: Campaigns
|
|
415
|
-
type: kanban
|
|
416
|
-
scopeProfileSlug: campaign
|
|
417
|
-
config:
|
|
418
|
-
groupByField: campaign-status
|
|
419
|
-
cardFields: [campaign-type, campaign-pillar, campaign-start, campaign-end, campaign-kpi]
|
|
420
|
-
- name: Campaign Timeline
|
|
421
|
-
type: timeline
|
|
422
|
-
scopeProfileSlug: campaign
|
|
423
|
-
config:
|
|
424
|
-
timeField: campaign-end
|
|
425
|
-
groupByField: campaign-status
|
|
426
|
-
- name: Pillars
|
|
427
|
-
type: table
|
|
428
|
-
scopeProfileSlug: pillar
|
|
429
|
-
config:
|
|
430
|
-
visibleColumns: [pillar-status, pillar-audience, pillar-goal, pillar-formats, posting-frequency, post-count-pillar, avg-engagement]
|
|
431
|
-
defaultSort: { field: pillar-status, direction: asc }
|
|
432
|
-
rowHeight: default
|
|
433
|
-
- name: Platforms
|
|
434
|
-
type: table
|
|
435
|
-
scopeProfileSlug: platform
|
|
436
|
-
config:
|
|
437
|
-
visibleColumns: [platform-type, platform-status, follower-count, follower-target, avg-engagement-rate, platform-posting-freq, last-post-date]
|
|
438
|
-
defaultSort: { field: follower-count, direction: desc }
|
|
439
|
-
rowHeight: default
|
|
440
|
-
- name: Newsletter Issues
|
|
441
|
-
type: table
|
|
442
|
-
scopeProfileSlug: newsletter
|
|
443
|
-
config:
|
|
444
|
-
visibleColumns: [newsletter-status, newsletter-series, issue-number, subject-line, send-date, subscriber-count, open-rate, click-rate, newsletter-sponsor]
|
|
445
|
-
defaultSort: { field: send-date, direction: desc }
|
|
446
|
-
rowHeight: default
|
|
447
|
-
- name: Newsletter Pipeline
|
|
448
|
-
type: kanban
|
|
449
|
-
scopeProfileSlug: newsletter
|
|
450
|
-
config:
|
|
451
|
-
groupByField: newsletter-status
|
|
452
|
-
cardFields: [newsletter-series, issue-number, subject-line, send-date, newsletter-sponsor]
|
|
453
|
-
- name: Newsletter Calendar
|
|
454
|
-
type: calendar
|
|
455
|
-
scopeProfileSlug: newsletter
|
|
456
|
-
config:
|
|
457
|
-
dateField: send-date
|
|
458
|
-
colorField: newsletter-status
|
|
459
|
-
- name: Sponsor Tracker
|
|
460
|
-
type: kanban
|
|
461
|
-
scopeProfileSlug: sponsor
|
|
462
|
-
config:
|
|
463
|
-
groupByField: deal-status
|
|
464
|
-
cardFields: [sponsor-type, deal-value, deliverable-deadline, payment-status]
|
|
465
|
-
- name: Sponsors Table
|
|
466
|
-
type: table
|
|
467
|
-
scopeProfileSlug: sponsor
|
|
468
|
-
config:
|
|
469
|
-
visibleColumns: [deal-status, sponsor-type, contact-name, deal-value, payment-status, deliverable-deadline, exclusivity-end]
|
|
470
|
-
defaultSort: { field: deliverable-deadline, direction: asc }
|
|
471
|
-
rowHeight: default
|
|
472
|
-
- name: Sponsor Deadlines
|
|
473
|
-
type: calendar
|
|
474
|
-
scopeProfileSlug: sponsor
|
|
475
|
-
config:
|
|
476
|
-
dateField: deliverable-deadline
|
|
477
|
-
colorField: payment-status
|
|
478
|
-
- name: Post
|
|
479
|
-
type: bento
|
|
480
|
-
scopeProfileSlug: post
|
|
481
|
-
config:
|
|
482
|
-
layout: bento
|
|
483
|
-
blocks:
|
|
484
|
-
- id: post-header
|
|
485
|
-
kind: widget
|
|
486
|
-
widgetType: section-header
|
|
487
|
-
pos: { x: 0, y: 0, w: 12, h: 2 }
|
|
488
|
-
config: { title: Posts, icon: FileEdit, color: "#6366F1", profileSlug: post }
|
|
489
|
-
- id: post-count
|
|
490
|
-
kind: widget
|
|
491
|
-
widgetType: stat-card
|
|
492
|
-
pos: { x: 0, y: 2, w: 3, h: 3 }
|
|
493
|
-
config: { label: Total Posts, aggregation: count, profileSlug: post, color: "#6366F1" }
|
|
494
|
-
- id: post-pipeline
|
|
495
|
-
kind: view
|
|
496
|
-
viewName: Post Pipeline
|
|
497
|
-
pos: { x: 0, y: 9, w: 12, h: 8 }
|
|
498
|
-
- id: post-cal
|
|
499
|
-
kind: view
|
|
500
|
-
viewName: Content Calendar
|
|
501
|
-
pos: { x: 0, y: 19, w: 12, h: 8 }
|
|
502
|
-
- id: post-published
|
|
503
|
-
kind: widget
|
|
504
|
-
widgetType: entity-count
|
|
505
|
-
pos: { x: 3, y: 2, w: 3, h: 3 }
|
|
506
|
-
config: { profileSlug: post, label: Published, icon: Globe, filter: { status: published }, color: "#10B981" }
|
|
507
|
-
- id: post-drafts
|
|
508
|
-
kind: widget
|
|
509
|
-
widgetType: entity-count
|
|
510
|
-
pos: { x: 6, y: 2, w: 3, h: 3 }
|
|
511
|
-
config: { profileSlug: post, label: Drafts, icon: FileEdit, filter: { status: draft }, color: "#6B7280" }
|
|
512
|
-
- id: post-scheduled
|
|
513
|
-
kind: widget
|
|
514
|
-
widgetType: entity-count
|
|
515
|
-
pos: { x: 9, y: 2, w: 3, h: 3 }
|
|
516
|
-
config: { profileSlug: post, label: Scheduled, icon: Clock, filter: { status: scheduled }, color: "#F59E0B" }
|
|
517
|
-
- id: post-spotlight
|
|
518
|
-
kind: widget
|
|
519
|
-
widgetType: entity-spotlight
|
|
520
|
-
pos: { x: 0, y: 5, w: 5, h: 4 }
|
|
521
|
-
config: { profileSlug: post, seed: daily, layout: detail, subtitleField: platform, color: "#EC4899" }
|
|
522
|
-
- id: post-gallery
|
|
523
|
-
kind: widget
|
|
524
|
-
widgetType: entity-gallery
|
|
525
|
-
pos: { x: 5, y: 5, w: 7, h: 4 }
|
|
526
|
-
config: { profileSlug: post, coverField: thumbnail-url, title: Recent Posts, limit: 6 }
|
|
527
|
-
breakpoints:
|
|
528
|
-
lg: { cols: 12, rowHeight: 60, gap: 12 }
|
|
529
|
-
md: { cols: 10, rowHeight: 60, gap: 12 }
|
|
530
|
-
sm: { cols: 6, rowHeight: 60, gap: 12 }
|
|
531
|
-
xs: { cols: 4, rowHeight: 60, gap: 12 }
|
|
532
|
-
xxs: { cols: 2, rowHeight: 60, gap: 12 }
|
|
533
|
-
- name: Campaign
|
|
534
|
-
type: bento
|
|
535
|
-
scopeProfileSlug: campaign
|
|
536
|
-
config:
|
|
537
|
-
layout: bento
|
|
538
|
-
blocks:
|
|
539
|
-
- id: campaign-header
|
|
540
|
-
kind: widget
|
|
541
|
-
widgetType: section-header
|
|
542
|
-
pos: { x: 0, y: 0, w: 12, h: 2 }
|
|
543
|
-
config: { title: Campaigns, icon: Target, color: "#F59E0B", profileSlug: campaign }
|
|
544
|
-
- id: campaign-count
|
|
545
|
-
kind: widget
|
|
546
|
-
widgetType: stat-card
|
|
547
|
-
pos: { x: 0, y: 2, w: 3, h: 3 }
|
|
548
|
-
config: { label: Total Campaigns, aggregation: count, profileSlug: campaign, color: "#F59E0B" }
|
|
549
|
-
- id: campaign-board
|
|
550
|
-
kind: view
|
|
551
|
-
viewName: Campaigns
|
|
552
|
-
pos: { x: 0, y: 9, w: 12, h: 8 }
|
|
553
|
-
- id: campaign-timeline
|
|
554
|
-
kind: view
|
|
555
|
-
viewName: Campaign Timeline
|
|
556
|
-
pos: { x: 0, y: 19, w: 12, h: 8 }
|
|
557
|
-
- id: campaign-active
|
|
558
|
-
kind: widget
|
|
559
|
-
widgetType: entity-count
|
|
560
|
-
pos: { x: 3, y: 2, w: 3, h: 3 }
|
|
561
|
-
config: { profileSlug: campaign, label: Active, icon: Play, filter: { status: active }, color: "#10B981" }
|
|
562
|
-
- id: campaign-posts
|
|
563
|
-
kind: widget
|
|
564
|
-
widgetType: entity-count
|
|
565
|
-
pos: { x: 6, y: 2, w: 3, h: 3 }
|
|
566
|
-
config: { profileSlug: post, label: Campaign Posts, icon: FileText, color: "#EC4899" }
|
|
567
|
-
- id: campaign-spotlight
|
|
568
|
-
kind: widget
|
|
569
|
-
widgetType: entity-spotlight
|
|
570
|
-
pos: { x: 0, y: 5, w: 5, h: 4 }
|
|
571
|
-
config: { profileSlug: campaign, seed: daily, layout: detail, subtitleField: status, color: "#8B5CF6" }
|
|
572
|
-
- id: campaign-post-list
|
|
573
|
-
kind: widget
|
|
574
|
-
widgetType: entity-list
|
|
575
|
-
pos: { x: 5, y: 5, w: 7, h: 4 }
|
|
576
|
-
config: { profileSlug: post, title: Campaign Posts, limit: 6, variant: compact }
|
|
577
|
-
breakpoints:
|
|
578
|
-
lg: { cols: 12, rowHeight: 60, gap: 12 }
|
|
579
|
-
md: { cols: 10, rowHeight: 60, gap: 12 }
|
|
580
|
-
sm: { cols: 6, rowHeight: 60, gap: 12 }
|
|
581
|
-
xs: { cols: 4, rowHeight: 60, gap: 12 }
|
|
582
|
-
xxs: { cols: 2, rowHeight: 60, gap: 12 }
|
|
583
|
-
- name: Newsletter
|
|
584
|
-
type: bento
|
|
585
|
-
scopeProfileSlug: newsletter
|
|
586
|
-
config:
|
|
587
|
-
layout: bento
|
|
588
|
-
blocks:
|
|
589
|
-
- id: nl-header
|
|
590
|
-
kind: widget
|
|
591
|
-
widgetType: section-header
|
|
592
|
-
pos: { x: 0, y: 0, w: 12, h: 2 }
|
|
593
|
-
config: { title: Newsletters, icon: Mail, color: "#10B981", profileSlug: newsletter }
|
|
594
|
-
- id: nl-count
|
|
595
|
-
kind: widget
|
|
596
|
-
widgetType: stat-card
|
|
597
|
-
pos: { x: 0, y: 2, w: 3, h: 3 }
|
|
598
|
-
config: { label: Total Issues, aggregation: count, profileSlug: newsletter, color: "#10B981" }
|
|
599
|
-
- id: nl-pipeline
|
|
600
|
-
kind: view
|
|
601
|
-
viewName: Newsletter Pipeline
|
|
602
|
-
pos: { x: 0, y: 5, w: 12, h: 10 }
|
|
603
|
-
- id: nl-table
|
|
604
|
-
kind: view
|
|
605
|
-
viewName: Newsletter Issues
|
|
606
|
-
pos: { x: 0, y: 15, w: 12, h: 8 }
|
|
607
|
-
breakpoints:
|
|
608
|
-
lg: { cols: 12, rowHeight: 60, gap: 12 }
|
|
609
|
-
md: { cols: 10, rowHeight: 60, gap: 12 }
|
|
610
|
-
sm: { cols: 6, rowHeight: 60, gap: 12 }
|
|
611
|
-
xs: { cols: 4, rowHeight: 60, gap: 12 }
|
|
612
|
-
xxs: { cols: 2, rowHeight: 60, gap: 12 }
|
|
613
|
-
- name: Pillar
|
|
614
|
-
type: bento
|
|
615
|
-
scopeProfileSlug: pillar
|
|
616
|
-
config:
|
|
617
|
-
layout: bento
|
|
618
|
-
blocks:
|
|
619
|
-
- id: pillar-header
|
|
620
|
-
kind: widget
|
|
621
|
-
widgetType: section-header
|
|
622
|
-
pos: { x: 0, y: 0, w: 12, h: 2 }
|
|
623
|
-
config: { title: Content Pillars, icon: Layers, color: "#3B82F6", profileSlug: pillar }
|
|
624
|
-
- id: pillar-count
|
|
625
|
-
kind: widget
|
|
626
|
-
widgetType: stat-card
|
|
627
|
-
pos: { x: 0, y: 2, w: 3, h: 3 }
|
|
628
|
-
config: { label: Pillars, aggregation: count, profileSlug: pillar, color: "#3B82F6", icon: Layers }
|
|
629
|
-
- id: pillar-posts-count
|
|
630
|
-
kind: widget
|
|
631
|
-
widgetType: entity-count
|
|
632
|
-
pos: { x: 3, y: 2, w: 3, h: 3 }
|
|
633
|
-
config: { profileSlug: post, label: Posts in Pillar, icon: FileText, color: "#EC4899" }
|
|
634
|
-
- id: pillar-campaigns
|
|
635
|
-
kind: widget
|
|
636
|
-
widgetType: entity-count
|
|
637
|
-
pos: { x: 6, y: 2, w: 3, h: 3 }
|
|
638
|
-
config: { profileSlug: campaign, label: Campaigns, icon: Target, color: "#8B5CF6" }
|
|
639
|
-
- id: pillar-spotlight
|
|
640
|
-
kind: widget
|
|
641
|
-
widgetType: entity-spotlight
|
|
642
|
-
pos: { x: 0, y: 5, w: 6, h: 4 }
|
|
643
|
-
config: { profileSlug: pillar, seed: daily, layout: detail, color: "#3B82F6" }
|
|
644
|
-
- id: pillar-post-list
|
|
645
|
-
kind: widget
|
|
646
|
-
widgetType: entity-list
|
|
647
|
-
pos: { x: 6, y: 5, w: 6, h: 4 }
|
|
648
|
-
config: { profileSlug: post, title: Posts in this Pillar, limit: 6, variant: compact }
|
|
649
|
-
- id: pillar-table
|
|
650
|
-
kind: view
|
|
651
|
-
viewName: Pillars
|
|
652
|
-
pos: { x: 0, y: 9, w: 12, h: 8 }
|
|
653
|
-
|
|
654
|
-
entityLinks:
|
|
655
|
-
- sourceProfileSlug: post
|
|
656
|
-
targetProfileSlug: pillar
|
|
657
|
-
type: under
|
|
658
|
-
- sourceProfileSlug: post
|
|
659
|
-
targetProfileSlug: campaign
|
|
660
|
-
type: part_of
|
|
661
|
-
- sourceProfileSlug: post
|
|
662
|
-
targetProfileSlug: sponsor
|
|
663
|
-
type: sponsored_by
|
|
664
|
-
- sourceProfileSlug: campaign
|
|
665
|
-
targetProfileSlug: pillar
|
|
666
|
-
type: under
|
|
667
|
-
- sourceProfileSlug: newsletter
|
|
668
|
-
targetProfileSlug: campaign
|
|
669
|
-
type: part_of
|
|
670
|
-
- sourceProfileSlug: newsletter
|
|
671
|
-
targetProfileSlug: pillar
|
|
672
|
-
type: under
|
|
673
|
-
- sourceProfileSlug: newsletter
|
|
674
|
-
targetProfileSlug: sponsor
|
|
675
|
-
type: sponsored_by
|
|
676
|
-
- sourceProfileSlug: platform
|
|
677
|
-
targetProfileSlug: post
|
|
678
|
-
type: publishes
|
|
679
|
-
|
|
680
|
-
displayTemplates:
|
|
681
|
-
- name: Post Card
|
|
682
|
-
description: "Content unit with status, format, platform, and performance metrics"
|
|
683
|
-
entityType: post
|
|
684
|
-
targetType: entity
|
|
685
|
-
isDefault: true
|
|
686
|
-
config:
|
|
687
|
-
layout:
|
|
688
|
-
structure:
|
|
689
|
-
header:
|
|
690
|
-
enabled: true
|
|
691
|
-
slots: [post-status, post-format, post-platform]
|
|
692
|
-
layout: horizontal
|
|
693
|
-
align: left
|
|
694
|
-
sidebar:
|
|
695
|
-
enabled: true
|
|
696
|
-
slots: [post-pillar, post-campaign, post-sponsor, publish-date]
|
|
697
|
-
position: right
|
|
698
|
-
width: 260px
|
|
699
|
-
layout: vertical
|
|
700
|
-
content:
|
|
701
|
-
enabled: true
|
|
702
|
-
slots: [post-hook, post-cta, engagement-score, post-reach]
|
|
703
|
-
layout: vertical
|
|
704
|
-
fieldMapping:
|
|
705
|
-
post-status:
|
|
706
|
-
slot: post-status
|
|
707
|
-
renderer: { type: badge, size: md }
|
|
708
|
-
showLabel: false
|
|
709
|
-
order: 1
|
|
710
|
-
post-format:
|
|
711
|
-
slot: post-format
|
|
712
|
-
renderer: { type: badge, variant: muted, size: sm }
|
|
713
|
-
showLabel: false
|
|
714
|
-
order: 2
|
|
715
|
-
post-platform:
|
|
716
|
-
slot: post-platform
|
|
717
|
-
renderer: { type: badge, variant: muted, size: sm }
|
|
718
|
-
showLabel: false
|
|
719
|
-
order: 3
|
|
720
|
-
engagement-score:
|
|
721
|
-
slot: engagement-score
|
|
722
|
-
renderer: { type: number, size: md }
|
|
723
|
-
label: Engagement
|
|
724
|
-
showLabel: true
|
|
725
|
-
order: 4
|
|
726
|
-
post-reach:
|
|
727
|
-
slot: post-reach
|
|
728
|
-
renderer: { type: number, size: md }
|
|
729
|
-
label: Reach
|
|
730
|
-
showLabel: true
|
|
731
|
-
order: 5
|
|
732
|
-
publish-date:
|
|
733
|
-
slot: publish-date
|
|
734
|
-
renderer: { type: date, format: relative }
|
|
735
|
-
order: 6
|
|
736
|
-
colors: { accent: "#8B5CF6" }
|
|
737
|
-
styling: { borderRadius: 10px }
|
|
738
|
-
- name: Sponsor Deal
|
|
739
|
-
description: "Brand deal with status, financials, and deliverable tracking"
|
|
740
|
-
entityType: sponsor
|
|
741
|
-
targetType: entity
|
|
742
|
-
isDefault: true
|
|
743
|
-
config:
|
|
744
|
-
layout:
|
|
745
|
-
structure:
|
|
746
|
-
header:
|
|
747
|
-
enabled: true
|
|
748
|
-
slots: [deal-status, deal-value]
|
|
749
|
-
layout: horizontal
|
|
750
|
-
sidebar:
|
|
751
|
-
enabled: true
|
|
752
|
-
slots: [payment-status, deliverable-deadline, exclusivity-end, contact-name, contact-email]
|
|
753
|
-
position: right
|
|
754
|
-
width: 280px
|
|
755
|
-
layout: vertical
|
|
756
|
-
content:
|
|
757
|
-
enabled: true
|
|
758
|
-
slots: [deliverables, talking-points, performance-notes]
|
|
759
|
-
layout: vertical
|
|
760
|
-
fieldMapping:
|
|
761
|
-
deal-status:
|
|
762
|
-
slot: deal-status
|
|
763
|
-
renderer: { type: badge, size: md }
|
|
764
|
-
showLabel: false
|
|
765
|
-
order: 1
|
|
766
|
-
deal-value:
|
|
767
|
-
slot: deal-value
|
|
768
|
-
renderer: { type: number, format: currency, size: lg }
|
|
769
|
-
label: Deal Value
|
|
770
|
-
order: 2
|
|
771
|
-
payment-status:
|
|
772
|
-
slot: payment-status
|
|
773
|
-
renderer: { type: badge, variant: muted, size: sm }
|
|
774
|
-
showLabel: true
|
|
775
|
-
order: 3
|
|
776
|
-
deliverable-deadline:
|
|
777
|
-
slot: deliverable-deadline
|
|
778
|
-
renderer: { type: date, format: relative }
|
|
779
|
-
label: Deadline
|
|
780
|
-
showLabel: true
|
|
781
|
-
order: 4
|
|
782
|
-
colors: { accent: "#F59E0B" }
|
|
783
|
-
styling: { borderRadius: 10px }
|
|
784
|
-
- name: Campaign Brief
|
|
785
|
-
description: "Campaign with timeline, KPI progress, and linked content"
|
|
786
|
-
entityType: campaign
|
|
787
|
-
targetType: entity
|
|
788
|
-
isDefault: true
|
|
789
|
-
config:
|
|
790
|
-
layout:
|
|
791
|
-
structure:
|
|
792
|
-
header:
|
|
793
|
-
enabled: true
|
|
794
|
-
slots: [campaign-status, campaign-type]
|
|
795
|
-
layout: horizontal
|
|
796
|
-
sidebar:
|
|
797
|
-
enabled: true
|
|
798
|
-
slots: [campaign-pillar, campaign-start, campaign-end, kpi-target, kpi-result, post-count]
|
|
799
|
-
position: right
|
|
800
|
-
width: 260px
|
|
801
|
-
layout: vertical
|
|
802
|
-
content:
|
|
803
|
-
enabled: true
|
|
804
|
-
slots: [campaign-goal, campaign-kpi, campaign-budget]
|
|
805
|
-
layout: vertical
|
|
806
|
-
fieldMapping:
|
|
807
|
-
campaign-status:
|
|
808
|
-
slot: campaign-status
|
|
809
|
-
renderer: { type: badge, size: md }
|
|
810
|
-
showLabel: false
|
|
811
|
-
order: 1
|
|
812
|
-
campaign-type:
|
|
813
|
-
slot: campaign-type
|
|
814
|
-
renderer: { type: badge, variant: muted, size: sm }
|
|
815
|
-
showLabel: false
|
|
816
|
-
order: 2
|
|
817
|
-
kpi-target:
|
|
818
|
-
slot: kpi-target
|
|
819
|
-
renderer: { type: number, size: md }
|
|
820
|
-
label: KPI Target
|
|
821
|
-
showLabel: true
|
|
822
|
-
order: 3
|
|
823
|
-
kpi-result:
|
|
824
|
-
slot: kpi-result
|
|
825
|
-
renderer: { type: number, size: md }
|
|
826
|
-
label: KPI Result
|
|
827
|
-
showLabel: true
|
|
828
|
-
order: 4
|
|
829
|
-
campaign-start:
|
|
830
|
-
slot: campaign-start
|
|
831
|
-
renderer: { type: date, format: relative }
|
|
832
|
-
label: Start
|
|
833
|
-
showLabel: true
|
|
834
|
-
order: 5
|
|
835
|
-
campaign-end:
|
|
836
|
-
slot: campaign-end
|
|
837
|
-
renderer: { type: date, format: relative }
|
|
838
|
-
label: End
|
|
839
|
-
showLabel: true
|
|
840
|
-
order: 6
|
|
841
|
-
colors: { accent: "#EC4899" }
|
|
842
|
-
styling: { borderRadius: 10px }
|
|
843
|
-
- name: Newsletter Issue
|
|
844
|
-
description: "Newsletter issue with open/click rates and sponsor linkage"
|
|
845
|
-
entityType: newsletter
|
|
846
|
-
targetType: entity
|
|
847
|
-
isDefault: true
|
|
848
|
-
config:
|
|
849
|
-
layout:
|
|
850
|
-
structure:
|
|
851
|
-
header:
|
|
852
|
-
enabled: true
|
|
853
|
-
slots: [newsletter-status, issue-number]
|
|
854
|
-
layout: horizontal
|
|
855
|
-
sidebar:
|
|
856
|
-
enabled: true
|
|
857
|
-
slots: [newsletter-sponsor, newsletter-campaign, newsletter-pillar, send-date, subscriber-count]
|
|
858
|
-
position: right
|
|
859
|
-
width: 260px
|
|
860
|
-
layout: vertical
|
|
861
|
-
content:
|
|
862
|
-
enabled: true
|
|
863
|
-
slots: [subject-line, preview-text, open-rate, click-rate]
|
|
864
|
-
layout: vertical
|
|
865
|
-
fieldMapping:
|
|
866
|
-
newsletter-status:
|
|
867
|
-
slot: newsletter-status
|
|
868
|
-
renderer: { type: badge, size: md }
|
|
869
|
-
showLabel: false
|
|
870
|
-
order: 1
|
|
871
|
-
open-rate:
|
|
872
|
-
slot: open-rate
|
|
873
|
-
renderer: { type: number, format: percent, size: md }
|
|
874
|
-
label: Open Rate
|
|
875
|
-
showLabel: true
|
|
876
|
-
order: 2
|
|
877
|
-
click-rate:
|
|
878
|
-
slot: click-rate
|
|
879
|
-
renderer: { type: number, format: percent, size: md }
|
|
880
|
-
label: Click Rate
|
|
881
|
-
showLabel: true
|
|
882
|
-
order: 3
|
|
883
|
-
send-date:
|
|
884
|
-
slot: send-date
|
|
885
|
-
renderer: { type: date, format: relative }
|
|
886
|
-
label: Sent
|
|
887
|
-
showLabel: true
|
|
888
|
-
order: 4
|
|
889
|
-
colors: { accent: "#14B8A6" }
|
|
890
|
-
styling: { borderRadius: 10px }
|
|
891
|
-
|
|
892
|
-
# Home dashboard bento (maps from source bentoLayout — all blocks are widgets)
|
|
893
|
-
bento:
|
|
894
|
-
blocks:
|
|
895
|
-
- kind: widget
|
|
896
|
-
widgetType: welcome-header
|
|
897
|
-
pos: { x: 0, y: 0, w: 12, h: 2 }
|
|
898
|
-
- kind: widget
|
|
899
|
-
widgetType: entity-count
|
|
900
|
-
pos: { x: 0, y: 2, w: 2, h: 2 }
|
|
901
|
-
config: { profileSlug: post, label: Posts }
|
|
902
|
-
- kind: widget
|
|
903
|
-
widgetType: entity-count
|
|
904
|
-
pos: { x: 2, y: 2, w: 2, h: 2 }
|
|
905
|
-
config: { profileSlug: campaign, label: Campaigns }
|
|
906
|
-
- kind: widget
|
|
907
|
-
widgetType: entity-count
|
|
908
|
-
pos: { x: 4, y: 2, w: 2, h: 2 }
|
|
909
|
-
config: { profileSlug: pillar, label: Pillars }
|
|
910
|
-
- kind: widget
|
|
911
|
-
widgetType: entity-count
|
|
912
|
-
pos: { x: 6, y: 2, w: 2, h: 2 }
|
|
913
|
-
config: { profileSlug: newsletter, label: Newsletters }
|
|
914
|
-
- kind: widget
|
|
915
|
-
widgetType: entity-count
|
|
916
|
-
pos: { x: 8, y: 2, w: 2, h: 2 }
|
|
917
|
-
config: { profileSlug: platform, label: Platforms }
|
|
918
|
-
- kind: widget
|
|
919
|
-
widgetType: entity-count
|
|
920
|
-
pos: { x: 10, y: 2, w: 2, h: 2 }
|
|
921
|
-
config: { profileSlug: sponsor, label: Sponsors }
|
|
922
|
-
- kind: widget
|
|
923
|
-
widgetType: entity-list
|
|
924
|
-
pos: { x: 0, y: 4, w: 5, h: 4 }
|
|
925
|
-
config: { profileSlug: post, title: Post Pipeline, limit: 8, variant: compact }
|
|
926
|
-
- kind: widget
|
|
927
|
-
widgetType: entity-list
|
|
928
|
-
pos: { x: 5, y: 4, w: 4, h: 4 }
|
|
929
|
-
config: { profileSlug: campaign, title: Active Campaigns, limit: 5, variant: detailed }
|
|
930
|
-
- kind: widget
|
|
931
|
-
widgetType: entity-list
|
|
932
|
-
pos: { x: 9, y: 4, w: 3, h: 4 }
|
|
933
|
-
config: { profileSlug: sponsor, title: Sponsor Tracker, limit: 5, variant: compact }
|
|
934
|
-
- kind: widget
|
|
935
|
-
widgetType: calendar
|
|
936
|
-
pos: { x: 0, y: 8, w: 5, h: 4 }
|
|
937
|
-
- kind: widget
|
|
938
|
-
widgetType: entity-list
|
|
939
|
-
pos: { x: 5, y: 8, w: 4, h: 4 }
|
|
940
|
-
config: { profileSlug: newsletter, title: Newsletter Issues, limit: 5, variant: compact }
|
|
941
|
-
- kind: widget
|
|
942
|
-
widgetType: feed
|
|
943
|
-
pos: { x: 9, y: 8, w: 3, h: 4 }
|
|
944
|
-
|
|
945
|
-
# Per-profile entity detail bento layouts
|
|
946
|
-
profileEntityBentoTemplates:
|
|
947
|
-
post:
|
|
948
|
-
blocks:
|
|
949
|
-
- id: post-eb-header
|
|
950
|
-
kind: widget
|
|
951
|
-
widgetType: entity-header
|
|
952
|
-
pos: { x: 0, y: 0, w: 12, h: 2 }
|
|
953
|
-
- id: post-eb-props
|
|
954
|
-
kind: widget
|
|
955
|
-
widgetType: entity-properties
|
|
956
|
-
pos: { x: 0, y: 2, w: 4, h: 8 }
|
|
957
|
-
- id: post-eb-content
|
|
958
|
-
kind: widget
|
|
959
|
-
widgetType: entity-content
|
|
960
|
-
pos: { x: 4, y: 2, w: 8, h: 4 }
|
|
961
|
-
- id: post-eb-similar
|
|
962
|
-
kind: widget
|
|
963
|
-
widgetType: entity-list
|
|
964
|
-
pos: { x: 4, y: 6, w: 8, h: 4 }
|
|
965
|
-
config: { profileSlug: post, title: Similar Posts, limit: 6, variant: compact }
|
|
966
|
-
campaign:
|
|
967
|
-
blocks:
|
|
968
|
-
- id: camp-eb-header
|
|
969
|
-
kind: widget
|
|
970
|
-
widgetType: entity-header
|
|
971
|
-
pos: { x: 0, y: 0, w: 12, h: 2 }
|
|
972
|
-
- id: camp-eb-props
|
|
973
|
-
kind: widget
|
|
974
|
-
widgetType: entity-properties
|
|
975
|
-
pos: { x: 0, y: 2, w: 4, h: 8 }
|
|
976
|
-
- id: camp-eb-posts
|
|
977
|
-
kind: widget
|
|
978
|
-
widgetType: entity-list
|
|
979
|
-
pos: { x: 4, y: 2, w: 8, h: 4 }
|
|
980
|
-
config: { profileSlug: post, title: Campaign Posts, limit: 8, variant: compact }
|
|
981
|
-
- id: camp-eb-content
|
|
982
|
-
kind: widget
|
|
983
|
-
widgetType: entity-content
|
|
984
|
-
pos: { x: 4, y: 6, w: 8, h: 4 }
|
|
985
|
-
pillar:
|
|
986
|
-
blocks:
|
|
987
|
-
- id: pillar-eb-header
|
|
988
|
-
kind: widget
|
|
989
|
-
widgetType: entity-header
|
|
990
|
-
pos: { x: 0, y: 0, w: 12, h: 2 }
|
|
991
|
-
- id: pillar-eb-props
|
|
992
|
-
kind: widget
|
|
993
|
-
widgetType: entity-properties
|
|
994
|
-
pos: { x: 0, y: 2, w: 4, h: 8 }
|
|
995
|
-
- id: pillar-eb-posts
|
|
996
|
-
kind: widget
|
|
997
|
-
widgetType: entity-list
|
|
998
|
-
pos: { x: 4, y: 2, w: 8, h: 8 }
|
|
999
|
-
config: { profileSlug: post, title: Posts in Pillar, limit: 10, variant: compact }
|
|
1000
|
-
|
|
1001
|
-
# Capability templates to install on provisioning
|
|
1002
|
-
integrations:
|
|
1003
|
-
- templateKey: nango-google
|
|
1004
|
-
|
|
1005
|
-
# Session-template playbooks (none in source)
|
|
1006
|
-
playbooks: []
|
|
1007
|
-
|
|
1008
|
-
# Per-workspace adaptive onboarding context — the "seasoned content strategist" framing
|
|
1009
|
-
onboarding:
|
|
1010
|
-
goal: "Capture the user's brand voice, audience, content pillars, and publishing rhythm across channels — so the workspace reflects how they actually create and distribute content, not a generic calendar."
|
|
1011
|
-
framing: "Act as a seasoned content strategist. Tease out their voice and positioning, who they're talking to, the recurring themes they own, the channels they publish on, and how often. Translate that into pillars, platforms, and a seeded content calendar."
|
|
1012
|
-
expertise:
|
|
1013
|
-
starters:
|
|
1014
|
-
- >
|
|
1015
|
-
Most creators over-index on one format and burn out. Propose 3–4 pillars
|
|
1016
|
-
that mix TEACH (how it works), PROVE (customer/results), and PROVOKE
|
|
1017
|
-
(point of view) — then adapt the mix to their niche. Don't ask for pillars
|
|
1018
|
-
from a blank slate; offer a starting set and let them react.
|
|
1019
|
-
- >
|
|
1020
|
-
Better to own ONE channel consistently than be thin on four. If they list
|
|
1021
|
-
many platforms, propose a primary channel + a cadence they can actually
|
|
1022
|
-
sustain, and treat the rest as repurposing targets, not separate efforts.
|
|
1023
|
-
- >
|
|
1024
|
-
Every pillar should ladder to a business goal — awareness, trust, or
|
|
1025
|
-
conversion. If a pillar is just "stuff we post", propose the job it should
|
|
1026
|
-
do and tie it to a specific audience segment.
|
|
1027
|
-
blindSpots:
|
|
1028
|
-
- >
|
|
1029
|
-
Distribution is the silent killer — great content nobody sees. If they
|
|
1030
|
-
haven't said HOW each piece gets discovered (SEO, a platform's algorithm,
|
|
1031
|
-
an email list, founder-led amplification), raise it before moving on.
|
|
1032
|
-
- >
|
|
1033
|
-
No repurposing plan = 5× the work for 1× the reach. If they treat each
|
|
1034
|
-
post as one-and-done, propose a chain: one deep piece → clips → posts →
|
|
1035
|
-
newsletter.
|
|
1036
|
-
- >
|
|
1037
|
-
Pillars with no audience attached reach no one. Tie each pillar to a
|
|
1038
|
-
specific segment — "content for everyone" is content for nobody.
|
|
1039
|
-
bar: >
|
|
1040
|
-
The pillars + primary platform + cadence read like a system a small team
|
|
1041
|
-
could actually run for 3 months without burning out — where every pillar has
|
|
1042
|
-
a clear audience, a clear job, and a way to get discovered.
|
|
1043
|
-
collect:
|
|
1044
|
-
- profileSlug: pillar
|
|
1045
|
-
what: "Their recurring content themes / brand voice — the lenses their audience knows them for, and who each speaks to"
|
|
1046
|
-
cardinality: few
|
|
1047
|
-
keyFields: [title, pillar-audience, pillar-goal, posting-frequency]
|
|
1048
|
-
- profileSlug: platform
|
|
1049
|
-
what: "The channels they publish on and the rhythm of each"
|
|
1050
|
-
cardinality: several
|
|
1051
|
-
keyFields: [title, platform-type, platform-posting-freq, follower-count]
|
|
1052
|
-
- profileSlug: post
|
|
1053
|
-
what: "A few real or upcoming pieces to seed the content calendar"
|
|
1054
|
-
cardinality: few
|
|
1055
|
-
keyFields: [title, post-platform, post-pillar, publish-date]
|
|
1056
|
-
- profileSlug: campaign
|
|
1057
|
-
what: "Any active initiative or launch the content ladders up to"
|
|
1058
|
-
cardinality: one
|
|
1059
|
-
keyFields: [title, campaign-type, campaign-kpi]
|
|
1060
|
-
openingQuestions:
|
|
1061
|
-
- "How would you describe your voice, and who are you really creating for?"
|
|
1062
|
-
- "What are the 3-4 themes you keep coming back to — the things your audience knows you for?"
|
|
1063
|
-
- "Which channels do you publish on, and how often on each?"
|
|
1064
|
-
doneWhen: "Their pillars and primary platforms exist with a realistic cadence, and a handful of posts sit on the content calendar."
|