news 2026/10/2 2:20:49

remoteintech.company 公司档案全解析:以 Honeycomb(honeycomb.md)为例,读懂远程友好公司目录的数据结构、标签体系与渲染链路

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
remoteintech.company 公司档案全解析:以 Honeycomb(honeycomb.md)为例,读懂远程友好公司目录的数据结构、标签体系与渲染链路
  • 数据集

【免费下载链接】remote-jobs

Source for remoteintech.company — a community-maintained directory of remote-friendly tech companies

项目地址:https://gitcode.com/GitHub_Trending/re/remote-jobs
点击查看免费下载

remoteintech.company 是一个由社区维护的远程友好科技公司目录,其站点源码正是当前仓库remote-jobs。目录中每一家公司的档案都以一个独立的 Markdown 文件存放在 src/companies/ 下,honeycomb.md 就是其中之一。本文以 Honeycomb 这份档案为完整样例,逐字段拆解公司档案的前置元数据(frontmatter)与正文小节,并结合 companies.11tydata.js、company.njk、labels.js、collections.js 等源码,讲清楚一条公司记录如何从 Markdown 文件被渲染成可浏览、可检索、可被搜索引擎理解的公司主页,读完你就能自己读懂甚至新增任意一条档案。

一、档案文档的整体结构:一份 Markdown 就承载一整条公司记录

打开 honeycomb.md,可以看到它由两大部分组成:

  1. 前置元数据(frontmatter):位于文件开头两个---之间的 YAML 键值对,是整条记录的"结构化骨架",用于分类、筛选、排序与元信息展示;
  2. 正文小节(H2 标题段落):以##开头的七个标准小节,即Company blurb、Company size、Remote status、Company technologies、Region、Office locations、How to apply,是面向读者的自然语言内容。

全站约 850 家公司档案(源码注释见 collections.js)都遵循同一套模板,因此只要吃透这一份文件,就等于掌握了整个目录的数据组织方式。目录对每个公司页面只做一层包装(见 companies.json 中的"layout": "company"),正文内容原样注入 company.njk 布局,其余全部由 frontmatter 驱动。

二、Frontmatter 字段详解:一条档案的"结构化骨架"

honeycomb.md 的 frontmatter 完整内容如下(与仓库文件逐字一致):

--- title: "Honeycomb" slug: honeycomb website: https://honeycomb.tv/ region: europe remote_policy: remote-first company_size: small technologies: - cloud - devops - nosql - ruby - sql addedAt: 2017-04-07 updatedAt: 2018-04-16 ---

每个字段的含义与在本项目中的实际作用如下:

字段取值(Honeycomb)作用说明
titleHoneycomb公司显示名称,出现在页面 H1(见 company.njk)、列表、标签页等所有地方
slughoneycomb与文件名一致的 URL 标识,参与公司页 URL 与标签页分组(collections.js 用它拼接公司信息)
websitehttps://honeycomb.tv/官网地址;同时被 Organization.njk 写入 JSON-LD 结构化数据,提升搜索引擎对"这是一个组织实体"的识别
regioneurope公司主要雇佣地区。取值经 labels.js 映射为Europe,渲染为指向/browse/europe/的地区标签
remote_policyremote-first远程办公政策,映射为Remote First,渲染为指向/browse/remote-first/的政策标签。合法取值见 labels.js:fully-remote、remote-first、hybrid、remote-friendly
company_sizesmall公司规模档位,映射为11-50 employees(见 labels.js),本档案正文也印证约 50 人
technologiescloud, devops, nosql, ruby, sql技术栈标签数组,渲染为公司主页的 Tech Stack 区块(company.njk),并用于按技术浏览与筛选(collections.js)
addedAt2017-04-07收录日期,用于"最近新增公司"列表排序(collections.js)
updatedAt2018-04-16最近更新日期,在页面页脚以MMMM D, YYYY格式展示(company.njk)

注意两点:一是所有取值都必须在 labels.js 等"单一事实来源"中注册,否则标签会直接回退显示原始键名(例如 companyHelpers.js 中的|| size || 'Unknown'兜底逻辑);二是addedAt/updatedAt由 Eleventy 直接读取 frontmatter 参与计算,无需额外维护(companies.11tydata.js 的注释明确说明这一点)。

三、正文七个小节逐一拆解

frontmatter 之外的正文是档案的"血肉",七个小节的内容如下(均继承自原文档):

Company blurb——一句话定位公司:

Supercharged video advertising delivery. Faster delivery and better collaboration for brands, broadcasters and everyone in between.

这段文字有双重用途:它不只是给读者看的简介,更是整个页面 meta description 的自动来源。详见下文第四节。

Company size——约 50 人规模,与 frontmatter 中company_size: small(11-50 人)互相印证。

Remote status——远程办公实况:公司是remote-first(远程优先)组织,员工分布在整个欧洲;伦敦附近的团队成员每周到办公室一次进行同步,其余成员通过 Google Hangouts 或 Screehero(原文拼写如此)远程加入。

Company technologies——技术栈描述:主要使用Ruby on Rails,未来的新服务则采用无 Rails 的纯 Ruby;同时强调"相信实验、选择最适合任务的工具",为其他语言留出空间。此外明确列出团队日常依赖的工具链:Ansible、AWS/Azure、Git、Postgres、Redis、Github、Slack、Trello。

Region——Europe(与 frontmatterregion: europe一致)。

Office locations——两个办公室:

  • London, UK
  • Frankfurt, DE

How to apply——应聘渠道:由工程师 Louis 直接对接,通过邮件louis.pilfold@honeycomb.tv联系(原文档为mailto:链接)。

这份档案描述的对象是 honeycomb.tv——一家面向品牌与广播机构的视频广告投放技术公司(注意与同名可观测性产品区分,勿混淆)。七个小节与 frontmatter 字段互为印证:正文说欧洲、说 remote-first、说约 50 人,与元数据中的region、remote_policy、company_size完全对齐,这正是目录数据质量的保证。

四、从 Markdown 档案到页面:元数据自动生成与渲染链路

一份档案要变成完整页面,经历两条关键链路。

链路一:meta description 自动生成。companies.11tydata.js 是一个eleventyComputed计算属性:若档案未手动设置description,它就用正则##\s*Company\s*blurb\s*\n+([\s\S]*?)(?=\n##|$)抓取Company blurb小节之后的文本,清洗掉 Markdown 链接语法、星号、下划线、反引号,把换行与连续空格压缩为单个空格,再截断到约 155 字符——优先在句号处截断,否则在最后一个空格处截断并补...。这意味着 Honeycomb 页面的 meta description 会直接取自其 blurb 文本,无需人工额外维护,同时天然保证摘要与正文一致。

链路二:页面渲染。company.njk 是公司档案的专属布局,它做了这些事:

  • 用{% set buttonUrl = careers_url or website %}决定主按钮:有careers_url显示 "Apply Now",否则显示 "Visit Website"(company.njk);
  • region与remote_policy渲染为可点击的标签,分别指向/browse/{{ region }}/与/browse/{{ remote_policy }}/(company.njk);
  • technologies数组逐项渲染为 Tech Stack 标签,指向/browse/{{ tech }}/(company.njk);
  • updatedAt经formatDate('MMMM D, YYYY')过滤器显示为 "Last updated: April 16, 2018" 格式(company.njk)。

此外,公司页的<head>中还会注入 Organization.njk 生成的 JSON-LD(@type: "Organization",含name与url),配合 meta description,让搜索引擎与 LLM 能结构化地理解这条公司记录。

五、标签体系与浏览页:档案如何进入全站索引

frontmatter 里的region、remote_policy、technologies不只是页面装饰,它们直接驱动全站浏览体系:

  • 按地区分组:getCompaniesByRegion遍历全部档案,把company.data.region归入regionLabels预初始化的分组中(collections.js)。Honeycomb 因而出现在Europe浏览页中;
  • 按技术分组:getCompaniesByTech对technologies数组逐项归类(collections.js),Honeycomb 会同时出现在 Cloud、DevOps、NoSQL、Ruby、SQL 五个技术浏览页;
  • 标签页元数据:getCompanyTags从 Eleventy 集合而非手工文件 IO 派生全部标签,为每个标签统计公司数量并生成含count、companies的元数据(collections.js),标签显示名统一取自 labels.js;
  • 排序与收录:getAllCompanies按标题字母序排列(collections.js),getRecentCompanies按addedAt倒序取最近 12 家(collections.js)。

也就是说,编辑只需在 frontmatter 里写好三个枚举字段,这份档案就会自动进入地区、政策、技术等所有相关浏览页,无需任何手工维护列表。

六、如何新增或更新一条公司档案

按照 README.md 与 CONTRIBUTING.md 的说明,贡献一条公司档案的流程是:

  1. 在src/companies/下创建以 slug 命名的{slug}.md文件(例如honeycomb.md);
  2. 按本文拆解的模板填写 frontmatter(title、slug、website、region、remote_policy、company_size、technologies、addedAt、updatedAt)与七个正文小节;
  3. 本地验证并构建:
npm install # 安装依赖 npm run start # 开发服务器,支持热重载 npm run build # 生产构建

构建需要 Node.js 22+;npm run build会经由 Eleventy 走完上述渲染链路,把档案生成到站点输出目录。提交 PR 后,校验机器人会自动检查 frontmatter 字段是否合法、必填小节是否齐全,并以评论形式反馈需要修复的问题。

新增、更新 Honeycomb 这类档案时,只需保证 frontmatter 取值落在 labels.js 定义的合法集内、正文小节齐全且与元数据一致,页面、meta 描述、结构化数据与浏览页索引就会全部自动联动。

七、小结

一份 honeycomb.md 看似只有五十来行,却是整个 remoteintech.company 目录的最小完整单元:frontmatter 提供结构化分类(地区、远程政策、规模、技术栈、时间戳),正文提供人读的内容(简介、远程实况、技术栈、办公地点、应聘方式),companies.11tydata.js、company.njk、labels.js、collections.js 则分别负责自动摘要、页面渲染、标签命名与全站索引。看懂这一份档案,就能看懂整个远程友好公司目录的运作方式,也能按同样的规范快速为目录新增高质量的公司条目。

  • 数据集

【免费下载链接】remote-jobs

Source for remoteintech.company — a community-maintained directory of remote-friendly tech companies

项目地址:https://gitcode.com/GitHub_Trending/re/remote-jobs
点击查看免费下载

相关推荐

上一篇:ET 框架中的 MongoBson 序列化库:一套方案打通配置、日志、网络消息与数据库存储
下一篇:WTF-Solidity 深度解析:基于 ERC-7786 的 ERC1155Crosschain 原生跨链桥扩展

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/2 2:20:24

直拍视频本地存档工作流:FFmpeg转码、字幕生成与批量API实践

这次我们来看一个很实用的本地视频存档主题&#xff1a;把「supernova 桃井爱莉 airi 位&#xff08;2026.08.15&#xff09;」这类直拍视频&#xff0c;整理成一套能转码、能截图、能生成字幕、能批量封存的本地媒体档案体系。很多人演出结束就急着保存录像&#xff0c;但下载…

作者头像 李华
网站建设 2026/10/2 2:20:09

011-0302-linux及shell-shell

Shell 概述 Shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核。 Shell还是一个功能相当强大的编程语言,易编写、易调试、灵活性强。 Linux提供的Shell解析器有 $ cat /etc/shells# /etc/shells: valid login shells/bin/sh /bin/bash /usr/bin/ba…

作者头像 李华
网站建设 2026/10/2 2:20:02

批量重置文件夹时间戳:绿色小工具实测与避坑指南

上周帮同事整理共享盘&#xff0c;三百多个文件夹的创建时间、修改时间全乱七八糟。原因是之前从网盘批量同步过一次&#xff0c;同步工具把所有目录的时间戳都刷成了当天。他一开始没在意&#xff0c;等真正要按时间归档才发现&#xff0c;整个目录树完全没法看。手动右键一个…

作者头像 李华
网站建设 2026/10/2 2:18:49

static_assert在单片机开发中的编译期安全防护实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华