lnabc03497 downloadsA simple, elegant, and Chinese-friendly timeline rendering plugin.
一个简单、优雅、中文友好的 Obsidian 时间轴渲染插件。 A simple, elegant, Chinese-friendly timeline rendering plugin for Obsidian. 当前版本 (Current version): 1.7.0
1st Timeline 是一个 Obsidian 插件,可将简单的文本代码块渲染为精美的时间轴视图。支持多种日期格式(含中文日期优先支持),智能日期解析,优雅的视觉呈现——帮助您轻松创建时间线、项目进度视图或日程规划记录。
1st Timeline renders beautiful timeline views from simple text code blocks. It supports multiple date formats with first-class Chinese date support, intelligent parsing, and elegant visual presentation.

main.js、manifest.json、styles.css.obsidian/plugins/first-timeline/git clone https://github.com/lnabc03/1st-Timeline.git
cd 1st-Timeline
npm install
npm run build
然后将 main.js、manifest.json、styles.css 复制到 .obsidian/plugins/first-timeline/,重启并启用。
注意: 目标目录名必须与
manifest.json中的id字段一致(first-timeline)。
在 Obsidian 笔记中插入 timeline 代码块:
```timeline
2024-01-01 新年第一天(双空格分隔)
2024年3月8日:妇女节(中文冒号分隔)
2024-05-01: 劳动节(英文冒号分隔)
2025-01-28_12:04 精确时间格式
2025年1月29日早上 中文日期+时间词
2026-01-01
新的一年开始了!(多行文本)
- 支持完整的 Markdown 语法
# 标题
> 引用块
> [!NOTE] Callout
| A | B |
|---|---|
| C | D |
```
| 格式 | 分隔符 | 示例 |
|---|---|---|
| 双空格 | ␣␣ |
2024-01-01 事件内容 |
| 中文冒号 | : |
2024年3月8日:事件内容 |
| 英文冒号 | : |
2024-05-01:事件内容 |
| 仅日期(多行) | 换行 | 日期独占一行,后续行为事件内容 |
同一事件需要记在多个日期时,可在一行内列出所有日期,渲染时每个日期各生成一个相同内容的事件:
```timeline
2026年9月1日和9月10日:任务A
2026年9月1日,9月3日及9月5日:任务B
2026-09-01, 09-03: 任务C
2026-09-01_09:00,09-03_14:00:任务D
2026年9月1日早上和9月3日晚上:任务E
```
,、,、、、和、及,可混用9月10日,ISO 格式写 09-03_HH:MM)和中文时间词(早上/上午/中午/下午/晚上),不同日期可混用不同格式除了时间点事件,还可以用 日期A~日期B:内容 表示一段有明确起止的时间(如实习、项目周期),渲染为时间轴上方的横向进度条:
```timeline
2026-07-01~2026-09-30:暑期实习
2026年8月1日至2026年8月20日:项目冲刺
2026-09-01~2026-09-10 双空格分隔也可以
```
YYYY-MM-DD 和 YYYY年MM月DD日 两种纯日期格式~、~、至、到 四种写法用 source: 指令引用另一个笔记中的时间轴,避免在日记模板里重复硬编码相同的事件:
```timeline
source: [[工作安排]]
2026-08-20:只属于本篇笔记的事件
```
```timeline 代码块内(可混写其他任意内容)source: 和 源:(中英文冒号均可),可出现在代码块任意位置,仅第一个生效在包含时间轴的笔记中执行命令面板的 "归档过期事件 / Archive past events" 命令:
```timeline 代码块中,日期早于今天的事件会被移出代码块执行命令面板的 "添加新事件 / Add new event" 命令,弹窗中输入时间和事件内容:
时间:事件),支持所有日期/时间格式及时间段写法使用命令面板(Ctrl+P)执行 "笔记汇总 / Notes summary" 命令:
YYYY-MM-DD,YYYY-MM-DD)| 设置项 | 说明 | 默认值 | 范围 |
|---|---|---|---|
| 排序方向 | 事件排列顺序 | 升序 | 升序 / 降序 |
| 笔记日期属性 | frontmatter 字段名 | created |
任意字段名 |
| 时间轴颜色 | 时间轴线条和点的颜色 | #9370DB |
CSS 颜色值 |
| 颜色预设 | 一键切换主题色 | — | 蓝/绿/紫/红/橙 |
| 时间点大小 | 时间轴上点的大小 | 12px | 6–20px |
| 线条宽度 | 时间轴竖线宽度 | 2px | 1–5px |
| 事件间距 | 事件卡片之间的间距 | 20px | 10–40px |
| 悬停提示框 | 是否显示距今天数提示 | 开启 | 开关 |
| 悬停延迟 | 提示框出现前的等待时间 | 500ms | 0–1000ms |
| 当天事件高亮 | 当天事件特殊标记 | 开启 | 开关 |
| 时间段端点标记 | 时间轴中显示时间段起止分隔线 | 开启 | 开关 |
| 自动折叠 | 事件过多时自动折叠 | 开启 | 开关 |
| 折叠阈值 | 触发折叠的事件数量 | 10 | 5–50 |
| 折叠时显示数量 | 折叠后显示的事件数 | 5 | 1–15 |
对齐 Obsidian 官方示例插件 最佳实践:
npm install # 安装依赖
npm run dev # 开发模式(watch)
npm run build # 生产构建(tsc + esbuild)
npm run lint # ESLint 代码检查
, , 、 和 及(可混用)列出多个日期,同一事件批量添加到各日期;第二个起可省略年份;支持精确时间和中文时间词日期A~日期B:内容,渲染为时间轴上方的进度条,自动计算第 x/n 天source: 指令引用其他笔记的时间轴、归档过期事件命令MIT License
lnabc03 | 弋鹓
A simple, elegant, Chinese-friendly timeline rendering plugin for Obsidian. 一个简单、优雅、中文友好的 Obsidian 时间轴渲染插件。 Current version: 1.7.0
1st Timeline renders beautiful timeline views from simple text code blocks. It supports multiple date formats with first-class Chinese date support, intelligent parsing, and elegant visual presentation — helping you create timelines, project progress views, or schedule records effortlessly.
1st Timeline 是一个 Obsidian 插件,可将简单的文本代码块渲染为精美的时间轴视图。

main.js, manifest.json, and styles.css.obsidian/plugins/first-timeline/ in your vaultgit clone https://github.com/lnabc03/1st-Timeline.git
cd 1st-Timeline
npm install
npm run build
Then copy main.js, manifest.json, and styles.css to .obsidian/plugins/first-timeline/, restart Obsidian, and enable.
Note: The target directory name must match the
idfield inmanifest.json(first-timeline).
Insert a timeline code block in any Obsidian note:
```timeline
2024-01-01 New Year's Day (two spaces)
2024-03-08: International Women's Day (colon)
2024年5月1日:Labor Day (Chinese date + colon)
2025-01-28_12:04 Precise time format
2025年1月29日早上 Chinese date with time-of-day word
2026-01-01
A new year begins! (multi-line text)
- Full Markdown syntax supported
# Headings
> Blockquotes
> [!NOTE] Callouts
| A | B |
|---|---|
| C | D |
```
| Format | Separator | Example |
|---|---|---|
| Two spaces | ␣␣ |
2024-01-01 Event content |
| Chinese colon | : |
2024年3月8日:Event content |
| English colon | : |
2024-05-01: Event content |
| Date only (multi-line) | Newline | Date on one line, content on following lines |
When the same event belongs to several dates, list all dates on one line — each date gets its own event with identical content:
```timeline
2026年9月1日和9月10日:Task A
2026年9月1日,9月3日及9月5日:Task B
2026-09-01, 09-03: Task C
2026-09-01_09:00, 09-03_14:00: Task D
```
,, ,, 、, 和, 及 — freely mixable9月10日 in Chinese format or 09-03 in ISO format_HH:MM) and Chinese time-of-day words (早上/上午/中午/下午/晚上) are supported, and formats may be mixed within one lineBeyond point-in-time events, use DateA~DateB: content for a span with explicit start and end (e.g. an internship or project phase), rendered as horizontal progress bars above the timeline:
```timeline
2026-07-01~2026-09-30: Summer internship
2026年8月1日至2026年8月20日:Project sprint
2026-09-01~2026-09-10 Two-space separator works too
```
YYYY-MM-DD or YYYY年MM月DD日~, ~, 至, 到Use the source: directive to render a timeline stored in another note, avoiding hardcoded duplicates in daily note templates:
```timeline
source: [[Work Schedule]]
2026-08-20: An event unique to this note
```
```timeline code block (other content is allowed)source: or 源: (either colon), may appear anywhere in the block, and only the first one takes effectRun the "Archive past events / 归档过期事件" command from the command palette in a note containing timelines:
```timeline code block in the current fileRun the "Add new event / 添加新事件" command from the command palette and fill in the date/time and the event content:
time:event) previews live at the top; all date/time formats and the date-range syntax are acceptedUse the command palette (Ctrl+P) and run the "Notes summary / 笔记汇总" command:
YYYY-MM-DD,YYYY-MM-DD)| Setting | Description | Default | Range |
|---|---|---|---|
| Sort direction | Event sort order | Ascending | Ascending / Descending |
| Date property | Frontmatter field name | created |
Any field name |
| Timeline color | Color of line and dots | #9370DB |
CSS color value |
| Color presets | One-click theme switching | — | Blue / Green / Purple / Red / Orange |
| Dot size | Size of timeline dots | 12px | 6–20px |
| Line width | Width of the timeline line | 2px | 1–5px |
| Event spacing | Spacing between event cards | 20px | 10–40px |
| Hover tooltip | Show days-until/since tooltip | On | Toggle |
| Hover delay | Delay before tooltip appears | 500ms | 0–1000ms |
| Highlight today | Special highlight for today's events | On | Toggle |
| Range start/end markers | Show range endpoints as divider lines on the timeline | On | Toggle |
| Auto collapse | Auto-collapse when above threshold | On | Toggle |
| Collapse threshold | Events needed to trigger collapse | 10 | 5–50 |
| Show when collapsed | Events shown when collapsed | 5 | 1–15 |
Follows Obsidian's official sample plugin best practices:
npm install # Install dependencies
npm run dev # Development mode (watch)
npm run build # Production build (tsc + esbuild)
npm run lint # ESLint check
, , 、 和 及 (freely mixable) to add the same event to every date; later dates may omit the year; precise times and Chinese time-of-day words supportedDateA~DateB: content, rendered as progress bars above the timeline with automatic day x/n trackingsource: directive for referencing timelines in other notes, and the archive past events commandMIT License
lnabc03 | 弋鹓