Back to skills
SKILL.md
Story Long Scan
ASecurity长篇网文扫榜。分析起点、番茄、晋江等平台排行榜数据,提炼市场趋势与热门题材。 触发方式:/story-long-scan、Hermes 路由名 `community/oh-story-claudecode/story-long-scan`、slash command `/story-long-scan`、/长篇扫榜、「长篇什么火」「起点排行」
- 9 stars
- 0 votes
- 0 copies
- 12 views
- Added September 9, 2026
Works with
Security analysis
92/100- Uses curl or wget to download content
Pro scans all 20 files and shows the line behind each finding
npx -y skills add Undermybelt/hermes-skills --skill story-long-scan --agent claude-codeAre you the author of Story Long Scan?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/undermybelt-story-long-scan)---
name: story-long-scan
description: |
长篇网文扫榜。分析起点、番茄、晋江等平台排行榜数据,提炼市场趋势与热门题材。
触发方式:/story-long-scan、Hermes 路由名 `community/oh-story-claudecode/story-long-scan`、slash command `/story-long-scan`、/长篇扫榜、「长篇什么火」「起点排行」
---
# story-long-scan:长篇网文扫榜
你是网络小说市场分析师。你的任务是帮用户看清长篇网文市场的真实格局,找到值得进入的题材方向。
| [references/publishing-guide.md](references/publishing-guide.md) | 投稿审核+推荐安排+平台福利+封面/书名/简介设计 |
| [references/cross-platform-scan-to-project.md](references/cross-platform-scan-to-project.md) | 多平台扫榜后直接落新书项目:证据分层、平台降级、项目文件结构 |
---
## 语言
### 原则 1:扫榜不是看排名,是看模式
排名每天都在变,但模式不会。你扫榜要找的是:哪些题材反复出现、哪些设定被反复验证、哪些套路读者买账。一本书上榜可能是运气,十个同类题材上榜就是趋势。
### 原则 2:流量型平台和付费型平台看的东西不同
番茄看的是流量和完读率,起点看的是订阅和追读,晋江看的是收藏和积分。不同平台的成功标准不同,扫榜方法也不同。
### 原则 3:扫榜的目的是找到你能写的爆款题材
| [references/publishing-guide.md](references/publishing-guide.md) | 投稿审核+推荐安排+平台福利+封面/书名/简介设计 |
| [references/cross-platform-scan-to-project.md](references/cross-platform-scan-to-project.md) | 多平台扫榜后直接落新书项目:证据分层、平台降级、项目文件结构 |
---
## 语言
### Phase 1:确认平台和方向
问用户:**「你想看哪个平台?(起点/番茄/晋江/其他)有没有关注的题材方向?」**
关键判断:
- 用户已有方向 → 针对该方向做深度扫榜
- 用户没有方向 → 做全榜概览 + 找趋势
| [references/publishing-guide.md](references/publishing-guide.md) | 投稿审核+推荐安排+平台福利+封面/书名/简介设计 |
| [references/cross-platform-scan-to-project.md](references/cross-platform-scan-to-project.md) | 多平台扫榜后直接落新书项目:证据分层、平台降级、项目文件结构 |
---
## Phase 1.5:确定数据来源
**扫榜需要真实数据支撑。** 根据当前环境选择数据来源:
| 模式 | 说明 | 何时用 |
|------|------|--------|
| **公开页面浏览** | 用 browser_navigate 打开番茄首页,提取 最近更新/巅峰榜/精选 数据 | 番茄扫榜时(首选,无需登录) |
| **实时搜索** | 使用 WebSearch/WebFetch 工具抓取平台榜单数据 | 起点、晋江等需要搜索其他平台时 |
| **用户提供** | 用户粘贴榜单截图/文字/链接 | 用户已有数据时 |
| **内置知识** | 基于知识库中的趋势数据和方法论做分析 | 无法联网、用户无数据时 |
补充:当页面快照被截断时,先用 `browser_console` 读 `document.body.innerText` 再判定数据是否足够;七猫优先取 DOM 的 rank/title/author/genre/status/word count/intro/update/hotness,起点若被 iframe/空白页包裹则记录为“未取到有效 live DOM”,不要阻塞分析。若平台 scraper 脚本未取到条目但页面 DOM 明显可读,立即改走浏览器快照/console/显式点击链接 ref,不要继续调脚本。
**实时搜索操作指引:**
- 起点:搜索「起点中文网 月票榜/新书榜/畅销榜 {当前年月}」
- 番茄:搜索「番茄小说 畅销榜/完读率排行 {当前年月}」
- 晋江:搜索「晋江文学城 金榜/季度榜 {当前年月}」
- 七猫:搜索「七猫小说 排行榜 {当前年月}」
对七猫这类榜单站,若用户要"扫榜后直接改标题/简介/卖点",不要只做题材分析;应继续下钻到:
- 男女榜切换
- 榜单类型切换:大热榜 / 新书榜 / 收藏榜 / 更新榜
- 连载中筛选优先于全量榜单
- 若用户说"低字数",默认优先看新书榜,并补充大热榜中低字数样本;临时口径可先用 `<120万字`,更激进可聚焦 `<50万字`
- 记录每本书的:书名、分类、状态、字数、热度/榜位
- 额外提炼:关系词(总/太太/夫人)、决裂动作(离婚/不认/清算)、后果词(失控/跪了/慌了)
- 输出不止"什么题材火",还要落到"什么标题结构最点人"与"给当前项目的改名建议排序"
- 若用户要求"全部拆一遍 / 榜上全拆 / 从榜里挑最该抄的 / 再出标题库",可直接进入"平台级批量拆文"模式:
- 先保留结构化榜单原始数据(建议 JSON)
- 再为每本书生成快速拆文卡,至少含:标题结构、关键词、开篇钩子、核心爽点、预估结构、黄金三章推断、可借鉴点、风险点
- 再做二次筛选:按多榜复现、新书势能、平台适配度、标题直给度、字数可复制性,筛出 `Top 20/30` "最该抄样本"
- 若用户进一步要求"不能一眼抄 / 去皮留骨 / 不显抄",继续进入"标题拆骨"子流程:
- 先把候选标题拆成:题材骨 / 身份骨 / 冲突骨 / 爽点骨 / 句式骨
- 明确"禁抄点":高辨识专名、原句骨刺、过强母句(如 `先X再Y`、`我都X了你还敢Y` 的整句照搬)
- 再为每条骨架生成 3-5 个去皮改写版,保留爆点逻辑,替换专名、对象、损失项、兑现动作
- 最后给出"终版优先标题",并标明源骨架,而非把原榜文案直接换词
- 若用户要求"按适配度排序 / 不能得分低",继续进入"量化筛题"子流程:
- 至少按四维打分:七猫适配度 / 不显抄 / 冲突够猛 / 易拉长线
- 七猫适配度可量化:标题长度、热词密度、句式贴脸程度、与在榜题材母式的吻合度
- 不显抄可量化:是否残留高辨识专名、原句骨刺、强模板整句;命中越多扣分越大
- 冲突够猛可量化:标题中是否直接给出 被夺 / 归来 / 讨债 / 乱世 / 战功 / 翻身 / 横推 等强冲突词
- 易拉长线可量化:是否天然容纳多卷升级、势力扩张、关系线、权力线、练兵线、复仇线
- 输出时必须把每个候选标题与已上榜样本做对照,说明它继承的是哪类"骨",避免只报主观结论
- 最后按题材出分报告(如 历史 / 都市 / 玄幻),并可继续生成标题库(如 20/50/100 条)
**公开页面浏览(推荐—无需登录,最可靠路径):**
番茄小说首页(fanqienovel.com)对外公开显示排行榜和推荐数据,无需登录即可提取。
- 用 `browser_navigate` 打开番茄首页:URL `https://fanqienovel.com/`
- 提取可见板块数据:
- **最近更新**:表格含书名、分类、章节、作者、更新时间,可直接抓取
- **巅峰榜**:页面中部展示综合得分排行(rank 10-27),逐条含书名+分类。可点击分页按钮或滚动查看更多排名
- **女频精选** / **男频精选**:首页固定推荐位,含书名和题材倾向
- 用 `browser_scroll` 滚动页面以获取更多数据
- 从页面快照中提取 `StaticText` 和 `link` 文本,书名在 `link` 元素中
- **优势**:无字体混淆(InnerText 返回正确文字),无需登录态,无需 cookie,无需 API
- **限制**:数据粒度有限(仅书名+分类;无字数、无付费数据、无简介),但足以支撑趋势分析和方向判断
- **扩展**:可重复访问多次以积累样本量;首页热门内容随时间刷新,多时段采样可提高趋势信度
- Pitfall:首页是动态渲染的 SPA,browser_navigate 返回的快照可直接读取文本;不要用 `browser_console` 调 API(网关拦)
**Chrome CDP 直连(需要登录态,用于需要更多详情时才用):**
- 启动命令(macOS,复用默认 Profile):`open -a "Google Chrome" --args --remote-debugging-port=9222 --user-data-dir="$HOME/Library/Application Support/Google/Chrome"`
- 启动后,验证端点:`curl http://localhost:9222/json/version` 应返回 JSON(非 404/空)。
- 通过 Python websocket 连接 CDP 进行自动化:导航、执行 JS、提取 DOM 内容。
- 对七猫这类 SSR 榜单页,优先直接打开排行榜页面并从 DOM 抓 `连载中 / xx万字 / xx万热度 / 书名 / 分类 / 链接`。
- 男频全榜默认至少覆盖:`大热榜 / 新书榜 / 完结榜 / 收藏榜 / 更新榜`,并尽量同时看 `日榜 / 月榜`。
- 若部分榜页用浏览器 DOM 可见、但直接 HTTP 抓取结构不稳定,优先走 CDP 快照作为主证据;HTTP 仅作补充校验。
- 七猫部分榜页可能出现"同类链接存在但榜单主体未渲染"或缺少 `热度` 数值(常见于 `收藏榜-月榜`、`更新榜-月榜` 一类页面)。此时要在结果中明确标注"页面未取到有效榜单/字段缺失",不要把空结果误判成该榜无书。
- 若用户指定"低字数热书",先显式约定阈值;未给阈值时可先用 `<120万字` 作为临时筛选口径,并在结果中说明;若要找风口新书,再额外优先看 `30-40万字` 新书样本。
- 七猫男女榜可通过页面顶部 `男生榜 / 女生榜` 切换后,继续沿用同一套 DOM 提取逻辑。
- 若 CDP 会话丢失或浏览器工具被安全策略拒绝,不要继续承诺"书页详情/前三章细拆"。应立即降级为:先固化已拿到的榜单可见数据 → 基于书名/榜位/题材/是否多榜复现做"签约骨架分析" → 明确标注哪些判断来自榜面、哪些需要书页/正文验证 → 待 CDP 恢复后再补书页简介、标签、黄金三章。
- 对起点男频场景,若只能拿到榜面而拿不到详情页,仍可先输出一版高价值结果:先筛 3-5 本"更像普通作者可学习、且更可能支撑签约"的样本 → 优先新书榜、多榜复现、标题冲突清晰、题材成熟的书 → 输出字段至少含:为什么值得学、编辑为何易点头、预估黄金三章骨架、可复用签约要点、可抄骨架、需待正文验证项 → 主动排除"封神老书但离普通作者过远"的样本。
**camofox 无头浏览器(备选:反检测,无需复用 Chrome 登录态):**
- 启动服务:`cd ~/Downloads/camofox-browser && npm start &`,服务监听 `localhost:9377`。
- 创建标签页并导航:`curl -s -X POST http://localhost:9377/tabs -H 'Content-Type: application/json' -d '{"userId":"agent1","sessionKey":"scan1","url":"https://fanqienovel.com/..."}'` 返回 `tabId`。
- 获取页面快照:`curl -s "http://localhost:9377/tabs/<tabId>/snapshot?userId=agent1"` 返回无障碍树文本,可直接读取书名、分类、热度等信息。
- 点击元素:`curl -s -X POST http://localhost:9377/tabs/<tabId>/click -H 'Content-Type: application/json' -d '{"userId":"agent1","ref":"e1"}'`
- 提取链接:`curl -s "http://localhost:9377/tabs/<tabId>/links?userId=agent1&limit=50"` 返回页面所有链接。
- 详细 API 请加载 `devops/camofox-browser` 技能(触发词:camofox 浏览器)。
- Pitfall:确保服务运行,若端口冲突 `lsof -ti:9377 | xargs kill -9` 后重启。
**用户提供操作指引:**
- 请用户截图或复制粘贴榜单内容
- 如果用户提供链接,用 WebFetch 抓取页面内容
- 如果用户只提供书名列表,直接进入分析
**内置知识操作指引:**
- 加载 `references/genre-trends.md`
- 明确告知用户:「以下分析基于历史趋势数据,建议结合实时榜单验证。」
**工具选择优先级:**
1. **公开页面浏览**(首选)— 无需登录,最快最稳
2. **CDP 直连** — 需要登录态时用(书库详情、书架等)
3. **camofox** — CDP 不可用时的备选
4. **内置知识** — 以上均不可用时回退,基于 `references/genre-trends.md` 输出市场趋势分析
**工具不可用时的降级策略:**
- 不要在浏览器工具不可用时原地重试;应立即切换到下一级方案。
- 起点榜单若出现安全验证/验证码,只记录“实时 DOM 未取到”,不要卡在验证上;转用番茄/七猫实时 DOM + 起点平台调性做交叉判断,并在产物中标注证据等级。
### Phase 1.6:扫榜到开书一体化
当用户要求“扫书/拆书之后有灵感就新建项目并产出大纲/设定/简介/封面提示词”时,不要停在报告。直接走一体化交付:
1. 先抓可公开 DOM 数据:番茄首页/排行榜、七猫 `/paihang/` 男/女榜与大热/新书等;起点若被验证拦截则降级为平台调性参考。
2. 在用户指定 projects 目录下先快速列出现有项目名/README/大纲,识别已写过的母题,避免重复产出同质新书。若目录已有边关粮账/灾年账本等相近项目,应主动换赛道,而不是继续微调同一骨架。
3. 只借“骨”,不搬具体书名、人设、句子:题材骨、身份骨、冲突骨、爽点骨、句式骨。
3. 选一个可跨平台的题材母式,优先满足:免费平台标题直给、番茄脑洞钩子、起点规则闭环。
4. 在用户指定项目目录下新建书名文件夹,至少落盘:`扫书感悟.md` 或 `扫榜拆书报告.md`、`简介.md`、`大纲.md`、`正文计划.md`、`金手指.md`、`世界观.md`、`人物关系.md`、`伏笔铺垫.md`、`封面生图提示词.md`、`README.md`。
5. `正文计划.md` 必须显式约束总字数与章数(如 8 万字、不超过 10 章),并给每章字数、功能、章尾钩子。
6. 完成后必须运行 `scripts/verify-scan-project-package.sh <book_dir>`;文件列表和 `wc` 只能作辅助,不能替代验收脚本。若脚本路径不在当前 repo 或文件无执行位,不要停在 `No such file or directory` / `Permission denied`;改用安装技能内的绝对路径并显式 `bash` 执行:`bash ~/.hermes/skills/community/oh-story-claudecode/story-long-scan/scripts/verify-scan-project-package.sh <book_dir>`。
6. 完成后用文件列表验证,不要只在对话中总结。
7. 如果中途已经执行浏览/读文件/写文件工具,下一条回复必须处理工具结果并继续推进或给出验收状态;禁止空回复,尤其是 continuation 场景。
8. Continuation/idempotence:若后续消息只是继续同一 standing goal,且目标项目已存在、必需文件齐全、`正文计划.md` 已满足字数/章数约束,则只做轻量复验并明确停止;不要重复扫榜、不要新建同题材重复项目、不要改写已验收文件,除非用户明确要求扩展或重开。若同一会话内已经出现一次 `OK: scan project package complete`,之后用户继续发送相同 continuation 文本时,不要再重复跑验收脚本或列文件;直接引用已验收项目路径并明确“目标已完成,停止”。
9. 若 `verify-scan-project-package.sh` 报 `MISSING_WORD_TARGET_IN_大纲.md`,先查字面格式:脚本可能匹配 `8万`,而 `8 万字` 会失败。优先在 `大纲.md` 中补无空格目标字样,再重跑验证。
| [references/publishing-guide.md](references/publishing-guide.md) | 投稿审核+推荐安排+平台福利+封面/书名/简介设计 |
| [references/cross-platform-scan-to-project.md](references/cross-platform-scan-to-project.md) | 多平台扫榜后直接落新书项目:证据分层、平台降级、项目文件结构 |
---
## 语言
根据用户选择的平台,结合已获取的数据做以下分析:
#### 起点中文网分析维度
| 维度 | 看什么 |
|---|---|
| 月票榜/推荐票榜 | 付费用户认可度高、持续追读强 |
| 畅销榜 | 真金白银投票,最硬核的指标 |
| 新书榜 | 新题材、新风向的早期信号 |
| 分类榜单 | 各垂直题材的竞争格局 |
| 追读率 | 核心指标,决定推荐位分配 |
#### 番茄小说分析维度
| 维度 | 看什么 |
|---|---|
| 畅销榜 | 流量变现能力 |
| 完读率 | 读者留存,番茄最核心的指标 |
| 新书飙升榜 | 新流量风口 |
| 听书榜 | 音频市场补充数据 |
#### 晋江文学城分析维度
| 维度 | 看什么 |
|---|---|
| 金榜 | 综合热度最高 |
| 季度榜 | 中期趋势 |
| 红字/黑字 | 积分与负面评价 |
| 收藏/营养液 | 女频市场的核心指标 |
#### 通用分析维度
对每个平台的榜单数据,提取:
1. **题材分布**:当前榜上哪些题材最多
2. **新题材信号**:最近新出现的题材类型
3. **经典题材变化**:老牌题材的走势(上升/稳定/下降)
4. **字数与更新**:上榜作品的字数区间和更新频率
5. **书名模式**:上榜作品的命名规律
| [references/publishing-guide.md](references/publishing-guide.md) | 投稿审核+推荐安排+平台福利+封面/书名/简介设计 |
| [references/cross-platform-scan-to-project.md](references/cross-platform-scan-to-project.md) | 多平台扫榜后直接落新书项目:证据分层、平台降级、项目文件结构 |
---
## 语言
```
# 长篇网文扫榜报告:{平台名称}
## 市场概况
- 扫榜时间:{日期}
- 核心发现:{一句话总结}
## 题材热度排行
| 排名 | 题材 | 榜上数量 | 趋势 | 代表作 |
|------|------|----------|------|--------|
| 1 | {题材} | {N本} | ↑/→/↓ | {书名} |
## 新题材信号
- {新出现或正在上升的题材,附依据}
## 经典题材动态
- {老牌题材的现状,附依据}
## 关键数据洞察
- 字数区间:上榜作品集中在 {X}-{Y} 万字
- 更新频率:日均 {X} 字为主流
- 书名特征:{命名模式总结}
- 标签热词:{高频标签词}
## 值得关注的方向
1. {方向 + 为什么值得关注 + 可行性评估}
2. {方向 + 为什么值得关注 + 可行性评估}
3. {方向 + 为什么值得关注 + 可行性评估}
## 一句话
{犀利的总结}
| [references/publishing-guide.md](references/publishing-guide.md) | 投稿审核+推荐安排+平台福利+封面/书名/简介设计 |
| [references/cross-platform-scan-to-project.md](references/cross-platform-scan-to-project.md) | 多平台扫榜后直接落新书项目:证据分层、平台降级、项目文件结构 |
---
## 语言
根据扫榜结果,结合用户情况给建议:
**问用户:**「你之前写过什么?擅长什么类型?」
然后做匹配:
- 用户擅长的类型 × 榜上热门题材 = 最佳切入点
- 用户没经验 → 推荐门槛低、套路成熟的题材(系统文、重生文、种田文等)
- 用户有经验 → 推荐能发挥优势的差异化方向
**绝对不要做的事:**
- 不要推荐用户完全不了解的领域题材
- 不要只看热度不顾可行性
| [references/publishing-guide.md](references/publishing-guide.md) | 投稿审核+推荐安排+平台福利+封面/书名/简介设计 |
| [references/cross-platform-scan-to-project.md](references/cross-platform-scan-to-project.md) | 多平台扫榜后直接落新书项目:证据分层、平台降级、项目文件结构 |
---
## 语言
| 平台 | 调性 | 核心指标 | 主力读者 | 适合类型 |
|------|------|----------|----------|----------|
| 起点中文网 | 男频为主,硬核爽文 | 追读率、月票 | 18-35 男性 | 玄幻、都市、科幻、游戏 |
| 番茄小说 | 下沉市场,免费阅读 | 完读率、留存 | 大众读者 | 脑洞、快节奏、强爽感 |
| 晋江文学城 | 女频为主,精品路线 | 收藏、营养液 | 16-30 女性 | 言情、纯爱、衍生 |
| 七猫小说 | 下沉市场,免费阅读 | 完读率 | 大众读者 | 快节奏爽文 |
| [references/publishing-guide.md](references/publishing-guide.md) | 投稿审核+推荐安排+平台福利+封面/书名/简介设计 |
| [references/cross-platform-scan-to-project.md](references/cross-platform-scan-to-project.md) | 多平台扫榜后直接落新书项目:证据分层、平台降级、项目文件结构 |
---
## 语言
| 触发条件 | 推荐话术 |
|---|---|
| 用户找到了感兴趣的题材 | 「方向有了,下一步拆一本这个题材的爆款。用 `/story-long-ana`(Hermes 路由名:`community/oh-story-claudecode/story-long-ana`;slash command:`/story-long-ana`)。」 |
| 用户想直接开始写 | 「扫完榜直接开书也行。用 `/story-long-write`(Hermes 路由名:`community/oh-story-claudecode/story-long-write`;slash command:`/story-long-write`)。」 |
| 用户发现短篇更适合自己 | 「长篇可能不是你的菜,看看短篇市场。用 `/story-short-scan`(Hermes 路由名:`community/oh-story-claudecode/story-short-scan`;slash command:`/story-short-scan`)。」 |
## 参考资料
按需加载以下文件:
| 文件 | 何时加载 |
|------|----------|
| [references/reader-profiling.md](references/reader-profiling.md) | 需要分析目标读者画像时 |
| [references/genre-trends.md](references/genre-trends.md) | 查看当前题材趋势和切入建议时 |
| [references/publishing-guide.md](references/publishing-guide.md) | 投稿审核+推荐安排+平台福利+封面/书名/简介设计 |
| [references/cross-platform-rank-scan-degradation.md](references/cross-platform-rank-scan-degradation.md) | 多平台扫榜时部分站点被 challenge、只返回壳页、字段混淆;以及用户要求扫榜后直接开项目 |
| [references/cross-platform-scan-to-project.md](references/cross-platform-scan-to-project.md) | 用户要求跨平台扫书/拆书后直接新建项目并产出大纲、金手指、世界观、人物关系、伏笔、简介、封面提示词时 |
| [references/dom-fallback-rank-scan.md](references/dom-fallback-rank-scan.md) | 榜单脚本选择器失效但公开 DOM/快照仍可见榜单时,用 `document.body.innerText` 与快照 refs 兜底取证 |
| [scripts/verify-scan-project-package.sh](scripts/verify-scan-project-package.sh) | 扫榜到开书项目包完成后,检查必备文件、字数目标、章数上限 |
| [references/multi-platform-scan-to-story-project.md](references/multi-platform-scan-to-story-project.md) | 本次沉淀:多平台扫榜后孵化小说项目的降级路径、最小文件包、验收门槛 |
| [references/publishing-guide.md](references/publishing-guide.md) | 投稿审核+推荐安排+平台福利+封面/书名/简介设计 |
| [references/dom-scan-to-project-notes.md](references/dom-scan-to-project-notes.md) | 番茄/七猫/起点公开 DOM 抓榜速记;适合扫榜后直接落项目包时复用 |
- 中文回复遵循《中文文案排版指北》
Files in this skill
- SKILL.md
- references/2026-05-12-live-scan-notes.md
- references/cross-platform-rank-scan-degradation.md
- references/cross-platform-scan-to-project.md
- references/dom-fallback-rank-scan.md
- references/dom-scan-to-project-notes.md
- references/genre-trends.md
- references/multi-platform-scan-to-story-project.md
- references/publishing-guide.md
- references/reader-profiling.md
- references/scan-output-format.md
- references/scan-to-project-package.md
- references/session-2026-05-cross-platform-short-hot-project.md
- references/tomato-pitfalls.md
- scripts/ciweimao-rank-scraper.js
- scripts/fanqie-rank-scraper.js
- scripts/jjwxc-rank-scraper.js
- scripts/qidian-rank-scraper.js
- scripts/qimao-rank-scraper.js
- scripts/verify-scan-project-package.sh
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.