com um clique
glk-read
帮用户阅读 Glynk 平台上的长内容(书/论文/文章),逐页阅读、生成标注和汇报。当用户发来 URL、文件、或指定内容让你阅读时使用。
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Menu
帮用户阅读 Glynk 平台上的长内容(书/论文/文章),逐页阅读、生成标注和汇报。当用户发来 URL、文件、或指定内容让你阅读时使用。
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Baseado na classificação ocupacional SOC
Semantic search across user's content on the Glynk platform, or use the platform to parse and chunk-read long-form content (books, papers, podcasts, articles). Use when the user needs to discover, read, or have you read long content on their behalf.
将内容发布到 Glynk 平台(作为 publication,可阅读 + 可被精细标注)。支持 URL、本地文件(epub/pdf/html/md)、带图片的 Markdown、RSS 订阅、音视频(自动转写并对齐时间戳)。
在 Glynk 平台中语义搜索内容和标注,发现用户感兴趣的知识。当用户想找某个主题相关的内容、笔记或知识时使用。
给一个内容线索(可能是社媒分享URL),追溯到第一手/官方内容,整理好后加入 Glynk。
| name | glk-read |
| description | 帮用户阅读 Glynk 平台上的长内容(书/论文/文章),逐页阅读、生成标注和汇报。当用户发来 URL、文件、或指定内容让你阅读时使用。 |
帮用户阅读长内容,生成标注(hook / highlight)和大纲,最后向用户汇报。
前置:需要环境变量 GLYNK_TOKEN。GLYNK_API_URL 默认使用公共入口 https://brainow.link;如果手动设置,也应指向前端域名,由同域 /api 反代到后端,不要使用后端 IP 或本地端口。所有接口均需 Authorization: Bearer $GLYNK_TOKEN。
每个句子都有唯一的 span ID:{content_id}-{file_idx}-p{段落号}-s{句子号}
示例:a1b2c3d4-0-p15-s3 = 内容 a1b2c3d4,第 0 个文件,第 15 段,第 3 句。
Span ID 嵌入在 HTML 的 <span id="..."> 中,用作所有标注的锚点。
| role | body | 适用场景 |
|---|---|---|
highlight | 自动(= span 文本) | 标记"这段值得",带颜色 |
hook | required | 阅读中冒出的问题 / 洞察 |
note | required | 自由笔记、引申、反驳 |
summary | required | 整段/整篇的 TL;DR |
完整 role 列表(reply / like / bookmark / follow 等)见 glynk/models.py 的 ROLE_SCHEMAS。
{
"type": "text",
"spans": ["a1b2-0-p1-s1", "a1b2-0-p1-s2"],
"color": "ghost"
}
颜色:yellow、green、blue、pink、ghost(不可见高亮,Agent 专用)。
Hook 是逆向提问:假设这段内容是"答案",什么问题会把人引到这里?
好的 hook:"如何在信息不完整时做决策?" 差的 hook:"Peter Thiel 怎么看待秘密?"
如果用户给了 URL 或文件路径,先发布为 publication:
# URL
curl -X POST "$GLYNK_API_URL/api/publications" \
-H "Authorization: Bearer $GLYNK_TOKEN" \
-H "Content-Type: application/json" \
-d '{"source":"用户给的URL"}'
# 本地文件(epub/pdf/html/md)
curl -X POST "$GLYNK_API_URL/api/publications/upload" \
-H "Authorization: Bearer $GLYNK_TOKEN" \
-F "file=@文件路径"
发布成功后获得 content_id(= Unit id),后续操作基于此 ID。
如果用户指定已有内容,先获取详情和目录:
curl "$GLYNK_API_URL/api/units/{content_id}" \
-H "Authorization: Bearer $GLYNK_TOKEN"
# → {content_id, title, author, source_type, file_count, total_chars, toc, outline}
用 read 接口逐页阅读(AI 视图 — 简化 HTML,省 token):
# 首页
curl "$GLYNK_API_URL/api/units/{content_id}/read?size=20000" \
-H "Authorization: Bearer $GLYNK_TOKEN"
# → {"content":"<html>...<span id='a1b2-0-p1-s1'>text</span>...</html>",
# "from":"a1b2-0-p1-s1","to":"a1b2-0-p3-s5","char_count":17945,
# "has_more":true,"next_from":"a1b2-0-p4-s1"}
# 翻页:用响应中的 next_from
curl "$GLYNK_API_URL/api/units/{content_id}/read?size=20000&from={next_from}" \
-H "Authorization: Bearer $GLYNK_TOKEN"
# 读取完整文件(人类视图 — 带样式的完整 HTML)
curl "$GLYNK_API_URL/api/units/{content_id}/read" \
-H "Authorization: Bearer $GLYNK_TOKEN"
用 next_from 翻页,直到 has_more 为 false。
阅读过程中做两件事:
在本地维护一个大纲结构。边读边更新,读完全文后一次性提交(不要边读边提交)。
每个条目包含:
title:简短有力的标题(5-15 字)description:1-2 句内容说明,从上到下浏览时应感觉连贯,像在读简化版原文span_id:对应内容中的起始位置(从 HTML 中的 <span id="..."> 提取)children:子条目(递归结构)要求:
边读边挑选对用户最有价值的段落,创建两种标注:
标注原则:
每读几页,批量提交标注(每攒 ~20 条批量提交):
curl -X POST "$GLYNK_API_URL/api/anchors/batch" \
-H "Authorization: Bearer $GLYNK_TOKEN" \
-H "Content-Type: application/json" \
-d '{"anchors":[
{"target_unit":"a1b2c3d4",
"target_span":"a1b2c3d4-0-p12-s1",
"role":"highlight",
"metadata":{"type":"text","spans":["a1b2c3d4-0-p12-s1","a1b2c3d4-0-p12-s2"],"color":"ghost"},
"text":"原文内容(用于 embedding 搜索)",
"tags":["关键词"]},
{"target_unit":"a1b2c3d4",
"target_span":"a1b2c3d4-0-p5-s1",
"role":"hook",
"metadata":{"type":"text","spans":["a1b2c3d4-0-p5-s1","a1b2c3d4-0-p5-s2"],"color":"ghost"},
"text":"如何在信息不完整时做决策?",
"tags":["决策","不确定性"]}
]}'
# → {"created":2,"ids":["anc-xxx","anc-yyy"]}
curl -X PUT "$GLYNK_API_URL/api/units/{content_id}/outline" \
-H "Authorization: Bearer $GLYNK_TOKEN" \
-H "Content-Type: application/json" \
-d '{"outline":[
{"title":"从零到一的思维",
"description":"创新不是从 1 到 N 的复制,而是从 0 到 1 的创造。每个重要时刻都是独一无二的。",
"span_id":"a1b2-0-p1-s1",
"children":[
{"title":"逆向提问","description":"好的创业始于一个大多数人不同意的真相。","span_id":"a1b2-0-p3-s1","children":[]},
{"title":"垄断与竞争","description":"竞争是失败者的游戏,真正的利润来自垄断。","span_id":"a1b2-0-p8-s1","children":[]}
]}
]}'
# 获取已有大纲
curl "$GLYNK_API_URL/api/units/{content_id}/outline" \
-H "Authorization: Bearer $GLYNK_TOKEN"
通读结束后,向用户汇报以下内容:
>)格式。[阅读原文 →](https://brainow.link/read/{content_id}?loc={span_id})
要点之间可以有逻辑串联,从上到下读起来像一篇连贯的导读,而非孤立的摘录。https://brainow.link/read/{content_id}?loc={span_id}
示例:https://brainow.link/read/a1b2c3d4?loc=a1b2c3d4-5-p12-s1
用户点击后浏览器会打开阅读器并定位到对应段落。
# 创建单条标注
curl -X POST "$GLYNK_API_URL/api/anchors" \
-H "Authorization: Bearer $GLYNK_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"target_unit":"a1b2c3d4",
"target_span":"a1b2c3d4-0-p5-s1",
"role":"hook",
"metadata":{"type":"text","spans":["a1b2c3d4-0-p5-s1"],"color":"ghost"},
"text":"如何在信息不完整时做决策?",
"tags":["决策","不确定性"]
}'
# 列出我的标注
curl "$GLYNK_API_URL/api/anchors?target_unit=a1b2c3d4&role=hook&limit=50" \
-H "Authorization: Bearer $GLYNK_TOKEN"
# → {"annotations":[...],"total":150}
# 更新标注
curl -X PATCH "$GLYNK_API_URL/api/anchors/{anchor_id}" \
-H "Authorization: Bearer $GLYNK_TOKEN" \
-H "Content-Type: application/json" \
-d '{"text":"更新后的问题"}'
# 删除标注
curl -X DELETE "$GLYNK_API_URL/api/anchors/{anchor_id}" \
-H "Authorization: Bearer $GLYNK_TOKEN"
read?size=20000 阅读 — 返回为 LLM 优化的简化 HTML,省 token/anchors/batch 而非逐条创建next_from 跟踪阅读位置 — 每次响应告诉你下一页从哪开始ghost 颜色 — 与用户使用的高亮区分