- 数据集
【免费下载链接】remote-jobs
Source for remoteintech.company — a community-maintained directory of remote-friendly tech companies
The Publisher Desk 是 remoteintech.company(本仓库即其站点源码,项目名 remote-jobs)收录的一家远程友好的广告科技(AdTech)公司档案。本文以仓库中该公司档案文档 the-publisher-desk.md 为骨架,结合项目源码讲解这类公司条目如何定义字段、如何在 Eleventy 静态站点中被编译、如何参与按地区/技术/远程政策的浏览索引,最终输出为一个带结构化数据的公司详情页。读完本文,你将掌握该仓库公司条目的完整数据结构、frontmatter 字段语义、页面渲染管线,以及如何基于同一套字段约定新增或维护类似的公司档案。
一、条目档案概览:一份 Markdown + frontmatter 的公司档案
仓库以"每个公司一个 Markdown 文件"的方式管理目录数据,文件位于 src/companies/ 目录下。The Publisher Desk 的档案文件 src/companies/the-publisher-desk.md 由两部分组成:顶部用---包裹的 YAML frontmatter(结构化元数据)与下方的 Markdown 正文(人类可读的描述信息)。
Frontmatter 部分是站点数据管线的主要输入,原文完整字段如下:
--- title: "The Publisher Desk" slug: the-publisher-desk website: https://www.publisherdesk.com region: other remote_policy: remote-friendly company_size: small technologies: - go addedAt: 2018-04-24 updatedAt: 2020-11-01 ---各字段语义可对照仓库中的标签定义与集合逻辑确认:
| 字段 | 值 | 说明与仓库依据 |
|---|---|---|
title | The Publisher Desk | 公司显示名称,会渲染为页面 H1,并用于站点内排序(collections.js 中getAllCompanies按 title 字母序排序) |
slug | the-publisher-desk | 页面 URL 标识,与文件名一致 |
website | https://www.publisherdesk.com | 公司官网,详情页上会生成 "Visit Website" 主按钮,同时被写入 schema.orgOrganization结构化数据(Organization.njk) |
region | other | 招聘地区分类,映射标签见 labels.js 的region表(other→ "Other");对应值在companyHelpers.js中有getRegionLabel兜底逻辑 |
remote_policy | remote-friendly | 远程政策标签,映射见 labels.js 的remotePolicy表(remote-friendly→ "Remote Friendly") |
company_size | small | 公司规模档位,映射见 labels.js 的companySize表(small→ "11-50 employees",与正文 "Company size" 一节一致) |
technologies | go | 技术标签数组,本例仅登记了 Go;页面会按 labels.js 的tech表渲染为可点击标签,若未登记则回退显示原始值 |
addedAt | 2018-04-24 | 收录日期,供"最近新增公司"集合getRecentCompanies排序使用(collections.js) |
updatedAt | 2020-11-01 | 最后更新日期,详情页 footer 会以MMMM D, YYYY格式显示(company.njk) |
可以看到,The Publisher Desk 的字段取值全部落在 labels.js 定义的受控词表内(other、remote-friendly、small、go),这正是社区目录保证"可聚合、可浏览"的前提:每个字段值都能被站点索引系统归类,从而进入对应标签页。
二、正文主体:档案中的结构化描述
Markdown 正文部分沿用了仓库统一的"公司档案模板"章节,原文完整内容包括:
- Company blurb——公司简介:帮助数字业务企业提升广告收入、降低运营成本,提供资源、方向、运营、技术与支持。这一节的文本会被 companies.11tydata.js 中的
eleventyComputed.description自动提取并清洗,生成 155 字符以内的 meta description(规则:优先取 "## Company blurb" 之后的内容,剥除 Markdown 链接语法、*、_、反引号,压缩空白,超长时优先在句号处截断,否则在最后一个空格处截断并加...)。 - Company size——公司规模:11-50 名员工。
- Remote status——远程状态:为希望远程工作、正在求职的人提供远程岗位。
- Region——地区:America。注意:正文中的 "America" 与 frontmatter 的
region: other并不冲突——正文是给求职者阅读的描述文本,frontmatter 才是站点用来归类的受控字段;这也是社区目录的常见做法(对比参照条目 buffer.md 的 Region 写为 "Buffer employs people worldwide",而 frontmatter 为worldwide)。 - Company technologies——公司技术:audience development、digital revenues、digital strategy、ad tech、advertising sales、growth、programmatic、publishers、websites、monetisation、Adops、DFP、DMP、Data、Google Ad Manager、Header Bidding、Prebid、AdX、SSP、Video 等广告科技领域专长。
- Office locations——办公地址:12 East 49th St 11th Floor New York, NY 10017,电话 (347).566.3085。
- How to apply——如何申请:引导至 LinkedIn 招聘页与官网招聘页(原文中给出的外部链接属于公司自有招聘渠道,供求职者参考)。
从业务属性看,该公司档案刻画的是一个典型的广告科技服务商:围绕程序化广告(Programmatic)、Header Bidding、Prebid、AdX、SSP、DFP/Google Ad Manager、DMP 等关键词提供服务,技术栈登记为 Go。该条目最初于 2018-04-24 收录,最近一次更新于 2020-11-01。
三、从 Markdown 到 HTML:公司详情页的渲染管线
The Publisher Desk 的档案只是数据源,真正对外展示的详情页由 Eleventy 构建管线生成。关键环节如下:
- 数据文件确定布局:每个公司页面通过 src/companies/companies.json 中的
{ "layout": "company" }统一指定布局,并在 eleventy.config.js 中注册布局别名company→ company.njk(addLayoutAlias('company', 'company.njk'))。 - 布局渲染:company.njk 生成
<article class="company-profile">页面骨架:顶部返回链接 +title作为 H1、careers_url或website生成 "Apply Now / Visit Website" 按钮、region与remote_policy渲染为标签并链接到对应浏览页、正文{{ content }}原样输出 Markdown 渲染结果、technologies数组渲染为 Tech Stack 标签区,footer 显示updatedAt格式化日期并提供 "Edit on GitHub" 链接。 - 结构化数据:由于布局 frontmatter 声明
schema: Organization,页面会注入 Organization.njk 生成的application/ld+json,其中name取title、url取website、若有careers_url则写入sameAs。这是该目录数据面向搜索引擎可读性的重要一环。 - 自动 meta 描述:companies.11tydata.js 通过
eleventyComputed为未显式声明description的公司自动生成 meta description,如上文所述。 - 集合与浏览页:collections.js 以
getFilteredByGlob('./src/companies/**/*.md')汇总全部公司档案,构建多个集合:按字母排序的companies、按addedAt倒序取 12 家的recentCompanies、按地区分组的companiesByRegion、按技术分组的companiesByTech,以及getCompanyTags生成的标签数据(含每个标签下的公司数量与公司列表)。因此,The Publisher Desk 会因为region: other、remote_policy: remote-friendly、technologies: [go]这三个字段分别进入"Other 地区""Remote Friendly 政策""Go 技术"等浏览索引,也会因addedAt进入"最近新增"列表(若在最新 12 条之内)。 - 缓存优化:
getCompanies使用了模块级缓存_companyCache,避免约 850 个公司条目被同一构建流程重复 glob 过滤 6 次(源码注释明确说明这一点)。
四、字段校验与标签体系:受控词表如何保证目录一致性
站点将所有受控字段集中定义在 src/_data/labels.js,这是"单一事实来源":JS 端通过 companyHelpers.js 重新导出regionLabels、remotePolicyLabels、companySizeLabels、techLabels供 collections.js 使用,模板端则通过全局数据级联以labels.*访问。The Publisher Desk 用到的取值在标签表中均有对应:
region: other→ 显示 "Other"remote_policy: remote-friendly→ 显示 "Remote Friendly"company_size: small→ 显示 "11-50 employees"(与正文公司规模一致)technologies: [go]→ 显示 "Go"
同时 companyHelpers.js 提供getRegionLabel/getRemotePolicyLabel/getCompanySizeLabel/getTechLabel四个兜底函数:若某字段值不在词表中,则原样返回该值(region 兜底为 "Other"、policy 兜底为 "Unknown"),避免渲染崩溃。
五、本地运行与验证:如何查看这类公司页
本仓库是 remoteintech.company 站点的源码(package.json中name为 remote-in-tech,Node 版本要求>=22,使用 ESM 模块)。若要在本地查看 The Publisher Desk 这类公司档案的最终渲染效果,可执行:
npm install npm run dev:11ty开发服务器启动后,在浏览器中访问对应公司页路径即可看到由 company.njk 渲染的详情页(含 "Visit Website" 按钮、地区/远程政策/技术标签、meta description 与 Organization 结构化数据)。生产构建则使用:
npm run build该命令依次执行clean、build:11ty与pagefind,输出到dist/目录(构建脚本与输出目录配置见 package.json 与 eleventy.config.js)。
六、小结:从一条档案看社区目录的数据设计
以 The Publisher Desk 这一条为样本,可以总结出 remoteintech.company 目录的数据设计模式:
- 数据与展示分离:公司事实写在 Markdown 正文,结构化元数据写在 YAML frontmatter,展示逻辑统一由
company布局承担; - 受控词表驱动聚合:
region、remote_policy、company_size、technologies全部取词表内值,从而自动进入地区、远程政策、技术三类浏览索引,无需额外人工配置; - 单一事实来源:所有标签映射集中在 labels.js,JS 集合逻辑与 Nunjucks 模板共享同一份数据;
- SEO 自动化:meta description 由 blurb 自动生成,Organization 结构化数据由 frontmatter 自动注入,构建期一次性完成;
- 社区可维护:每条档案的 footer 都提供 "Edit on GitHub" 入口,任何贡献者都可以按同一字段约定修正或补充公司信息。
对于任何希望参考"社区维护的远程友好公司目录"数据结构的读者而言,这份条目档案连同其渲染管线,提供了一个完整、可复现的最小闭环示例。
- 数据集
【免费下载链接】remote-jobs
Source for remoteintech.company — a community-maintained directory of remote-friendly tech companies
相关推荐
Fly.io 公司档案全解析:remoteintech.company 目录中一条远程友好科技公司条目的数据模型与站点呈现
Fly.io 公司档案全解析:remoteintech.company 目录中一条远程友好科技公司条目的数据模型与站点呈现 本文以 src/companies/
数据集AlphaSights 公司档案深度解析:remoteintech.company 项目中的远程友好技术公司目录实践
AlphaSights 公司档案深度解析:remoteintech.company 项目中的远程友好技术公司目录实践 导读 本文以远程友好技术公司目录项目 re
数据集Continu 公司档案解读:remoteintech.company 远程友好公司目录的条目结构与数据组织
Continu 公司档案解读:remoteintech.company 远程友好公司目录的条目结构与数据组织 导读 :本文以 Continu 公司档案 http
数据集
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考