fix(blog): hard story blacklist in STEP4 + LinkedIn — ban 2AM/dirty connector/lab-vs-prod stories
10 specific story patterns banned directly in draft prompt. LinkedIn banned hooks: 'Everything looks fine', 'CRC creeping', 'Same optics same setup'. Title Contract now injected into STEP4 as binding constraint.
This commit is contained in:
parent
80435f8e07
commit
c43e1f881a
@ -504,14 +504,41 @@ TECHNICAL ACCURACY (HARD FAILS):
|
||||
- SR4 and DR4 both use 8 fibers. Difference = fiber type (MMF vs SMF), not count.
|
||||
- 400G per port ≈ 10-15W. Not per chassis. Not "1kW per port."
|
||||
|
||||
═══════════════════════════════════════════════════════
|
||||
STORY BLACKLIST — HARD BAN (auto-reject if any appear)
|
||||
═══════════════════════════════════════════════════════
|
||||
|
||||
The following story patterns have been used too many times. They are BANNED:
|
||||
|
||||
1. "I remember working on a deployment/migration at 2AM..." → BANNED
|
||||
2. "Everything looked clean in the lab, but production..." → BANNED
|
||||
3. "CRC errors started creeping in after hours of operation" → BANNED
|
||||
4. "Optics get blamed first. Swapped. Replaced. Moved." → BANNED
|
||||
5. "Someone finally checked the physical layer / grabbed a scope" → BANNED
|
||||
6. "Same optics. Same setup. Different result." → BANNED (as climax)
|
||||
7. "It was a dirty connector" → BANNED (as story resolution)
|
||||
8. "400G doesn't fail in design. It fails when..." → BANNED (as ending)
|
||||
9. Late-night debugging stories of any kind → BANNED
|
||||
10. Any "lab vs production" arc as the main story → BANNED
|
||||
|
||||
INSTEAD — match your stories to the TITLE CONTRACT angle:
|
||||
- ECONOMIC article → use cost examples, TCO math, budget surprises, SLA penalty stories
|
||||
- DECISION article → use procurement scenarios, vendor negotiations, comparison frameworks
|
||||
- MARKET article → use pricing data, trend observations, timing decisions
|
||||
- OPERATIONAL article → use process improvements, validation playbooks, team workflows
|
||||
- MIGRATION article → use timeline realities, planning vs reality, month-by-month observations
|
||||
|
||||
{{TITLE_CONTRACT_INJECT}}
|
||||
|
||||
═══════════════════════════════════════════════════════
|
||||
CONTENT APPROACH:
|
||||
═══════════════════════════════════════════════════════
|
||||
- Include production failures as narrative ("links that don't behave consistently")
|
||||
- Match ALL content to the Title Contract promise — every paragraph must serve the headline
|
||||
- Include real costs as consequences in the flow ("that's where the real cost sits")
|
||||
- Include what not to do as a single direct statement, not a section
|
||||
- Every number gets context (deployment size, vendor type, conditions)
|
||||
- Max 3-4 core ideas — pick the best and develop them through experience
|
||||
- ONE story max per article — and it must be relevant to the ANGLE, not the physical layer default
|
||||
|
||||
MINIMUM 2500 words. No placeholders. No TODO markers. No sections. Complete prose article.
|
||||
|
||||
@ -2147,6 +2174,21 @@ export const STEP_LINKEDIN_POST = `Write a LinkedIn post for this article using
|
||||
GOAL: Posts that feel like real experience. Not content. Not marketing.
|
||||
════════════════════════════════════════════════════════
|
||||
|
||||
BANNED HOOKS (already used — do NOT repeat):
|
||||
- "Everything looks fine. Until it doesn't." → BANNED
|
||||
- "You bring up a new batch of 400G links..." → BANNED
|
||||
- "Lab tests were clean. Traffic is stable." → BANNED
|
||||
- Any variation of the Physical Layer debugging story → BANNED
|
||||
|
||||
BANNED BEATS:
|
||||
- "CRC errors start creeping in" → BANNED
|
||||
- "Optics get blamed. Swapped. Replaced." → BANNED
|
||||
- "Same optics. Same setup. Different result." → BANNED (as punchline)
|
||||
- "At 100G, you get away with it. At 400G, you don't." → BANNED (overused closer)
|
||||
|
||||
You MUST create a FRESH hook and story that matches THIS article's angle.
|
||||
Read the article and extract its UNIQUE angle — then write a post about THAT, not about physical layer debugging.
|
||||
|
||||
Engineers must recognize themselves in this post.
|
||||
Not be lectured. Not be sold to. Not be impressed by vocabulary.
|
||||
|
||||
|
||||
@ -1174,7 +1174,8 @@ async function runLlmPipeline(
|
||||
const step4 = await generate(systemPrompt,
|
||||
STEP4_MASTER_DRAFT
|
||||
.replace("{{OUTLINE}}", step3.text)
|
||||
.replace("{{CONTEXT_DATA}}", contextData + "\n\nTITLE CONTRACT (you MUST fulfill this — the article must match the headline promise):\n" + titleContract),
|
||||
.replace("{{TITLE_CONTRACT_INJECT}}", "TITLE CONTRACT FOR THIS ARTICLE (BINDING — every paragraph must serve this promise):\n" + titleContract)
|
||||
.replace("{{CONTEXT_DATA}}", contextData),
|
||||
{ ...LLM_OPTS, maxTokens: 8192 }
|
||||
);
|
||||
stepsCompleted = 4;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user