alunduil / alunduil/blog.alunduil.com
LinkedIn syndication (deferred until 3+ candidate posts queued)
- 主要語言
- 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 還沒有評估資料。