Skip to content

URL: https://mkdocs.justinsforge.com/memory/plans/creatortrack-ideas-and-planner-apps-ideation-2026-07-09/

CreatorTrack: Content Ideas + Content Planner apps (ideation, not yet built)

Two paired apps. Content Ideas is a low-friction brain-dump vault that graduates sparks into concrete, ready-to-produce video ideas. Content Planner is a weekly picker where you drag Ready ideas onto days; each drop schedules the content and spawns the right Task/Project, and the app doubles as a full production tracker. Named "Content Ideas" / "Content Planner" to sit clearly apart from the generic apps. Ideation session 2026-07-09; decisions locked via AskUserQuestion + follow-up. Build gate: run /feature-plan before writing code.

Locked decisions (2026-07-09)

  1. Names: Content Ideas and Content Planner (not generic "Ideas"/"Planner").
  2. Drop action = format-aware. Long-form → Project + a "Video Production" task pack; short-form → single Task. Both link back to the source idea + drop a Calendar event.
  3. Production tracker = full pipeline board inside Content Planner (Idea → Script → Film → Edit → Thumbnail → Schedule → Published).
  4. Layout = idea rail below the week grid. Week strip on top, scrollable idea shelf underneath, drag up into a day.
  5. Two separate installable apps, each its own node type. Content Ideas is useful standalone; Content Planner embeds the Ready backlog via app_segment.
  6. The week grid holds TASKS with dates, not whole ideas. A long-form's production tasks land on different days (Script Mon, Film Wed, Edit Fri) and are individually draggable; the idea/Project is the parent. Short-form = the one-task, one-day degenerate case. This is what makes "one idea spans multiple days" work.
  7. No native task-in-task subtasks exist — CreatorTrack Tasks group under a Project (projectId/projectRel), and project templates + task packs already exist (migration 20260707T032146). Long-form production steps = a reusable task pack applied to the new Project. That IS the subtask experience.
  8. Capture bot → Content Ideas is IN for v1. Add an "idea" intent to the capture bot that drops a Spark.
  9. Cadence goal is optional. You set a weekly target (e.g. "2 long + 5 short/week", optionally per brand). Auto-fill drafts to hit it; gap check flags shortfalls. No target set → auto-fill just balances formats evenly, gap check off.

Why this is mostly assembly, not net-new

Reuse What it provides Source
WeekStrip.tsx The Food-Log Sun→Sat strip: paging, "Week of X", weekAnchor separate from selected day. Presentational; inject per-day data (e.g. count of scheduled tasks as the "ring"). [[reference_creatortrack_week_strip]]
app_segments (/app) Embed a live app piece inside another. The Content Planner's idea rail = a Content-Ideas segment. Registry: one defs entry + one dynamic entry + the segment component. [[creatortrack-app-segments]]
Calendar app Node type calendar, CalendarWeekSegment embeddable, Google two-way sync. Scheduled tasks/events surface here. [[reference_creatortrack_calendar]]
Tasks + Projects + task packs projectId/projectRel grouping, Composer, quadrant drag, /api/tasks, project templates + task packs (20260707T032146). Drop target writes here. app_segments doc; migration
Chat agents + tool surface Claude Haiku/Sonnet on the claude2 sub, already list/create project, create task, search/read/create page. AI idea work runs here + new idea tools. [[reference_creatortrack_chat_agents]]
gtasks/calendar task sync timed task → gcal event, date-only → Google Tasks. Scheduled production tasks ride this existing path. [[reference_creatortrack_gtasks_calendar_sync]]

App 1 — Content Ideas

New node type content-ideas. Core entity idea, one workspace-scoped table. Two tiers (junk-drawer + serious pipeline) unified by status:

  • Spark — raw one-line brain dump, zero friction. "Whatever comes to mind."
  • Developing — has hook / notes / thumbnail concept.
  • Ready — concrete, intend-to-make. The pool the Content Planner pulls from.
  • Scheduled → In production → Published → Parked — downstream (Scheduled+ driven by the Planner, not set by hand).

idea fields

id, workspace_id, title, notes (rich/blocks), format (short-form | long-form | thumbnail | series | hook | b-roll — extensible), brand/channel, hook (one-liner), refs (links), attachments (images; thumbnail mockups first-class), priority/score, effort, status, source (manual | ai | fused-from:[ids] | capture-bot), linked_project_id / linked_task_ids / linked_event_ids (set on schedule), created_at, updated_at.

Views (single app, view switcher)

  1. Quick-capture bar — always-on top input; Enter = new Spark. Capture Telegram bot drops here too (v1).
  2. Board / Kanban — columns by status or by format (toggle).
  3. Gallery grid — thumbnail-forward, for brainstorming thumbnails/titles visually.
  4. Filtered lists — "all short-form Ready," etc.

Thumbnails as first-class

An idea can be a thumbnail concept (image + candidate titles) or carry thumbnail mockups as attachments. Asset-grabber can feed reference images.

Embeddable segments (for the Planner and any page)

  • content-ideas/board/backlog — the Ready-tier rail with drag handles (what the Planner mounts).
  • content-ideas/capture/quick — just the capture bar, droppable anywhere.

App 2 — Content Planner

New node type content-planner. Composition, top to bottom:

  1. WeekStrip (reused as-is), paging weeks like the Food Log. Per-day injected data = count of scheduled production tasks that day.
  2. 7-day week grid — each day a drop zone; shows that day's scheduled tasks (not whole ideas).
  3. Idea rail (below)content-ideas/board/backlog app_segment: Ready ideas, searchable/filterable, drag handles.

Drop semantics (format-aware; grid = tasks, not ideas)

Drag a Ready idea → drop on a day: - short-form → one Task dated to that day + Calendar event. Idea → Scheduled. - long-form → create a Project, apply the Video Production task pack (Script, Film, Edit, Thumbnail, Schedule). The dropped day seeds a default schedule for those tasks; each production task is then individually draggable to its own day, so a single video spans the week. Idea → Scheduled, linked_project_id set. - The idea stays in the rail with a "Scheduled" badge (not consumed), so committed-vs-pool is always visible. - Timed tasks ride the existing gtasks/calendar sync → gcal events.

Production tracker view (full pipeline)

The scheduled work as a kanban: Idea → Script → Film → Edit → Thumbnail → Schedule → Published. For a long-form, the columns mirror the Project's task states; moving a card advances the underlying task. Planner = "lay out my week fast" AND "where does everything stand."

Content calendar

Scheduled tasks already flow into the Calendar app as events (reuse), so the "content calendar" is the existing Calendar filtered to the content source, not a third surface.

Cadence goal (optional)

Per-workspace (optionally per-brand) weekly target, e.g. { long: 2, short: 5 }. Drives Auto-fill (draft a week to hit target) and Gap check (flag shortfalls). Unset → auto-fill balances formats evenly, gap check off. Nudge, never a gate.


AI layer

Runs on the existing chat tool surface plus new idea-scoped tools: list_ideas, create_idea, update_idea, fuse_ideas, schedule_idea.

  • Fuse — select 2+ ideas → merge into one concrete idea, tagged fused-from.
  • Expand a spark — one line → hook + 3 title options + outline + thumbnail concept.
  • Generate more — reads the pool + YT channel identity ([[reference_youtube_channel_identity]]) + recent published content → proposes ideas in the lanes you're thin on.
  • Auto-fill my week — visible week + Ready pool + cadence goal → balanced Sun→Sat draft, accept/reject per slot.
  • Repurpose — one long-form → 3 short-form child ideas (linked to parent).
  • Gap check — "this week is 6 shorts, 0 long-form vs. your 2-long target."

Data model sketch (Postgres, workspace-scoped RLS like existing apps)

  • app.ideas — fields above. RLS by workspace.
  • Scheduling lives on Tasks/Projects, not a new table. A dropped idea's schedule = real Tasks (with dates + projectId) linked back via idea.linked_*. The week grid queries /api/tasks filtered to content tasks; no separate content_items table needed for v1. (Revisit only if an idea ever needs multiple independent schedule instances beyond its production tasks.)
  • Cadence goal: a small pref under core.users.prefs or a content_cadence row per workspace.
  • Migrations follow the app_segments/calendar precedent; prod deploy does NOT run migrations ([[reference_creatortrack_gtasks_calendar_sync]]) — apply to prod DB lifeos manually.

Phasing

  • v1 — Content Ideas (capture bar + capture-bot ingest + board + Ready tier); Content Planner (WeekStrip + week grid of tasks + idea rail + format-aware drop → Task/Project-with-pack + calendar event); optional cadence goal.
  • v2 — Full production-tracker kanban polish, AI fuse/expand/generate, auto-fill-my-week, repurpose, gap check, thumbnail gallery + asset-grabber feed.

Remaining open questions

  • Does the long-form task pack need per-brand variants (e.g. VR vs. fishing have different steps)?
  • Where exactly does the cadence goal live — user pref vs. per-workspace row — and is it per-brand?
  • Capture-bot "idea" intent: separate command, or does it infer idea-vs-task from phrasing?

[Claude Code]