Idea Page Creation Skill

Convert a MongoDB fastlane.previews record into a production-ready Jekyll HTML content idea page for pullcontent.com.

Workflow Overview

  1. Query — fetch the record from MongoDB
  2. Inspect — understand the record’s structure and content
  3. Transform — build the Jekyll front matter with high-quality FAQ and content ideas
  4. Write — save to content-ideas/{tag1-slug}/{tag2-slug}.html
  5. Validate — confirm YAML parses cleanly

Step 1: Query MongoDB

Use mcp__mongodb-mcp__find on fastlane.previews:

database: fastlane
collection: previews
filter: { "_id": "<source_url>" }   # or use another field to locate the record
limit: 1

The record’s _id field is the source URL (e.g. a YouTube URL). If the user gives you a topic rather than a URL, query by tag or title, or ask for the URL.

MongoDB Record Structure

_id              : source URL (string) — also used as source_url in front matter
image            : thumbnail URL
content          : long-form description (may contain markdown)
updated_at       : ISO date
summary:
  title          : page title
  tags           : [tag1, tag2]  — two-element array
  read_time      : "X min Ys"
  summary:
    audience     : target audience
    summary      : short paragraph summary
    key_insights : array of insight strings
    ideas        : array of "Platform: description" strings (raw, lower quality)

The summary.summary.ideas field contains raw idea seeds — do not copy them verbatim. They are starting points only. Your job is to write significantly better content ideas following the quality standards in this skill.


Step 2: Build the Front Matter

The output file is plain HTML with YAML front matter (Jekyll). See references/front-matter-template.md for the complete field list and an example.

Key derived values:

Front matter field Source
layout Always preview
title summary.title
description content field, strip markdown, truncate to ~500 chars
permalink /content-ideas/{tag1-slug}/{tag2-slug}/
tag1 / tag2 summary.tags[0] / summary.tags[1]
audience summary.summary.audience
read_time summary.read_time
source_url _id
source_label "{domain} — {title[:50]}"
image / og_image image field, or YouTube thumbnail if YouTube URL
youtube_id / video_id Extract from YouTube URL if applicable
video_platform youtube, ted, tiktok, or omit
summary summary.summary.summary (short paragraph)
key_insights summary.summary.key_insights array
faq Build from scratch — see FAQ standards below
content_ideas Write from scratch — see content idea standards below
progressive_disclosure Set to true when all ideas have full_post

YAML Escaping Rules

The description and other text fields often contain single quotes. Use YAML block scalars (| or >) for multiline text, or use double-quoted strings. If you use single-quoted YAML strings, every literal ' inside the string must be doubled to ''.


Step 3: Write High-Quality FAQ

The FAQ drives Google’s FAQ rich results. Every question must be something a real person would type into Google — never extract H2 section headings.

Read references/faq-standards.md for the full quality guide, intent angles table, and examples of wrong vs. right questions.

Quick checklist:


Step 4: Write High-Quality Content Ideas

Write 6 content ideas — one per platform: Twitter/X, LinkedIn, Instagram, YouTube Shorts, TikTok, Newsletter (or Blog Post if the source doesn’t suit video-first platforms).

Read references/content-ideas-standards.md for the full guide including platform-specific format requirements.

Quick checklist for each idea:

Set progressive_disclosure: true in the front matter when all 6 ideas have a full_post field.


Step 5: Write and Validate

  1. Check if the file already exists: content-ideas/{tag1-slug}/{tag2-slug}.html — if so, confirm with the user before overwriting.
  2. Ensure the category directory exists: content-ideas/{tag1-slug}/
  3. Write the file using the Write tool.
  4. Validate the YAML with a quick Python check:
python3 -c "
import yaml, re
with open('content-ideas/{tag1-slug}/{tag2-slug}.html') as f:
    content = f.read()
m = re.search(r'^\-\-\-\s*$', content[3:], re.MULTILINE)
fm = content[3:3+m.start()]
yaml.safe_load(fm)
print('YAML OK')
"

If validation fails, inspect the error location and fix the escaping issue — most commonly an unescaped ' inside a single-quoted string.


Reference Files