alunduil / alunduil/blog.alunduil.com

LinkedIn syndication (deferred until 3+ candidate posts queued)

未關閉
#80 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
enhancement
主要語言
Astro
星號
1
分支
1
平均合併
6 小時 34 分鐘
30 天內合併 PR
118

描述

Defer setting up LinkedIn syndication until there are 3+ blog posts that pass the LinkedIn-fit criteria, so that flipping the switch doesn't expose a sparse or dead feed to first-time visitors.

## Unblock when

- 3+ published posts pass the fit heuristic (below), counted via the `linkedin` schema field.

The mechanism question is resolved: LinkedIn rides the same dlvr.it pipeline as the other automated surfaces (ADR 0001). No self-hosted poster, Meta app, or LinkedIn API review is needed — dlvr.it already holds the gated integration. LinkedIn is the fourth dlvr.it profile, so turning it on moves the account from the free tier (three profiles) to the paid tier.

## LinkedIn-fit heuristic

A post belongs on LinkedIn if a peer in the author's specialty would forward it to a colleague at another company.

**In scope:**

- Engineering lessons learned, postmortems
- Tooling deep-dives or comparisons
- Methodology — CI/CD promotion patterns, incident management practices, observability strategy, release engineering practices, SLO / error-budget practice, postmortem culture
- "How I think about X" framings tied to professional domain
- Industry/role observations from developer experience, production reliability, delivery, incident management, observability, platform engineering, DORA metrics

**Out of scope:**

- Personal essays
- Hobbies or niche tech enthusiasms unrelated to work
- First-person-diary register
- Topics flagged as "exploring but haven't done" (currently: supply-chain security, FinOps, chaos engineering) — only post once there's real practice behind them

## Marking candidates during the wait

Mark a fit-passing post with a boolean frontmatter field, `linkedin: true`, added to the schema in `src/content.config.ts`. Not a tag: tags describe what a post is *about*, and LinkedIn-fitness is a syndication-routing signal, so it belongs in schema, not the tag vocabulary.

The field does double duty:

- **Countability** — `grep -rl 'linkedin: true' src/data/blog` answers "are we at 3 yet?" without judgement calls at threshold time.
- **Feed filtering** — the same field drives the dlvr.it route (below), so marking a post once both counts it and, later, syndicates it.

## Filtering for dlvr.it when we get there

dlvr.it routes one feed to one-or-more connected profiles. The other automated surfaces (Bluesky, Threads, Facebook) take every post, so they stay on the existing `rss.xml`. LinkedIn takes only the fit-passing subset, so it needs its own feed rather than dlvr.it's opaque keyword filters — keeping the routing logic in the repo as IaC, reversible, and reviewable in a diff.

Plan at unblock time:

- Add a second feed, `src/pages/linkedin.xml.ts`, mirroring `rss.xml.ts` but filtering items to `data.linkedin === true`. Same date-gating and `_` exclusion apply for free (both come from the shared collection + sort).
- Point LinkedIn's dlvr.it route at `https://blog.alunduil.com/linkedin.xml`; leave Bluesky/Threads/Facebook on `rss.xml`.
- A fit post then appears everywhere (it's in both feeds); a non-fit post appears everywhere except LinkedIn. No double-posting, since LinkedIn reads only the filtered feed.

## Context

Part of a tiered social syndication strategy:

- Tier 1 (auto, via dlvr.it): Bluesky, Threads, Facebook.
- Tier 2 (hand-crafted): Instagram.
- Deferred (this issue): LinkedIn — high-value for engineering content, deferred only because launching a dead or sparse feed costs more than waiting.
- Deferred: newsletter (until cadence proven).

Mechanism for every automated surface is dlvr.it (ADR 0001).

貢獻指南

這個儲存庫沒有索引到貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。