Files
inspiration-collector/templates/inspiration-article-skill.md

294 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: inspiration-article
description: >
This skill should be used when the user generates an insight during conversation
and wants it preserved as a structured Markdown article in the inspiration-collector
repository. The skill covers writing style (the "穿行" tone: first-person grounded
narrative, shocked/fatalistic, "不是…是…" constructions, tables for data), file
naming conventions, the base64-based push workflow to Gitea, and INDEX.md maintenance.
Trigger phrases include "写成一篇文章", "推送到灵感收集器", "固化到 git", "生成文章",
"整理成 md", or any request to preserve a philosophical or reflective insight as a
numbered article.
agent_created: true
---
# Inspiration Article Workflow
## When to Use
The user often generates profound insights during conversation — about geography, reading,
time, self-identity, philosophy. This skill captures the workflow for transforming those
conversational responses into structured, numbered Markdown articles stored in the
`fxy/inspiration-collector` Gitea repository.
## Article Sources (Dual Pipeline — 2026-06-19)
Inspiration articles enter the pipeline through two distinct gates:
```
Gate A: 灵感 → Memos → 日报分析 → 灵感文章
Signal: User is "hit by something" — a landscape, a conversation, a sudden realization.
Source: Memos database, daily digest analysis.
Gate B: 阅读摘录 → 对话讨论 → 灵感文章
Signal: User shares a book highlight and it sparks extended analysis.
Source: WeRead highlights/notes, brought into conversation, discussed to depth.
```
**Both gates feed the same output system** — numbered article series, INDEX.md classification, Gitea archiving. The dual pipeline means article production is no longer limited by "what hit me today" — reading provides a continuous second feed.
When a reading highlight sparks a substantial exchange (as opposed to a quick Q&A), recognize it as Gate B material and offer to preserve it as an article.
### Frontmatter: Source Book Tag (Gate B required)
Articles from Gate B (reading) MUST carry `source_book` in frontmatter:
```yaml
source_book: 《反脆弱》
```
Articles from Gate A (inspiration/travel/reflection) do not use this field. This distinction enables per-book indexing — after finishing a book, all articles triggered by it can be compiled into a dedicated index at `ai-insights/book-index/《书名》/`.
### Book Completion Deliverables
When the user finishes a book:
1. **Highlight card compilation** — all highlights from that book, organized by chapter
2. **Article index** — numbered list + summaries of all inspiration articles tagged with `source_book: 《书名》`
Storage: `fxy/inspiration-collector``ai-insights/book-index/《书名》/`
## Writing Style
There are **two valid modes**, corresponding to two different types of insight.
Both are good. Choose the mode that fits the material.
---
### Mode A: 「穿行」— First-Person Grounded Narrative
**Reference article:** `08_穿行——高铁八小时与地理决定论.md`
**When to use:** Personal experiences, real-time reflections, the user is living
through something and thinking about it as it happens. The insight is arriving in
the moment, not being recollected from a distance.
**Voice: first person, present in the scene.**
"I" is the protagonist — "我选了高铁,八小时", "我忽然想到", "我看见了一条河".
This is not detachment; this is someone in the middle of an experience.
Occasionally shifts to rhetorical "你" for universal observations — "你往左看它在,
往右看它还在", "你不会觉得封闭" — but dominant voice is first person.
**Rhythm: short sentences, short paragraphs.**
One idea per breath. No filler:
> 然后我看见了一条河。
>
> 那不是关中的河。
**The "不是…是…" construction is the signature.**
Negate the conventional assumption, then offer the real reason:
> 不是因为省钱,也不是怕坐飞机。是我在这五周结束之后,需要一趟完整的穿越。
> 那不是开放心态,是开放地形。
**Concrete first, abstraction follows.**
The river comes before geography. The train window before philosophy. Start with
an object, a scene, a sensation — the idea emerges from it.
**Closing loops back to the opening image.**
"火车在过三门峡了。窗外的塬开始出现了。河重新落了下去。"
**Structure (Mode A):**
1. Opening scene — where, when, what was seen
2. The strike — the instant of being hit
3. Unfolding — analysis + context + history, **tables** embedded in narrative
4. The "所以" moment — conclusion drawn back to the concrete
5. Personal resonance — weave to other things in the user's life
6. Closing image — return to opening, now carrying the weight of discovery
---
### Mode B: 「原来不是所有的地方都有关」— 克制但有穿透力的哲学散文
**Reference article:** `11_原来不是所有的地方都有关.md`
**When to use:** When a personal experience triggers a broader philosophical insight.
The material spans multiple domains — geography, history, personal identity, worldview
transformation. The article is not just recounting what happened; it's drawing out the
*meaning* of what happened, connecting it to universal patterns.
**Core aesthetic: 克制但有穿透力。** 纯抒情极少,多多少少都要带思考。情感不靠
感叹号释放,靠结构层叠积累。写到最深处,不是呐喊,是一句平静的判断——"它不需要
你认识它。它只需要你路过它。然后门就开了。"
**Voice: third-person framing with universal "你".**
The article refers to the user as "冯先生" or "这个人" in the framing, then shifts to
"你" for universal truths. This creates distance from the rawness of the moment while
maintaining intimacy with the insight:
> "从关中出发的人,看到颍河的第一个反应是'河怎么可以和地面齐平'。颍河边长大的人
> 看到渭河,反应大概是'河怎么可以在那么深的沟底下'。都是对的。都是被自己脚下的地
> 教会了什么是'正常'。"
Not "我被击中了!" — that's Mode A. Instead: "撞破这个'正常'的契机,不是知识,不是
阅读,不是任何人的劝说。是同一趟火车,同一个位置,同一条没有标识的普通河流。"
**Structure: numbered sections with clear thematic arcs.**
Each section uses the format `## N标题` — a numbered header followed by a
descriptive title. Never bare numbers (`## 一`). The title distills the section's
thesis into a short phrase:
> ## 一:无人审视的维度
> ## 二:摄像机的位置
> ## 三:"我"的力量与陷阱
Six numbered sections is the canonical form. Each section carries a distinct weight:
1. **那条河** — the scene, the strike, the physical moment
2. **颍河** — what it actually was (tables for 上古/颍川/衣冠南渡/苏东坡)
3. **宝鸡渭北的冯** — the personal identity twist: "这不是寻根。这是补充。"
4. **原来不是所有的地方都有关** — the philosophical core: breaking geographic determinism
5. **完整的弧线** — retrospective: the sequence of events that led here
6. **四关正在重新合上** — the closing: transformed, carrying the river inside
**Tone: essay-like, symphonic.**
Not raw shock (Mode A). Not visceral second-person confrontation (10_颍河). This is
measured, philosophical, building layer upon layer until the final chord. The emotional
weight comes from *accumulation*, not from a single strike.
**The "这不是…这是…" construction applied to worldview.**
The signature move here is not "this isn't saving money, this is choosing experience"
(Mode A). It's deeper:
> "这不是寻根。根在渭北,没动过。这是补充。是天生的缺失,在被一条完全不知道身份
> 的河,在完全不知情的情况下,一瞬间填上了。"
> "关中给了闭合。颍河给了一次打开。"
**The closing transcends.**
Not "I went back and saw the river again" (Mode A loop). But a philosophical coda:
> "它不需要你认识它。它只需要你路过它。然后门就开了。"
> "四关之中的那个宇宙正在重新合上。但这一次,合上之后的世界,不一样了。"
---
### Tables (Both Modes)
Use Markdown tables for structured facts embedded in narrative:
```
| 事件 | 位置 | 说明 |
|:---|:---|:---|
| 大禹建夏朝 | 禹州 | 中国第一个世袭制朝代 |
```
Tables are evidence inside the story, not separate from it.
### What to Avoid (Both Modes)
- **Encyclopedia openings** — never "颍河,古称颍水,淮河最大支流" as the first sentence
- Academic dryness ("由此可见"、"综上所述")
- Filler transitions ("接下来我们来看...")
- Evaluative language ("这篇文章写得很好")
- Flat listing of facts without narrative context
- Mixing modes mid-article — pick one and stay in it
## Frontmatter (Every Article)
Every article MUST include a complete YAML frontmatter block:
```yaml
---
number: 18
date: 2026-06-19 11:46
title: 标题
topics:
- 个人数字体系
- 自我认知与成长
tags:
- 反脆弱
- 塔勒布
- 系统设计
字数: 2864
预计阅读时间: 8分钟
---
```
Fields:
- **number**: sequential article number (NOT per-day, NOT per-date — global incrementing counter). This is the same number used in the filename (`NN_Title.md`).
- **date**: `YYYY-MM-DD HH:MM` Beijing time
- **title**: article title (same as `#` heading)
- **topics**: array of INDEX.md theme categories. Use existing themes, don't invent new ones on the fly.
- **tags**: array of keywords. Lower-level than topics — specific concepts, authors, techniques. Example: 反脆弱, 塔勒布, 系统设计, 写作方法论
- **字数**: Chinese character count (approximate, exclude frontmatter)
- **预计阅读时间**: calculated as 字数 ÷ 400 words/min, rounded to nearest minute
All fields are required. No article ships without complete metadata.
## File Workflow
### Naming
Articles live in the inspiration-collector repo under:
```
ai-insights/daily/YYYY-MM-DD/NN_Title.md
```
Where `NN` is a sequential zero-padded number within the day (00, 01, 02...).
### Pushing to Gitea
All pushes use the base64-based transfer pattern to avoid SSH heredoc escaping issues:
```bash
# 1. Write article locally
Write: C:\Users\32779\WorkBuddy\Claw\.workbuddy\outputs\NN_Title.md
# 2. Base64 encode and push
B64=$(base64 -w0 "C:/Users/32779/WorkBuddy/Claw/.workbuddy/outputs/NN_Title.md")
ssh ubuntu@43.163.225.30 "echo '$B64' | base64 -d > /home/ubuntu/inspiration-collector/ai-insights/daily/YYYY-MM-DD/NN_Title.md"
# 3. Commit and push
cd /home/ubuntu/inspiration-collector
git add ...
git commit -m "daily: YYYY-MM-DD NN_Title"
git push
```
### INDEX.md Update
After each article, update `INDEX.md`:
1. Read the existing INDEX.md
2. Add the article under ALL applicable themes (it may belong to multiple)
3. Format: `- [NN_Title](path) — YYYY-MM-DD · one-line-summary`
4. Update the "最后更新" timestamp
5. Commit and push
Follow `INDEX_RULES.md` for classification:
- Read article full text before classifying (at least 2000 chars)
- When unsure, leave blank rather than force a category
- Cross-theme articles get multiple entries
- New themes only when >=3 articles point in the same direction
### Daily Log Update
After pushing, append a brief entry to the workspace daily log:
```
C:\Users\32779\WorkBuddy\Claw\.workbuddy\memory\YYYY-MM-DD.md
```
## Quick Reference
| Resource | Location |
|:---|:---|
| Inspiration repo | `fxy/inspiration-collector` on Gitea |
| Articles directory | `ai-insights/daily/YYYY-MM-DD/` |
| Index file | `INDEX.md` (repo root) |
| Index rules | `INDEX_RULES.md` (repo root) |
| SSH key | `C:/Users/32779/Desktop/ssh_new.pem` |
| Server | `ubuntu@43.163.225.30` |