git:20260923.87d2076 to git:20260924.3c56c94
68 added, 129 removed. Audit A to A.
---
name: submit-producti-directories-merged
- description: 外链自动提交合并版:在已授权范围内批量处理产品目录投递和一对一官方 Contact 邮件申请,包含去重、验证、结果取证与可恢复审计。用于执行或审计 SPD V1 外链投递任务。
+ description: 外链自动提交合并版:在当前授权范围内处理目录投递和一对一官方 Contact 邮件申请,包含去重、验证、结果取证与可恢复审计。
---
- # 外链自动提交合并版 — SPD IDP V1
-
- ## Version identity
-
- - Canonical name: `submit-producti-directories-merged`.
- - Chinese name: 外链自动提交合并版。
- - Invocation: `$submit-producti-directories-merged`.
- - Optimize for queue throughput, repeatability, verification handling, and recovery across large source lists.
- - Apply a fast legitimacy gate, not the deeper editorial and referral-value analysis used by `$submit-product-directories-v2-quality`.
- - Route campaigns requiring careful site selection, durable-placement analysis, or SEO-quality evidence to V2 Quality.
- - Before planning or browser work, also read [SKILL-LOCAL-IMPROVEMENTS.md](SKILL-LOCAL-IMPROVEMENTS.md). Its local workflow additions apply alongside this core skill; where an instruction conflicts with platform policy or the user's current request, follow the higher-priority instruction.
-
- ## Core philosophy (user-confirmed 2026-08-26)
-
- SPD IDP is **not** about full automation. Its core is: **efficiently batch-execute the simple, automatable outbound-link promotion work, then filter out the complex websites that require human execution, and hand them over to a human wrap-up at the end of the batch.** This raises batch throughput and improves the human-machine interaction experience.
-
- - The machine's role is a "sweeper": run the whole automatable range (direct forms, routine registration/login and low-risk verification) at batch speed, with capture, judging, and evidence.
- - The machine also acts as a filter: surface complex sites (strong anti-automation, payment, forced reciprocal linking, editorial-content or account-ownership anomalies, unreachable) into a manual queue, keeping the tab and field card for the human.
- - The human only handles the filtered complex items, in a batched wrap-up at the end, guided by field cards — not interrupted site by site.
-
- ## Context-compaction recovery
-
- After any context compression or summary-based continuation, re-read this `SKILL.md` and [SKILL-LOCAL-IMPROVEMENTS.md](SKILL-LOCAL-IMPROVEMENTS.md) before resuming. Re-inspect the current campaign workspace: its relevant product materials, configs, website list, records, evidence, and any in-progress queue state. Re-establish the last verified state from files and evidence rather than relying on the summary alone. If workflow confirmation or authorization is absent or uncertain after recovery, present the required workflow again and obtain confirmation before continuing. Do not take irreversible actions until this recovery is complete. After recovery, also pass the execution checklist below against the current batch before acting.
-
- ## Mandatory execution checklist (local EXEC-CHECKLIST.md)
-
- Reading the skill files is **not** application. Before the final action on each site, and again after judging the outcome, pass the [EXEC-CHECKLIST.md](EXEC-CHECKLIST.md) items (reachability, exposure identification incl. project entries, do-not-stop-at-paid paths + redirect verification, on-site dedup, login ladder, fingerprint-browser master-client prohibition, flow/media pre-checks, controlled-form return-read, fail-fast, backend check, tab hygiene, truthful state) and record `checklist PASS/FAIL` (with the reason for any FAIL) in that site's record; do not submit before the checklist passes. New lessons must be added to the checklist as check items — not just to long-form documents.
-
- ## Mandatory workflow confirmation
-
- At the beginning of every separate use of this skill, ask the user to confirm the workflow below in order. Do not treat confirmation from an earlier use as continuing authorization. If the workflow changes, present it again and obtain a new confirmation.
+ # 外链自动提交合并版
- 1. Confirm the internal materials: verified product profile, brand rules, contact and credential aliases, an authorized signed-in Gmail sender alias for any contact-email lane, approved copy, and compliant image assets.
- 2. Confirm the technical path and available tools: browser profile, CDP port, backend, automation boundaries, and reusable tools/scripts. Also ask the user whether to drive automation with **CDP (DevTools direct connection, recommended)** or **CU (Computer Use desktop control)**; do not start until the user chooses.
- 3. Confirm the required computer-system permissions and authorizations: for example browser control, screenshots/accessibility, workspace read/write access, authorization to call Feishu/Lark CLI for email verification, and—when contact-email outreach is in scope—authorization to send from the verified signed-in Gmail sender alias.
- 4. Only after steps 1–3 are confirmed, request or accept the website list and begin the work.
+ ## 适用范围
- Standing authorization in local §18.4 covers ordinary registration/login and no-cost marketing-subscription opt-ins for future SPD IDP work; do not ask again for those actions unless the user revokes it. Official-contact email outreach is allowed only when the current batch authorization includes it and names the Gmail sender alias. Payment, recurring charges, forced reciprocal changes, account-ownership anomalies, strong anti-automation bypass, bulk mail, automatic follow-ups, and final publication outside the approved scope remain outside that standing authorization.
+ 本技能用于受控批量处理产品目录、资料页、项目展示页和一对一官方 Contact 邮件申请。目标是高效完成简单、可验证的动作,并把需要人工处理的页面完整交接。
- Do not start preflight, open a browser, enter data, submit forms, or modify campaign records until the user has confirmed the other applicable workflow steps.
+ 不适用于付费链接、强制互链、虚构资料、群发、自动跟进、绕过验证码、请求对方发布文章,或任何超出当前授权的动作。
- ## Load controls
+ 本公开版不得携带或示例化任何任务专属的品牌、域名、账号、联系人、凭据、本机路径、历史站点或执行结果。
- 1. Read the verified product profile, brand rules, contact and credential aliases, approved assets, source list, batch authorization, and existing record.
- 2. Read [references/workflow.md](references/workflow.md) before planning or browser work.
- 3. Read [references/status-model.md](references/status-model.md) before writing or auditing records.
- 4. Read [references/computer-use-bitbrowser.md](references/computer-use-bitbrowser.md) before controlling BitBrowser.
- 5. Copy [assets/submission-record-template.md](assets/submission-record-template.md) when no V1 Batch record exists.
+ ## 每批次开始前
- Never invent product, company, founder, pricing, address, launch, ownership, contact, or legal facts. Keep optional unknowns blank and block required unknowns.
+ 每个批次都必须重新确认以下事项;不得继承其他任务的资料、登录状态或长期授权。
- ## Apply the batch legitimacy gate
+ 1. 已核实的产品资料:公开名称、规范网址、可用文案、图片、类别和联系方式别名。
+ 2. 可执行范围:站点清单、允许的入口类型、是否允许登录、无费用营销订阅、官方 Contact 邮件,以及授权有效期。
+ 3. 自动化边界:选用 CDP(浏览器调试协议直连)还是 CU(Computer Use,桌面操控);确认可用浏览器、已授权账号和必要权限。
+ 4. 记录与证据:读取已有记录,确认本批次的授权引用和保存位置。
- Reject or separate any route that is irrelevant to the product, unavailable, unreleased-only, paid-link-only, **forced-reciprocal**, or prohibited for automated form work. An optional reciprocal-link field or optional reciprocal program is not a blocker: keep it blank unless a separate authorization covers providing it, and continue the ordinary free submission path. Do not select sites because they promise dofollow links, ranking gains, DA/DR, or backlink volume.
+ 只有当前批次明确授权时,才可登录、注册、勾选无费用营销订阅或发送官方 Contact 邮件。付费、自动续费、捐赠、强制互链、账号归属异常、强反自动化绕过、群发和自动跟进始终需要单独授权。
- Use only the exact brand, product name, or naked canonical URL as public link text. Never request dofollow treatment or use repeated commercial exact-match anchors.
+ ## 读取资源
- ## Build the queue
+ 执行前阅读以下文件:
- 1. Normalize hostnames and submission routes. Strip tracking parameters from the record while preserving required route parameters in controlled evidence.
- 2. Derive an idempotency key from platform domain, product canonical ID, account alias, and route.
- 3. Deduplicate before opening the browser. Never execute an idempotency key that is already submitted, awaiting approval, published, or outcome unknown.
- 3b. **Runtime on-site dedup (local §11.1):** before executing any site, first use the site's real native search control to search the official product/brand spelling, then its observed spelling and word-order variants, canonical URL (with and without a trailing slash), and bare hostname. For every query, capture the entered term, trigger action, result URL, result count, and visible candidate titles; do not treat an untriggered control, a stale page, or an unobserved asynchronous result as a no-result search. Also check account-backend records (My Listings/Submissions/drafts) and recent/category listings. Inspect every candidate result's outbound destination after URL normalization, rather than relying on title-text equality. If an entry resolves to the canonical hostname or canonical URL, record `duplicate — no action` with the query/result evidence and skip. If the required duplicate check cannot be proven complete, record `Duplicate check: inconclusive — user-authorized direct attempt`, the blocker, evidence, and the batch authorization reference; then complete one authorized final submission attempt, using the native duplicate receipt as outcome evidence. This exception never permits a retry: an ambiguous result still requires backend, mailbox, and public-page checks. A user-confirmed existing entry is sufficient duplicate evidence for the current batch and must not be rechecked or overridden automatically.
- 4. Assign stable queue IDs and execution shards. Treat shard size and maximum active tabs as operational settings, not SEO safety thresholds.
- 5. Classify every site into `direct form`, `account required`, `official-contact email`, `manual verification`, `email verification`, `paid/reciprocal`, `unavailable`, `ineligible`, or `unknown`.
- 6. Use batch-scoped authorization only when it names the allowed actions, source-list scope, approver alias, approval time, and expiry. Contact-email outreach must additionally name the authorized Gmail sender alias. Payments, reciprocal-site changes, DNS changes, and publication outside a directory require separate authorization.
+ - [EXEC-CHECKLIST.md](EXEC-CHECKLIST.md)
+ - [references/workflow.md](references/workflow.md)
+ - [references/status-model.md](references/status-model.md)
+ - [assets/submission-record-template.md](assets/submission-record-template.md)
- ## Discover verification, fully prefill, and preserve the handover page
+ 没有记录时,从模板复制一份。读取文件不等于执行:每站最终动作前和结果判断后,都必须通过检查单并记录 `checklist PASS/FAIL`。
- 1. Run a read-only preflight over each shard before entering product-listing fields.
- 2. Identify the earliest native CAPTCHA, Turnstile, image code, email check, login, or similar safeguard, but do not leave a discovered verification form blank.
- 3. When verification cannot be completed automatically, fill every applicable field with verified information, upload required compliant media, apply the standing no-cost marketing opt-in where present, re-read the values, and preserve the current browser tab for the manual queue. Leave only unknown or inapplicable fields blank, explain them in the record, and never close that handover tab.
- 4. After the user completes the queue, recheck token validity and process short-lived tokens first.
- 5. Do not hold more active challenge tabs than the configured browser capacity.
+ ## 建队列与基础边界
- ## Find the current submission entry point
+ 1. 规范化站点域名和投递路由,删除记录中的跟踪参数;必须保留的路由参数放入受控证据。
+ 2. 以“平台域名 + 产品标识 + 账号别名 + 路由”生成幂等键。已有 `submitted`、`awaiting approval`、`published` 或结果不明的同一幂等键不得重新执行。
+ 3. 先做可达性、相关性、真实性、免费路径和条款预检。付费链接、强制互链、无关分类、不可达或禁止自动化的路由直接分流。
+ 4. 可选互链字段保持为空;不得因为一个付费或合作入口就停止,应回到首页继续寻找正常的免费入口。
+ 5. 记录状态必须使用正式状态模型:`already_listed` 映射为 `duplicate — no action`;`captcha_wait` 映射为 `blocked — manual verification`。
- For every website, begin navigation at its canonical homepage and locate the current submission entry point from there, using the site's own navigation, footer, account area, or other on-site links. Treat a saved, searched, or previously recorded submission URL only as historical context; do not navigate directly to it for submission. Record the currently discovered route and evidence after locating it. If no current on-site route is found, classify the site accordingly and do not infer or construct a submission URL.
+ 不得虚构产品、公司、价格、地址、联系人、资质、数据、奖项、合作或法律事实。未知的可选字段留空;未知的必填字段应阻塞该站。
- **Brand-exposure identification (mandatory per site, local §19.1):** the goal is brand exposure, not only URL submission. At homepage discovery, check every executable exposure entry in the §19.1 checklist — business/merchant channel (preferred, §18.3), company/business/provider profile creation (incl. claim), directory/listing/URL-submit, free ad, press release, account-profile link slots, and **project/showcase/maker submission entries (submit the brand website homepage as a project — must be recognized and executed, not skipped)**. Separately identify any native short Note/status or long-form Post/Article editor only to record its §15 no-action classification; never use it as an execution type. Record the identified exposure entries and the chosen executable type per site. If a site has only a content editor, classify it `ineligible`; classify it `unavailable` only when it has no exposure entry at all.
+ ## 发现入口和内容面分类
- **Official-contact email route (local §19.2):** A public recipient address or `mailto:` found on the target site's official Contact, submit, resource-recommendation, tool-listing, or partnership page is an additional execution type only when the current batch authorizes one-to-one contact-email outreach. Verify the signed-in Gmail sender alias, search Gmail Sent/Drafts/All Mail and the campaign record before drafting, and send at most one tailored initial request per target domain and official contact route. No CC/BCC, mailing list, automatic follow-up, resend, or identity invention is permitted.
+ 每个站从规范首页开始,通过导航、页脚、登录后区域、站内搜索和真实链接/按钮发现当前入口。保存的深链只能作线索,不能直接当成有效投递路由。
- **Content-editor exclusion (local §15 prevails):** Any general form-filling, verification, CAPTCHA-handoff, draft, or final-action instruction does not apply to a classified short, long, or unknown content editor. Record its classification evidence only; never enter or prefill content fields, save a draft, hand it to a human, submit, or publish.
+ 优先识别可公开展示规范网址的非内容编辑器入口,例如商家通道、资料页、目录收录、项目展示、免费广告、新闻稿、账号资料链接位,以及当前批次已授权的官方 Contact 邮件入口。
- **Do not stop at paid/partner paths (local §7.8):** when a Partner / Sponsored / Paid submission path is encountered, mark that paid path only as paid/skipped and keep searching the homepage for an ordinary free entry; complete the homepage-visible entry and site-redirect verification (follow 301/302/JS redirects to the final URL, record the redirect chain, and return to the homepage when a deep link is redirected into a paid/partner page) before classifying the site.
+ 短贴、长文和无法可靠分类的内容编辑器一律不执行:分别记录 `short note — no action`、`long post — no action` 或 `unknown — no action`,不得填写内容、预填、保存草稿、交人工、提交或发布。界面写着 `Post` 不构成例外。只有内容编辑器的站点记为 `ineligible`。
- ## Execute forms and official-contact emails at scale
+ 只有常规手段找不到任何可验证入口时,才进行视觉兜底:按页面首、中、尾逐段查找,并记录每段结论。视觉发现后仍须核验真实控件、链接或最终路由;视觉判断不能替代路由、免费性、身份和条款预检。
- For an official-contact email, use the verified signed-in Gmail alias only after confirming the recipient's official-contact evidence, mailbox pre-send check, and one-message limit. Compose a concise, truthful, site-relevant request for voluntary inclusion of the canonical URL. `Send` is a final action: click it once, with no CC/BCC and no retry. A Gmail send receipt proves only that the email was sent—not delivery, reply, listing, link placement, or publication.
+ ## 站内去重是硬门槛
- 1. Process only sites that passed the legitimacy gate, authorization check, and verification prerequisite, and either cleared the duplicate check or recorded the user-authorized direct-attempt exception.
- 2. Reuse approved field variants by length and category, while preserving exact public brand spelling and truthful meaning.
- 3. Default authorization covers ordinary registration/login and no-cost, clearly labeled marketing newsletters or promotions. Select them where present unless the user revokes this standing authorization; never select a paid plan, purchase, or recurring-charge option.
- 4. Review plan, cost, URL, identity, category, agreements, uploads, and verification immediately before submission.
- 5. Run the preflight and outcome-capture protocol below before any final action. Submit sequentially within a browser profile and record the result before advancing the queue cursor.
- 6. Never retry an ambiguous final action, including Gmail `Send`. For a form, run two or three bounded, read-only receipt-check passes across the current page/target, account backend, mailbox, and public page. For an official-contact email, check the Gmail compose/thread, Sent/All Mail, and Drafts/Outbox two or three times without sending again. Record the checks and preserve the page for human inspection if no decisive receipt appears.
- 7. Save drafts, transient failures, manual actions, and terminal outcomes as distinct states so the campaign can resume without replaying completed work.
- 8. **Tab hygiene (user requirement):** before opening a new batch of tabs, close/clean unrelated leftover tabs from previous batches (probe pages, hung/dead pages, completed-site leftovers) to keep active tabs within browser capacity and avoid crashes; exception: keep manual-queue handover tabs (local §4/§8.1).
- 9. **Controlled-form persistence and fail-fast (local §7.9):** for React/controlled forms, re-read field values after filling and before submit to confirm name/description persisted (if reset, re-fill via execCommand/native typing); on the first explicit error receipt ("Something went wrong", page error) stop the site immediately, record `outcome_unknown`/blocked with evidence, and do not retry or continue; verify backend for the product draft/pending record as success evidence; do not occupy necessary tabs (e.g., Gmail) during mailbox steps, except an authorized official-contact email lane using the verified alias, and restore them if used.
- 9c. **CDP retry deliberation (local §6.2):** a timeout, exception, or empty CDP response never authorizes re-running the same script. Before one changed retry, record the exact failure and current page/target state, form at least two plausible causes, and run the least-risk read-only test that distinguishes them. Never retry a final submit/publish action; repeated or unexplained failure ends the site action.
- 9b. **Continuous batch, no staged reports (user rule, local §8):** run the whole batch without interim progress or staged reports; after every site is attempted (blocked tabs preserved) and the record audit is completed, deliver one unified per-site report (§20). Only hard gates requiring user authorization/decisions, or the user asking, justify interrupting the batch.
- 10. **Fingerprint-browser master-client prohibition (user hard rule, local §6.1):** never modify the fingerprint browser server's master client (BitBrowser manager/console main window) or its window/settings under any circumstances. After context compression, re-identifying the fingerprint browser must be read-only (profile dir / DevToolsActivePort / CDP port, attach to business tabs only). The only permitted client-side action is re-opening/restarting a crashed browser profile to restore the environment (user-authorized 2026-08-28). For any other necessary action, ask the user and obtain explicit authorization before acting.
+ 在填写任何字段前,用站点真实的搜索控件完成固定查询集:
- ## Submission outcome protocol — transient receipts, three-signal proof, and one-shot deferral
+ 1. 规范网址,包括带和不带尾部斜杠的变体;
+ 2. 裸域名;
+ 3. 官方品牌或产品拼写;
+ 4. 从标题或候选结果发现的词序、空格、连字符和大小写变体。
- This protocol is mandatory for every final form, native publish action, or authorized Gmail `Send`. Its purpose is to prevent a transient success page or Gmail toast from being missed by “click, sleep, read once”, and to prevent a generic thank-you page, stale tab, or unverified draft from being misreported as success. For an official-contact email, a Gmail send receipt proves only the send; it never proves delivery, reply, listing, link placement, or publication.
+ 每次查询都要记录输入词、触发方式、结果网址、结果数量和可见候选标题。还要检查账户后台、近期列表和分类列表。每个候选必须打开或读取其实际出站网址,再与规范网址和域名归一化比对;标题相同或不同都不能单独作为结论。
- ### 1. Preflight before action: decide first, then act
+ 命中规范网址或域名时,记录 `duplicate — no action` 并停止。站内去重能力不存在时,记录 `Duplicate check: not available — user-authorized direct attempt`;能力存在但无法完整核验时,记录 `Duplicate check: inconclusive — user-authorized direct attempt`。两种例外都必须有具体缺口、已完成检查、证据和当前批次的明确直接尝试授权,且只允许一次最终提交尝试。提交时出现“网址已存在”或同等回执,即判为重复并停止;不得重试。
- Perform a read-only preflight in this order:
+ ## 验证、预填与人工交接
- 1. **Reachability:** check the canonical homepage and the discovered current route with a bounded `curl`/HTTP or browser reachability check. Record status, redirect, timeout, and blocking behavior.
- 2. **Framework and route:** identify whether the current entry is a native form, account workflow, CMS/editor, or unsupported/unstable flow. Do not infer a route from a stale deep link.
- 3. **Login requirement:** determine whether login is required, whether an authorized account path is available, and whether the current browser profile is already authenticated. Do not start a form if the required identity path is unavailable or ambiguous.
- 4. **Category fit:** confirm that the site offers a truthful relevant category or content type for the product. If no honest category is available, classify the site before entering listing data.
- 5. **Hard-block decision:** if the site is unreachable, the framework cannot be operated within the authorized path, login is unavailable/ambiguous, the category is not a truthful fit, or the route requires payment, forced reciprocal linking, or a strong anti-automation challenge, record the exact blocker. For an unresolved verification on an otherwise reachable form, complete the verified-field prefill and retain the tab before deferring it; never hand over an empty form. Determine reciprocity from the native required state and explicit terms: optional reciprocal fields are left blank and do not block an otherwise eligible submission. Low-risk and ordinary native verification is attempted automatically first under the local §18.1 tiering (e.g., arithmetic fields, email codes/links, simple native click/slider steps ≤2/≤1 attempts); only after those attempts fail, or for strong anti-automation (reCAPTCHA/Turnstile/Cloudflare/complex image-selection), is it treated as an unresolved anti-automation challenge and deferred. This is a **one-shot decision**: do not keep probing or retrying the same site in the same batch.
+ 先做只读预检,识别登录、邮箱验证、验证码、上传和其他阻塞点。普通原生验证只可在当前授权范围内按有限次数尝试;不得绕过强反自动化验证。
- ### 2. `submitAndCapture`: capture the first state, not the eventual state
+ 若验证无法自动完成,先填写所有已核实且适用的字段,上传合规素材,并只在当前授权允许时选择无费用营销订阅。未知或不适用字段才可留空,且必须在记录中说明原因。保留原标签页、当前网址、目标标识和待办动作,绝不留下空表单或关闭交接页。
- Use a `submitAndCapture()`-style helper for the one authorized click. The helper must:
+ 完成验证后,先重新读取页面和短时效令牌状态,再继续已授权的下一步。不得通过修改浏览器管理客户端、账号设置或指纹配置来解决页面问题;这类改动需要单独的当前授权。
- - attach CDP network listeners before the click;
- - click the final submit/publish control once;
- - sample immediately at 0 ms and then at high frequency (roughly 100–200 ms) for a bounded capture window;
- - capture, for every sample, the target/tab ID, URL, title, visible native body text, form/action state, and timestamp;
- - preserve the **first state that leaves the form page** or shows a native success state, even if a 302/JS redirect immediately removes it;
- - use the submission request's `Network.responseReceived` event and `Network.getResponseBody` as the fallback when the DOM success state is transient or the tab navigates away;
- - never replace the captured first-success evidence with a later stale form, queue, or homepage read.
+ ## 自动化、重试与标签页纪律
- Do not use a long fixed sleep followed by a single page read as the primary evidence method. A later page read is only a bounded read-only supplement after capture, never a reason to click again.
+ CDP 报错、超时、空响应或找不到元素不等于可以重跑。每次受控重试前都要留下:
- ### 3. `judgeOutcome`: require three signals and apply negative vetoes
+ 1. 证据:精确错误、失败命令、当前目标、网址和页面状态;
+ 2. 假设:至少两个可区分的原因;
+ 3. 判别:能区分这些原因的最小只读检查。
- `judgeOutcome()` must evaluate the captured evidence using three independent signals:
+ 只有产生新证据、且下一次操作与上次实质不同,才允许一次受控重试。相同脚本、目标、参数和等待条件不得重复执行。最终 Submit、Publish 和 Gmail Send 零次重试。没有新假设、受控重试失败,或可能已经发生最终动作时,停止该站该动作并按事实记录。
- 1. **Navigation/state signal:** the URL or native route changes away from the original form, or reaches a known success/receipt/status route.
- 2. **Native positive signal:** the captured page or response contains explicit positive wording tied to the current submission, such as submission received, successfully submitted, posted, listed, or awaiting review. For an official-contact email, a native Gmail “Message sent” receipt or matching Sent copy is the positive signal. Generic “thanks” text without submission context is insufficient.
- 3. **Independent confirmation signal:** the network response body, account submission status, mailbox receipt, or public listing/page provides corroborating evidence for the same product and action. For an official-contact email, the matching Gmail Sent copy or conversation thread is independent confirmation of the send only. Record the strongest available evidence; a public listing proves `published`, while a receipt/account state may prove only `submitted` or `awaiting approval`.
+ 若当前授权允许,可对 CDP 无法得出明确结论的站点使用一次 CU 复核;CU 不能绕开一次最终动作、去重或验证码规则。打开新批次前关闭无关旧标签页,但必须保留人工交接页和结果不明页。
- All three signals must agree for a fully confirmed submission or email send. Apply a negative veto whenever the evidence contains an error, validation failure, “not submitted”, “not yet”, “pending action”, login failure, payment requirement, Gmail draft/outbox state, or other wording that contradicts success. If signals conflict or any required signal is absent, record the appropriate unknown or blocked/manual state; do not infer success from a click, cleared form, redirect to home, generic thank-you URL, draft, or user-visible navigation alone.
+ ## 表单、官方 Contact 邮件与最终动作
- ### 4. Ambiguous and blocked outcomes
+ 表单填写后要回读受控字段值,确认名称、描述、网址和必填项没有因页面刷新而丢失。上传完成前不得继续下一步。第一个明确页面错误立即停止该站,不做脚本盲重试。
- - A final action with no decisive result is never retried automatically. Perform two or three bounded, read-only receipt-check passes. For official-contact email, use Gmail compose/thread, Sent/All Mail, and Drafts/Outbox only; for forms, use the current target/page, account backend, mailbox, and public page as available. Record every pass, then retain the current page/target for manual inspection if no decisive receipt appears. These checks are evidence collection, never another Submit/Publish/Send click.
- - A hard blocker discovered during preflight or submission is classified once and moved to the manual/deferred queue with the blocker, current route, target/tab ID, completed prefill state, and required human action. Preserve that tab; continue with the next eligible site.
- - After a human completes a challenge or final action, verify the resulting receipt/status/public page without clicking submit again. User confirmation may be recorded as user-confirmed submission, but must remain distinct from independently captured `submitted` or `published` evidence.
+ 官方 Contact 邮件仅在当前批次明确授权、已核验 Gmail 发件别名、且收件人来自目标站官方 Contact/投稿/资源推荐/合作页面时可用。发送前在 Gmail Sent、Drafts、All Mail 和现有记录中按品牌、规范网址、目标域名和联系路由去重。每个目标域名和官方联系路由最多发送一封初始邮件;不得 CC/BCC、群发、重发、自动跟进或伪造身份。邮件只可请求对方自愿考虑收录规范网址,不得索要 dofollow、排名承诺、互链或内容发布。
- The reusable implementation may expose `submitAndCapture()`, `judgeOutcome()`, and a CDP network-response adapter such as `createNetworkCapture()`. The campaign record must retain the captured timestamps, URL/route, target/tab identifier, native receipt summary, independent confirmation source, negative-veto result, and final state.
+ 最终 Submit、Publish 或 Gmail Send 只点击一次。提交前启动结果捕获:立即采样网址、页面状态和原生文本,并在可用时读取网络响应。确认成功需要三类互相一致的信号:状态或路由变化、与当前动作相关的原生正向回执、以及后台/邮箱/公开页等独立确认。点击、跳转、清空表单、草稿或泛化感谢页都不算成功。
- ## Protect records
+ 最终动作后没有明确回执时,进行两到三轮只读核验。表单可查当前页、后台、邮箱和公开页;邮件只查撰写页或线程、Sent/All Mail、Drafts/Outbox。仍无回执时记录结果不明,保留页面供人工核验,绝不重投或重发。
- - Default recommendation: store aliases and controlled evidence IDs, not passwords, OTPs, recovery codes, cookies, OAuth parameters, magic links, raw session IDs, raw email addresses (including Contact recipients), phone numbers, or tokenized URLs.
- - Local-record policy (user-confirmed 2026-08-26): this deployment's machine has leak protection, and the user authorizes plaintext credentials to be stored in the local campaign record; keep credentials out of any record that will be shared outside this protected machine, and separate the shareable campaign record from controlled evidence in that case.
- - Treat a click, registration, draft, cleared form, or generic thank-you URL as insufficient submission evidence.
+ ## 记录、审计与交付
- ## Close and measure
+ 公开记录只能保存别名和受控证据标识,不得保存密码、一次性验证码、Cookie、会话标识、原始邮箱、电话号码、令牌化网址或其他敏感数据。记录必须以 `shareable` 范围通过审计。
- Run:
+ 在技能根目录运行:
```bash
- python3 scripts/audit_submission_record.py path/to/v1-batch-record.md
- python3 scripts/audit_submission_record.py path/to/v1-batch-record.md --json
- # Only for a user-authorized record kept on the protected local machine:
- python3 scripts/audit_submission_record.py path/to/v1-batch-record.md --record-scope local-controlled
+ python3 scripts/audit_submission_record.py path/to/batch-record.md
+ python3 scripts/audit_submission_record.py path/to/batch-record.md --json
```
- Report totals by queue state, verification state, shard, and outcome. Report official-contact emails sent, email send outcomes unknown, and replies/link placements separately from directory submissions and published listings. Do not report an email send as delivery, reply, listing, link placement, publication, or proof of SEO value.
+ 交付时逐站说明入口类型、去重证据、最终状态、阻塞原因、保留页面和下一步。目录已提交、待审、已发布、邮件已发送和邮件结果不明必须分别统计;邮件发送不代表送达、回复、收录、外链或发布。
- ## Bundled resources
+ ## 资源
- - [references/workflow.md](references/workflow.md): sharding, verification queues, execution, and recovery.
- - [references/status-model.md](references/status-model.md): record schema and state invariants.
- - [references/computer-use-bitbrowser.md](references/computer-use-bitbrowser.md): BitBrowser control rules.
- - [assets/submission-record-template.md](assets/submission-record-template.md): privacy-safe V1 Batch template.
- - `scripts/audit_submission_record.py`: batch integrity, secret, duplicate, and state auditor.
+ - [EXEC-CHECKLIST.md](EXEC-CHECKLIST.md):逐站执行检查单。
+ - [references/workflow.md](references/workflow.md):队列、分片、交接和恢复流程。
+ - [references/status-model.md](references/status-model.md):记录字段与状态约束。
+ - [assets/submission-record-template.md](assets/submission-record-template.md):可公开分享的记录模板。
+ - `scripts/audit_submission_record.py`:记录完整性和敏感信息审计。