Skip to content
Back to skills

Blog Pipeline

ASecurity

Scan ~/Documents/personal-wiki (Logseq pages and journals) for blog post candidates, manage a content pipeline backlog, and move ideas through stages from candidate to published post on the personal-website Hugo blog.

  • 8 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 20, 2026
developmentgo

Security analysis

A100/100

Scanned September 20, 2026

npx -y skills add tstapler/dotfiles --skill blog-pipeline --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Blog Pipeline?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Blog Pipeline
[![Security: A β€” Skills Directory](https://www.skillsdirectory.com/api/skills/tstapler-blog-pipeline/badge)](https://www.skillsdirectory.com/skills/tstapler-blog-pipeline)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: blog-pipeline
description: Scan ~/Documents/personal-wiki (Logseq pages and journals) for blog post candidates, manage a content pipeline backlog, and move ideas through stages from candidate to published post on the personal-website Hugo blog.
---

# Blog Pipeline

Scan the personal Logseq wiki for content worth turning into blog posts, track ideas through a pipeline, and coordinate with the personal-website Hugo blog.

---

## When to Use

- User asks to "find blog post ideas" or "scan the wiki for posts"
- User wants to review what's in the blog post backlog
- User wants to move a post idea forward (outline β†’ draft β†’ publish)
- User asks what blog posts are in progress

---

## Pipeline Stages

| Stage | Emoji | Meaning |
|---|---|---|
| Candidate | πŸ’‘ | Identified from wiki scan, not yet committed |
| Outlined | πŸ“‹ | Has a plan.md in project_plans/blog-pipeline/<slug>/ |
| Drafting | ✍️ | Draft exists in personal-website content/blog/ (draft=true) |
| Review | πŸ‘€ | Draft complete, needs polish/proofread |
| Published | βœ… | Live on site (draft=false, pushed to master) |

---

## Tracking Location

All pipeline state lives in the **personal-website repo**:

```
/home/tstapler/Programming/personal-website/project_plans/blog-pipeline/
β”œβ”€β”€ candidates.md          ← master backlog (all stages)
└── <post-slug>/
    β”œβ”€β”€ plan.md            ← created when post moves to Outlined
    └── validation.md      ← optional: outline review notes
```

Always read `candidates.md` first before any pipeline operation.

---

## Workflow: Scan Wiki for Candidates

Run when the user asks to find new blog post ideas.

### Step 1 β€” Scan for candidates

Search these locations in `~/Documents/personal-wiki/logseq/`:

**Pages** (`pages/*.md`): Look for files with:
- Multiple headers (structured content, not a stub)
- A complete arc: problem or context β†’ analysis or exploration β†’ insight or resolution
- Personal experience or opinion, not just link dumps
- Minimum ~300 words of original prose
- Technical depth relevant to: homelab, software development, AI tools, networking, infrastructure, personal productivity

**Journals** (`journals/*.md`): Look for entries with:
- A narrative that resolves (not just daily notes)
- A lesson learned or something that surprised the user
- Content that would read as a story, not a log

### Step 2 β€” Score each candidate

For each candidate, quickly assess:

```
TITLE: <page title or journal entry subject>
SOURCE: pages/<filename>.md OR journals/<date>.md
HOOK: one sentence β€” what's the interesting angle?
EFFORT: Low / Medium / High (how much writing work to turn this into a post?)
OVERLAP: Does a similar post already exist in content/blog/?
```

Disqualify if:
- It's a stub (< 200 words, no structure)
- It's a meeting/Slack export with no synthesis
- The personal-website blog already has a similar post

### Step 3 β€” Append to candidates.md

For each qualified candidate not already in the backlog, append an entry:

```markdown
## <Post Title>

**Stage**: πŸ’‘ Candidate
**Source**: ~/Documents/personal-wiki/logseq/pages/<filename>.md
**Hook**: <one sentence pitch>
**Effort**: Low / Medium / High
**Added**: YYYY-MM-DD
```

Report a summary to the user: N new candidates found, M already existed.

---

## Workflow: Advance a Post

When the user picks a post to work on:

### πŸ’‘ β†’ πŸ“‹ Outlined

1. Run `/plan:mdd-start` with the post idea to generate `requirements.md`
2. Create `project_plans/blog-pipeline/<slug>/plan.md` with:
   - Target audience
   - Post structure (H2 sections with one-line descriptions)
   - Key points to hit
   - Tone notes (match existing blog voice: casual, first-person, story-driven)
3. Update `candidates.md` stage to `πŸ“‹ Outlined`

### πŸ“‹ β†’ ✍️ Drafting

1. Create `content/blog/<slug>/index.md` with Hugo frontmatter (`draft = true`)
2. Write post following the plan
3. Update `candidates.md` stage to `✍️ Drafting`

### ✍️ β†’ πŸ‘€ Review

1. Check post against blog style (see Writing Standards below)
2. Verify all links resolve (`{{< ref >}}` targets exist)
3. Update `candidates.md` stage to `πŸ‘€ Review`

### πŸ‘€ β†’ βœ… Published

1. Set `draft = false` in frontmatter
2. Commit and push to master
3. Update `candidates.md` stage to `βœ… Published` with publish date

---

## Workflow: Review Backlog

When the user asks "what's in the pipeline":

1. Read `candidates.md`
2. Group by stage and report a table
3. Flag any post that's been in the same stage for > 30 days (calculate from Added date)

---

## Writing Standards (Personal Blog Voice)

Match the tone of existing posts in `content/blog/`:

- **First person**, casual register β€” "I found", "I noticed", not passive voice
- **Start with a concrete problem** β€” not definitions, not background
- **Tell what happened** β€” narrative over exposition
- **Short sections** β€” H2s every 200-300 words
- **Show the thing** β€” tables, command output, screenshots referenced where useful
- **Honest about tradeoffs** β€” don't oversell the solution
- **End with a takeaway** β€” one or two sentences, not a bulleted summary

---

## Hugo Frontmatter Template

```toml
+++
title = ""
description = ""  # under 160 chars, SEO-focused
summary = ""      # 2-3 sentence teaser for post listings
categories = [""]
tags = [""]
date = "YYYY-MM-DD"
draft = true
+++
```

---

## Files to Check

| Purpose | Path |
|---|---|
| Pipeline backlog | `/home/tstapler/Programming/personal-website/project_plans/blog-pipeline/candidates.md` |
| Wiki pages | `~/Documents/personal-wiki/logseq/pages/` |
| Wiki journals | `~/Documents/personal-wiki/logseq/journals/` |
| Published posts | `/home/tstapler/Programming/personal-website/content/blog/` |

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…