بنقرة واحدة
glk-read
帮用户阅读 Glynk 平台上的长内容(书/论文/文章),逐页阅读、生成标注和汇报。当用户发来 URL、文件、或指定内容让你阅读时使用。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
帮用户阅读 Glynk 平台上的长内容(书/论文/文章),逐页阅读、生成标注和汇报。当用户发来 URL、文件、或指定内容让你阅读时使用。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف 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 颜色 — 与用户使用的高亮区分