- 数据集
【免费下载链接】remote-jobs
Source for remoteintech.company — a community-maintained directory of remote-friendly tech companies
导读
本文以开源仓库 remote-jobs 中src/companies/spotify.md这一份真实的公司档案为解剖样本,完整讲解 Remote In Tech(remoteintech.company)这一社区维护的远程友好科技公司目录中,单条公司档案的 frontmatter 元数据设计、七大正文章节规范、Eleventy 渲染链路、目录聚合检索机制与社区校验流程。读完本文,你将掌握该仓库"一份 Markdown 公司档案如何被解析、校验、渲染并纳入按地区/技术/远程政策分类的目录"的完整技术方案,并能参照同一模板为任意远程友好公司撰写合规档案。
一、spotify.md 在目录体系中的定位
remote-jobs 是站点remoteintech.company的源码仓库,其核心内容全部存放在src/companies/目录下,每个公司对应一个{slug}.md文件。Spotify 档案 src/companies/spotify.md 便是其中之一,slug 为spotify,于 2022-05-10 加入目录(addedAt与updatedAt均为 2022-05-10)。
从仓库结构看,公司档案遵循"frontmatter 元数据 + Markdown 正文"的双层结构:frontmatter 承载结构化字段(地区、远程政策、规模、技术栈等),供站点做分类、聚合与 SEO;正文承载人类可读的介绍性内容。这种设计使约 800 余家公司条目(仓库实际规模以src/companies/下文件数为准)可以被程序化地校验、索引和渲染。
二、Frontmatter 元数据字段逐项解读
spotify.md的 frontmatter 是理解整套字段规范的最佳实例:
--- title: "Spotify" slug: spotify website: https://www.spotify.com/ careers_url: https://www.lifeatspotify.com/jobs region: worldwide remote_policy: remote-friendly company_size: enterprise technologies: - cloud - nosql - scala addedAt: 2022-05-10 updatedAt: 2022-05-10 ---各字段的含义、取值约束与渲染用途如下表:
| 字段 | spotify.md 取值 | 合法取值(依据 CONTRIBUTING.md) | 在站点中的用途 |
|---|---|---|---|
title | Spotify | 任意字符串 | 页面 H1 标题(company.njk) |
slug | spotify | 须与文件名{slug}.md一致 | 决定 URL 路径与集合匹配(collections.js) |
website | 公司官网 | 公司官网地址 | 无careers_url时作为 Apply 按钮的跳转目标 |
careers_url | 招聘页 | 必须是公司自己的招聘页 | 渲染为 "Apply Now" 主按钮(company.njk) |
region | worldwide | worldwide/americas/europe/americas-europe/asia-pacific/other | 生成地区标签并链接到/browse/{region}/ |
remote_policy | remote-friendly | fully-remote/remote-first/hybrid/remote-friendly | 生成远程政策标签(company.njk) |
company_size | enterprise | tiny(1-10) /small(11-50) /medium(51-200) /large(201-1000) /enterprise(1000+) | 分类展示公司规模 |
technologies | cloud, nosql, scala | 仓库枚举的 24 种技术(见 CONTRIBUTING.md 表格) | 生成 Tech Stack 标签并聚合到技术浏览页 |
addedAt/updatedAt | 2022-05-10 | 由维护者管理,贡献者 PR 中不要填写 | 驱动"最近收录"集合与"Last updated"页脚 |
值得注意的细节是,Spotify 的technologies中cloud、nosql、scala三个值均须命中 labels.js 中tech白名单,否则展示时不会得到规范化标签。同理,region: worldwide与remote_policy: remote-friendly分别对应 labels.js 中的region.worldwide("Worldwide")与remotePolicy["remote-friendly"]("Remote Friendly")。这些标签映射是唯一的权威来源,既被 JS 侧(companyHelpers.js重新导出)使用,也被 Nunjucks 模板通过全局数据级联以labels.*访问。
三、Markdown 正文的七大标准章节
spotify.md正文包含七个##章节,与 CONTRIBUTING.md 中"必填## Company blurb、## Remote status、## How to apply,常用## Company size、## Region、## Company technologies"的规范一一对应。逐节解读:
1. Company blurb(公司简介)
原文引述了 Spotify 官方介绍:2008 年上线,提供超过 8200 万条音轨与 400 万以上的播客节目,支持免费收听或升级 Spotify Premium 以获取更佳音质、按需点播、离线与无广告体验;截至引用时点为全球最流行的音频流媒体订阅服务,拥有 4.22 亿用户(含 1.82 亿订阅用户),覆盖 183 个市场。这一节不仅承担介绍职能,还是 SEO meta description 的自动数据源——见下文渲染链路。
2. Company size(公司规模)
档案记录 8230 人(2022 年 3 月数据),与 frontmatter 中company_size: enterprise(1000+ 员工)相互印证。
3. Remote status(远程工作状态)
原文引用官方政策:为员工提供选择工作地点的自由,大多数岗位可在居家或办公室之间选择,甚至可以在与团队不同的城市/国家远程办公,前提是处于同一地区且对岗位合理。这一节对应remote_policy: remote-friendly——"远程友好"意味着公司允许但不强制全员远程,与fully-remote(全员远程)有本质区别,也正是目录标签体系要区分的语义。
4. Region(招聘地区)
取值Worldwide,对应 frontmatter 的region: worldwide。目录中该值决定公司会被归入/browse/worldwide/地区浏览页(collections.js 的getCompaniesByRegion依据company.data.region分组)。
5. Company technologies(公司技术栈)
列出 Scala、Cassandra、GCP。正文中的技术列表与 frontmatter 的technologies字段语义一致——frontmatter 中的cloud、nosql、scala会渲染为可点击的技术标签(company.njk),点击后进入按技术聚合的浏览页(collections.js 的getCompaniesByTech)。
6. Office locations(办公地点)
列出斯德哥尔摩、纽约、伦敦、阿姆斯特丹、米兰等主要办公室。它进一步印证了"远程友好而非纯远程"的定位:公司有实体办公室,但允许弹性工作地点。
7. How to apply(如何申请)
指向公司招聘官网(lifeatspotify.com/jobs)。这对应 frontmatter 的careers_url,也正是 CONTRIBUTING.md 强调的"必须指向公司自己的招聘页"要求——避免用招聘页挂靠售卖服务。
四、从 Markdown 到网页:Eleventy 渲染链路
一份.md档案被渲染为完整网页,经历了以下可验证的链路(均在eleventy.config.js中注册):
- 集合发现:collections.js 通过
getFilteredByGlob('./src/companies/**/*.md')收集全部公司档案并缓存,getAllCompanies按title字母序排序后注册为companies集合(eleventy.config.js)。 - 布局绑定:companies.json 统一声明
"layout": "company",因此所有公司档案自动套用 company.njk 模板。 - 结构化数据:布局顶部使用
schema: Organization,由 Organization.njk 生成 JSON-LD,将title映射为Organization.name、website映射为url、careers_url映射为sameAs,供搜索引擎理解实体信息。 - 标签与按钮渲染:company.njk 优先使用
careers_url渲染 "Apply Now" 主按钮,否则退回website;region与remote_policy分别渲染为可点击的分类标签。 - meta description 自动生成:companies.11tydata.js 通过
eleventyComputed.description从正文抓取## Company blurb段落,剥离 Markdown 标记、压缩空白,并截断到约 155 字符(优先在句号边界截断),自动为每家公司生成 SEO meta 描述——这正是为什么 "Company blurb" 是必填章节。 - 页脚时间戳:
updatedAt经formatDate过滤器格式化为 "Last updated" 日期(company.njk)。
从源码结构看,该渲染体系的价值在于:贡献者只需按模板写 Markdown,标签、meta 描述、JSON-LD、分类聚合全部由构建系统自动完成,从而保证 800 余条档案的呈现一致性。
五、目录聚合与检索机制
Spotify 档案中的每个结构化字段,最终都会进入站点的多维浏览体系。基于 collections.js 的注册逻辑:
- 地区维度:
getCompaniesByRegion初始化regionLabels中的全部地区分组,再将每家公司按company.data.region归入对应组;Spotify 因region: worldwide进入 Worldwide 组。 - 技术维度:
getCompaniesByTech遍历每家公司的technologies数组,将公司加入每个技术标签的列表;Spotify 同时出现在 Cloud、NoSQL、Scala 三个技术组中。 - 时间维度:
getRecentCompanies按addedAt倒序取前 12 家,addedAt字段因此驱动"最新收录"区块。 - 标签元数据:
getCompanyTags从所有档案动态聚合出technology、region、remote-policy三类标签,附带每类标签下的公司数量与列表,供浏览页展示。
也就是说,spotify.md里一行region: worldwide或一个technologies列表项,都会在构建时被展开为多处导航入口,这正是该目录"一次录入、多维检索"的设计体现。
六、社区维护与校验机制
Spotify 档案本身也是社区协作流程的产物。依据 CONTRIBUTING.md:
- 提交模板:新建
src/companies/{slug}.md并填写 frontmatter(与 spotify.md 结构完全一致),运行npm run build验证后提交 PR;addedAt/updatedAt由维护者管理,贡献者不应填写。 - 自动校验:触碰公司文件的 PR 会触发 "Validate Company Profiles" GitHub Action,机器人自动检查字段合法性并阻塞合入直到问题解决。
- 收录标准:公司须直接雇佣员工(非招聘中介/自由职业平台)、提供真实的远程岗位(薪资制,佣金制销售不在列)、属于科技行业,且
careers_url指向自有招聘页——这些标准从根上保证了像 Spotify 这样的大厂条目与小型远程团队条目共享同一质量底线。 - 拒绝情形:内容过少、重复收录、业务性质不再符合标准(此时会移除档案而非改写)都会被拒绝。
七、结论与延伸
src/companies/spotify.md虽只是一份 54 行的 Markdown,但它完整承载了 Remote In Tech 目录的全部设计要点:结构化 frontmatter 驱动分类与 SEO、七大正文章节保证信息完整性、Eleventy 构建链路将元数据自动转译为标签/按钮/JSON-LD/meta 描述、集合机制实现地区与技术维度的自动聚合。任何希望向该目录提交新公司的开发者,都可以以 CONTRIBUTING.md 的模板为骨架、以 spotify.md 为范例完成档案撰写;任何希望改造目录形态的开发者,则应从 companies.11tydata.js、company.njk 与 collections.js 三处入手。
- 数据集
【免费下载链接】remote-jobs
Source for remoteintech.company — a community-maintained directory of remote-friendly tech companies
相关推荐
Remote In Tech 公司档案深度解析:以 Articulate 为例看远程友好公司目录条目结构
Remote In Tech 公司档案深度解析:以 Articulate 为例看远程友好公司目录条目结构 Articulate 是 remoteintech.c
数据集Remote In Tech 公司档案深度解析:以 Chef 为例读懂远程友好公司数据结构与渲染流程
Remote In Tech 公司档案深度解析:以 Chef 为例读懂远程友好公司数据结构与渲染流程 导读 src/companies/chef.md 是 Re
数据集深度解析 Remote In Tech 公司档案:以 Chainlink Labs 为例读懂远程友好公司目录的数据结构
深度解析 Remote In Tech 公司档案:以 Chainlink Labs 为例读懂远程友好公司目录的数据结构 本篇文章以仓库中 Chainlink L
数据集
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考