- 数据集
【免费下载链接】remote-jobs
Source for remoteintech.company — a community-maintained directory of remote-friendly tech companies
在开源仓库 remoteintech.company(社区维护的远程友好科技公司目录)中,每一家公司的条目都以 Markdown 文件形式存放在src/companies/目录下,通过 YAML frontmatter 定义结构化元数据、以固定小节的正文描述公司细节。本文以 I-Stem 档案 为完整样本,逐字段拆解这类公司档案的书写规范,并结合 标签定义、集合构建逻辑 与 渲染模板 的源码实现,说明一条目录记录从数据到页面的完整链路。读完本文,你将能够独立读懂任何一条公司档案、判断其远程政策与招聘区域,并掌握为目录新增或修订条目的规范流程。
I-Stem 档案概览:一条目录记录长什么样
I-Stem 是远程友好科技公司目录中的一员,其档案完整位于 src/companies/i-stem.md。它由两部分组成:
- frontmatter(YAML 元数据区):位于文件顶部
---分隔线之间,是机器可读的结构化字段; - 正文(Markdown 小节区):以
##标题组织的自然语言描述,用于向访客展示公司细节。
该档案对应的核心元数据如下:
--- title: "I-Stem" slug: i-stem website: https://www.istemai.com/ careers_url: https://wellfound.com/company/i-stem/jobs region: asia-pacific remote_policy: remote-friendly company_size: tiny technologies: - javascript - python addedAt: 2023-10-08 updatedAt: 2023-10-08 ---其中addedAt(入库日期)与updatedAt(最近更新日期)均为2023-10-08,即该条目自加入目录以来尚未被修订。
关键字段逐一解读:每个值背后的约束
frontmatter 中的字段并非随意填写,而是在仓库的标签体系(single source of truth)中预定义了合法取值。所有合法值集中维护于 src/_data/labels.js,同时被 companyHelpers.js 导出供 JS 侧消费,并通过全局数据级联以labels.*形式暴露给 Nunjucks 模板。
region:招聘覆盖地区
I-Stem 填写的是asia-pacific。在 labels.js 中,region的合法取值与展示标签为:
| 取值 | 展示标签 |
|---|---|
worldwide | Worldwide |
americas | Americas |
europe | Europe |
americas-europe | Americas & Europe |
asia-pacific | Asia Pacific |
other | Other |
I-Stem 的正文 "Region" 小节进一步写明"India",表明其招聘覆盖亚太地区、以印度为主。
remote_policy:远程工作政策
I-Stem 的取值为remote-friendly。在 labels.js 中,remote_policy定义了四个梯度:
| 取值 | 展示标签 |
|---|---|
fully-remote | Fully Remote |
remote-first | Remote First |
hybrid | Hybrid |
remote-friendly | Remote Friendly |
remote-friendly表示公司允许远程工作、但不一定全员远程优先。该值会直接决定档案页上"Apply Now"主按钮旁的 policy 标签(见下文渲染逻辑)。
company_size:公司规模
取值为tiny,对应 labels.js 中定义的 "1-10 employees",与正文 "Company size" 小节的 "1-10 people" 完全一致。全部规模档位包括:
| 取值 | 规模 |
|---|---|
tiny | 1-10 |
small | 11-50 |
medium | 51-200 |
large | 201-1000 |
enterprise | 1000+ |
technologies:技术栈标签
I-Stem 声明了javascript与python两项。值得注意的是,其正文 "Company technologies" 小节描述为 "Python, Node.js, React.js",frontmatter 中的javascript标签即对应 React.js/Node.js 生态,属于 JavaScript 技术族。技术标签的完整合法取值见 labels.js,包括typescript、react、nodejs、go、rust、ml、devops、cloud等 24 项,每项都有对应的展示名称(如nodejs→ Node.js、ml→ ML/AI)。
正文小节:从 blurb 到申请方式的固定结构
I-Stem 档案的正文包含 7 个小节,其中三个是 CONTRIBUTING.md 规定的必填小节:
## Company blurb:公司简介,必须存在;## Remote status:远程工作方式说明,必须存在;## How to apply:申请链接或说明,必须存在。
其余为常用可选小节:Company size、Region、Company technologies、Office locations。
Company blurb 的自动化利用
## Company blurb不仅是给人看的简介,还会被自动提取为页面 meta description。companies.11tydata.js 中的 Eleventy computed data 会通过正则##\s*Company\s*blurb\s*\n+([\s\S]*?)(?=\n##|$)截取该小节文本,随后依次执行 Markdown 链接剥离(text→text)、符号清洗(去除*、_、反引号)、换行与空白归一化,最终截断到约 155 字符并尽量在句号处切断——这正是 I-Stem 的 blurb 会被搜索引擎摘要复用的原因。
I-Stem 的 blurb 核心信息:由拥有残障亲身经历与数十年无障碍、工程与 AI 经验的残障人士创立,坚信技术与社区的力量能够为所有人创造平等体验与机会,通过个人和企业级产品、服务与倡议,赋能残障人士,并帮助组织更好地服务其残障学生、员工与客户。
档案如何被索引与渲染:从 Markdown 到页面的链路
集合(Collections)层面
collections.js 定义了多种公司集合,I-Stem 档案会按不同维度被纳入:
getAllCompanies:按title字母序排列全部公司(对应 "All Companies" 列表);getRecentCompanies:按 frontmatter 的addedAt倒序取最近 12 家(I-Stem 于 2023-10-08 入库,决定其在"最近新增"区的曝光时机);getCompaniesByRegion:按region分组(I-Stem 归入asia-pacific组);getCompaniesByTech:按technologies分组(I-Stem 同时出现在 JavaScript 与 Python 两个技术分组中)。
这些集合采用 memoized 的 glob 匹配(./src/companies/**/*.md),避免在构建中反复过滤数百条记录。
模板(Layout)层面
档案页面由 company.njk 渲染,I-Stem 的 frontmatter 各字段在此被消费:
- 第 11 行:
careers_url or website决定主按钮——I-Stem 提供了 careers_url,因此按钮文案为"Apply Now →"(否则显示 "Visit Website"); - 第 17-19 行:
region渲染为可点击的区域标签,链接指向/browse/asia-pacific/; - 第 20-22 行:
remote_policy渲染为政策标签,链接指向/browse/remote-friendly/,文案由labels.remotePolicy映射为 "Remote Friendly"; - 第 29-38 行:
technologies数组渲染为 "Tech Stack" 小节,每个标签链接到/browse/<tech>/浏览页; - 第 54-56 行:
updatedAt经formatDate('MMMM D, YYYY')过滤器输出 "Last updated: October 8, 2023"。
页面还通过schema: Organization注入 Organization.njk 结构化数据,供搜索引擎理解公司实体信息。
如何通过 I-Stem 档案看懂申请流程
I-Stem 的careers_url指向其 Wellfound 招聘页。模板会优先使用 careers_url 生成 "Apply Now" 按钮,且按钮带有data-track-outbound属性用于外链点击追踪;正文## How to apply小节则再次给出同一申请入口。这说明一条合规档案要求careers_url必须是公司自己的招聘页面(而非出售服务的页面),详见 CONTRIBUTING.md 的收录标准。
对于求职者,从档案页可直接获得完整信息闭环:远程政策(Remote Friendly)、招聘区域(Asia Pacific / India)、技术栈(JavaScript、Python、Node.js、React.js)、公司规模(1-10 人)、办公室位置(印度 Pune),以及一键跳转的申请入口。
复现与扩展:如何基于该档案格式新增条目
仓库 README 与贡献指南提供了完整的增补流程:在src/companies/{slug}.md创建文件(slug 必须与 frontmatter 一致),按模板填写元数据与必填小节,运行npm run build验证构建,再提交 PR,由自动化的Validate Company ProfilesGitHub Action 校验字段合法性并阻止不合规合并。
npm install # 安装依赖 npm run build # 验证档案可正常构建I-Stem 档案正是这一格式的标准示例:tiny规模、asia-pacific区域、remote-friendly政策、双技术标签,外加七个组织清晰的正文小节。对照 CONTRIBUTING.md 中的 frontmatter 模板 与 合法取值表,即可举一反三,为目录贡献任何一家满足"半远程至全远程友好的科技公司"标准的条目。
小结
通过 I-Stem 这一具体样本,可以完整看到 remoteintech.company 目录的三层设计:frontmatter 提供结构化事实、labels.js 约束取值并统一展示文案、collections + 模板负责索引与渲染。无论你是想快速判断一家公司是否适合远程求职,还是希望为社区目录贡献新的公司档案,理解这层数据规范都能让检索与维护事半功倍。
- 数据集
【免费下载链接】remote-jobs
Source for remoteintech.company — a community-maintained directory of remote-friendly tech companies
相关推荐
读懂 remoteintech 公司档案:以 Jobsity 为例解析 frontmatter 结构、远程政策标签与 Eleventy 渲染链路
读懂 remoteintech 公司档案:以 Jobsity 为例解析 frontmatter 结构、远程政策标签与 Eleventy 渲染链路 导读 remo
数据集解析 remoteintech.company 公司档案:以 Homeflic Wegrow 为例读懂 frontmatter 字段与站点渲染链路
解析 remoteintech.company 公司档案:以 Homeflic Wegrow 为例读懂 frontmatter 字段与站点渲染链路 remote
数据集深度解析 remoteintech.company 公司档案数据规范:以 Clevertech 档案为例的 Frontmatter 字段、标签体系与渲染机制
深度解析 remoteintech.company 公司档案数据规范:以 Clevertech 档案为例的 Frontmatter 字段、标签体系与渲染机制 r
数据集
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考