Not in the top 1,000 by GitHub stars

artwist-polyakov/polyakov-claude-skills

Набор скиллов для ИИ-агентов

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

docx-contracts/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

genome-analizer/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

plugins/agent-deck/skills/agent-deck/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

plugins/blogger-ads-skill/skills/blogger-ads-skill/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

plugins/codex-review/skills/codex-review/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

plugins/crawl4ai-seo/skills/crawl4ai-seo/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

plugins/docx-contracts/skills/docx-contracts/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

plugins/fal-ai-image/skills/fal-ai-image/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

plugins/genome-analizer/skills/genome-analizer/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

plugins/github-pages-publisher/skills/github-pages-publisher/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

plugins/knowledge-compiler/skills/knowledge-compiler/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

plugins/perplexity-search/skills/perplexity-search/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

plugins/reddit-skill/skills/reddit-skill/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

plugins/scrapedo-web-scraper/skills/scrapedo-web-scraper/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

plugins/sourcecraft-publisher/skills/sourcecraft-publisher/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

plugins/ssh-remote-connection/skills/ssh-remote-connection/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

plugins/telegram-channel-parser/skills/telegram-channel-parser/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

plugins/telegraph-publisher/skills/telegraph-publisher/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

plugins/x-research/skills/x-research/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

plugins/yandex-direct/skills/yandex-direct/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

plugins/yandex-metrika/skills/yandex-metrika/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

plugins/yandex-search-api/skills/yandex-search-api/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

plugins/yandex-webmaster/skills/yandex-webmaster/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

plugins/yandex-wordstat/skills/yandex-wordstat/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

plugins/zoomkit/skills/zoomkit/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

scrapedo-web-scraper/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 197190a21d51

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 197190a21d51e8d3aa4d13d0e35c25d83dd1f20e

git clone --filter=blob:none --no-checkout https://github.com/artwist-polyakov/polyakov-claude-skills.git .hotskills/artwist-polyakov-polyakov-claude-skills && git -C .hotskills/artwist-polyakov-polyakov-claude-skills checkout --detach 197190a21d51e8d3aa4d13d0e35c25d83dd1f20e # Copy each selected skill directory from .hotskills/artwist-polyakov-polyakov-claude-skills into .claude/skills/<skill-name>/
git clone --filter=blob:none --no-checkout https://github.com/artwist-polyakov/polyakov-claude-skills.git .hotskills/artwist-polyakov-polyakov-claude-skills && git -C .hotskills/artwist-polyakov-polyakov-claude-skills checkout --detach 197190a21d51e8d3aa4d13d0e35c25d83dd1f20e # Copy each selected skill directory from .hotskills/artwist-polyakov-polyakov-claude-skills into .agents/skills/<skill-name>/
226GitHub stars
6stars in 7 days
26skills in this repository
24commits in 30 days

Heat

4.8
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Nov 3, 2026226

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

When your agent uses it

What it loads into context

Frontmatter

0 tokens

Always available to the agent

SKILL.md

116 tokens

When the skill is activated

Reference documents

426 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Быстрая установка

Scripts executed separately

  • ../plugins/codex-review/skills/codex-review/scripts/auto-approve-plan.sh
  • ../plugins/codex-review/skills/codex-review/scripts/auto-approve-plan.sh
  • ../plugins/codex-review/skills/codex-review/scripts/auto-approve-plan.sh
  • ../plugins/codex-review/skills/codex-review/scripts/auto-approve-plan.sh
  • ../plugins/codex-review/skills/codex-review/scripts/auto-approve-plan.sh

Files

  • ../.claude-plugin/marketplace.jsonasset6,820 bytes
  • README.mddoc550 bytes
  • SKILL.mdcore447 bytes
  • SKILL.mdcore447 bytes
  • ../plugins/agent-deck/.claude-plugin/plugin.jsonasset193 bytes
  • ../plugins/blogger-ads-skill/.claude-plugin/plugin.jsonasset285 bytes
  • ../plugins/codex-review/.claude-plugin/plugin.jsonasset460 bytes
  • ../plugins/codex-review/skills/codex-review/scripts/auto-approve-plan.shruns6,362 bytes
  • ../plugins/codex-review/skills/codex-review/scripts/auto-approve-plan.shruns6,362 bytes
  • ../plugins/codex-review/skills/codex-review/scripts/auto-approve-plan.shruns6,362 bytes
  • ../plugins/codex-review/skills/codex-review/scripts/auto-approve-plan.shruns6,362 bytes
  • ../plugins/codex-review/skills/codex-review/scripts/auto-approve-plan.shruns6,362 bytes
  • ../plugins/crawl4ai-seo/.claude-plugin/plugin.jsonasset240 bytes
  • ../plugins/docx-contracts/.claude-plugin/plugin.jsonasset231 bytes
  • ../plugins/docx-contracts/skills/docx-contracts/SKILL.mddoc1,294 bytes
  • ../plugins/fal-ai-image/.claude-plugin/plugin.jsonasset187 bytes
  • ../plugins/genome-analizer/.claude-plugin/plugin.jsonasset187 bytes
  • ../plugins/github-pages-publisher/.claude-plugin/plugin.jsonasset269 bytes
  • ../plugins/knowledge-compiler/.claude-plugin/plugin.jsonasset199 bytes
  • ../plugins/perplexity-search/.claude-plugin/plugin.jsonasset357 bytes
  • ../plugins/reddit-skill/.claude-plugin/plugin.jsonasset331 bytes
  • ../plugins/scrapedo-web-scraper/.claude-plugin/plugin.jsonasset232 bytes
  • ../plugins/sourcecraft-publisher/.claude-plugin/plugin.jsonasset262 bytes
  • ../plugins/ssh-remote-connection/.claude-plugin/plugin.jsonasset224 bytes
  • ../plugins/telegram-channel-parser/.claude-plugin/plugin.jsonasset239 bytes
  • ../plugins/telegraph-publisher/.claude-plugin/plugin.jsonasset200 bytes
  • ../plugins/x-research/.claude-plugin/plugin.jsonasset224 bytes
  • ../plugins/yandex-direct/.claude-plugin/plugin.jsonasset371 bytes
  • ../plugins/yandex-metrika/.claude-plugin/plugin.jsonasset373 bytes
  • ../plugins/yandex-search-api/.claude-plugin/plugin.jsonasset225 bytes
  • ../plugins/yandex-webmaster/.claude-plugin/plugin.jsonasset215 bytes
  • ../plugins/yandex-wordstat/.claude-plugin/plugin.jsonasset162 bytes
  • ../plugins/zoomkit/.claude-plugin/plugin.jsonasset241 bytes
Read SKILL.md
# docx-contracts

> **Этот скилл переехал!**

Новое расположение: [plugins/docx-contracts/skills/docx-contracts/SKILL.md](../plugins/docx-contracts/skills/docx-contracts/SKILL.md)

## Быстрая установка

```bash
# Глобально
cp -r plugins/docx-contracts/skills/docx-contracts ~/.claude/skills/

# Для проекта
cp -r plugins/docx-contracts/skills/docx-contracts .claude/skills/
```
View the complete source on GitHub

Skills included

  • agent-deck
  • blogger-ads-skill
  • codex-review
  • crawl4ai-seo
  • docx-contracts
  • fal-ai-image
  • genome-analyzer
  • github-pages-publisher
  • knowledge-compiler
  • perplexity-search
  • reddit-skill
  • scrapedo-web-scraper
  • sourcecraft-publisher
  • ssh-remote-connection
  • telegram-channel-parser
  • telegraph-publisher
  • x-research
  • yandex-direct
  • yandex-metrika
  • yandex-search-api
  • yandex-webmaster
  • yandex-wordstat
  • zoomkit

Repository facts

License
MIT
Created
Nov 7, 2025
Last pushed
Nov 5, 2026
Forks
58
Open issues
9
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 5, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 215 notes
  • docx-contracts/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/codex-review/skills/codex-review/scripts/auto-approve-plan.sh:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/codex-review/skills/codex-review/scripts/auto-approve-plan.sh:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/codex-review/skills/codex-review/scripts/auto-approve-plan.sh:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/codex-review/skills/codex-review/scripts/auto-approve-plan.sh:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • genome-analizer/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/agent-deck/skills/agent-deck/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/agent-deck/skills/agent-deck/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/agent-deck/skills/agent-deck/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/agent-deck/skills/agent-deck/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/agent-deck/skills/agent-deck/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/agent-deck/skills/agent-deck/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/agent-deck/skills/agent-deck/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/codex-review/skills/codex-review/scripts/auto-approve-plan.sh:1 Plugin-wide analysis incomplete; see repository notes
  • plugins/codex-review/skills/codex-review/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/codex-review/skills/codex-review/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/codex-review/skills/codex-review/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/codex-review/skills/codex-review/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/codex-review/skills/codex-review/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/codex-review/skills/codex-review/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 3,966 signals by file

.claude-plugin/marketplace.json

  • Network accessline 1
    {   "$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
  • Network accessline 2
    "$schema": "https://anthropic.com/claude-code/marketplace.schema.json",

plugins/agent-deck/skills/agent-deck/SKILL.md

  • Dangerous shell operationline 118
    agent-deck rm "Название"

plugins/agent-deck/skills/agent-deck/references/config-reference.md

  • Instruction override signalline 27
    [claude] config_dir = "~/.claude-work"   # Path to Claude config directory dangerous_mode = true           # Enable --dangerously-skip-permissions
  • Instruction override signalline 29
    dangerous_mode = true           # Enable --dangerously-skip-permissions
  • Access to secretsline 131
    [Credential-related source omitted]
  • Network accessline 145
    [mcps.remote] url = "https://api.example.com/mcp"
  • Network accessline 146
    url = "https://api.example.com/mcp"
  • Access to secretsline 158
    [Credential-related source omitted]
  • Access to secretsline 164
    [Credential-related source omitted]
  • Access to secretsline 235
    [Credential-related source omitted]
  • Access to secretsline 241
    [Credential-related source omitted]

plugins/agent-deck/skills/agent-deck/references/mcp-management.md

  • Access to secretsline 53
    [Credential-related source omitted]

plugins/agent-deck/skills/agent-deck/references/troubleshooting.md

  • Network accessline 126
    Go to: **https://github.com/asheshgoplani/agent-deck/issues/new**

plugins/agent-deck/skills/agent-deck/scripts/launch-subagent.sh

  • Executable scriptline 1
    #!/bin/bash

plugins/blogger-ads-skill/skills/blogger-ads-skill/assets/accounting/xsd/SOURCE.md

  • Network accessline 3
    - Приказ ФНС от 19.12.2023 № ЕД-7-26/970@, приложение № 1, версия формата 5.03. - [Официальная страница приказа](https://www.nalog.gov.ru/rn77/about_fts/docs/14414412/).
  • Network accessline 4
    - [Официальная страница приказа](https://www.nalog.gov.ru/rn77/about_fts/docs/14414412/).
  • Network accessline 5
    - [Архив «xsd-схема, действующая с 01.01.2026»](https://www.nalog.gov.ru/html/sites/www.new.nalog.ru/files/about_fts/docs/xsd/14414412.zip).

plugins/blogger-ads-skill/skills/blogger-ads-skill/assets/template-fields.json

  • Network accessline 177
    "example": "https://example.org/community",
  • Network accessline 630
    "example": "https://example.org",
  • Network accessline 678
    "example": "Это демонстрационный текст рекламного поста.\n\nПодробности: https://example.org\n\nРеклама. ООО «Пример Заказчик», ИНН 0000000000.",
  • Network accessline 732
    "example": "https://example.org",

plugins/blogger-ads-skill/skills/blogger-ads-skill/assets/templates/Montserrat-OFL.txt

  • Network accessline 1
    Copyright 2024 The Montserrat.Git Project Authors (https://github.com/JulietaUla/Montserrat.git)
  • Network accessline 3
    This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: https://openfontlicense.org
  • Network accessline 5
    https://openfontlicense.org

plugins/blogger-ads-skill/skills/blogger-ads-skill/assets/templates/NotoEmoji-OFL.txt

  • Network accessline 3
    This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: https://scripts.sil.org/OFL
  • Network accessline 5
    https://scripts.sil.org/OFL

plugins/blogger-ads-skill/skills/blogger-ads-skill/references/accounting.md

  • Network accessline 97
    1. [ФНС: приказ № ЕД-7-26/970@ и XSD 2026](https://www.nalog.gov.ru/rn77/about_fts/docs/14414412/) — действующая схема 5.03.
  • Network accessline 98
    2. [ФНС: НДС при УСН](https://www.nalog.gov.ru/rn77/taxation/taxes/nds_usn/) — УСН сама по себе не означает отсутствие НДС; [изменения 2026](https://www.nalog.gov.ru/new2026/).
  • Network accessline 99
    3. [ФНС: обязательные реквизиты счёта-фактуры с 01.04.2026](https://www.nalog.gov.ru/rn25/ifns/r25_14/info/16621052/) — строка 5б для авансовых счетов-фактур.
  • Network accessline 100
    4. [Документация Диадока по рекомендациям ФНС от 16.12.2025 № ЕА-4-26/11336@](https://www.diadoc.ru/articles/82777-rekomendacii_fns_po_zapolneniyu_schetov_faktur_i_upd) и [скан письма ФНС](https://services.kontur.ru/Files/Modules/Article/82
  • Network accessline 101
    5. [ФНС об отмене старых электронных форматов актов](https://www.nalog.gov.ru/rn77/news/activities_fts/16543959/) — бумажные акты и допустимый неформализованный обмен не запрещены. Не повторять тезис «все акты запрещены».

plugins/blogger-ads-skill/skills/blogger-ads-skill/references/legal.md

  • Network accessline 11
    1. Определи роль пользователя: рекламодатель, посредник или площадка. Установи конечного рекламодателя и всю цепочку договоров. Агентский договор и перепродажа услуг — разные схемы. 2. Посмотри сам продукт, посадочную страницу, предложение 
  • Network accessline 12
    2. Посмотри сам продукт, посадочную страницу, предложение и будущий текст. Проверяй фактическое содержание, включая обещания в ссылках. Цена, размер канала и способ оплаты не освобождают от рекламных требований. 3. Проверь статус площадки и
  • Network accessline 13
    3. Проверь статус площадки и конкретного канала на дату размещения. Для страницы с аудиторией **более 10 000** пользователей нужна проверка включения в перечень РКН. Номер заявки не заменяет запись. Не называй эту регистрацию лицензией на р
  • Network accessline 14
    4. Сверь стороны по ИНН в [ЕГРЮЛ/ЕГРИП ФНС](https://egrul.nalog.ru/), при необходимости — в [«Прозрачном бизнесе»](https://pb.nalog.ru/). Сохрани выписку и дату. Сверь действующий статус, ФИО/название, полномочия подписанта и связь получате
  • Network accessline 18
    Базовый источник — [38-ФЗ «О рекламе»](http://pravo.gov.ru/proxy/ips/?docbody=&nd=102105292): ст. 3 и 5 — квалификация и общие требования, ст. 7 — запрещённые объекты, профильные статьи — ограничения отдельных категорий. Статья 19 относится
  • Network accessline 20
    - **Ограниченные ресурсы.** Часть 10.7 ст. 5 запрещает рекламу на перечисленных в ней ресурсах, включая ресурсы с ограниченным доступом. Проверяй и размещение, и объект продвижения; работающий сайт ещё не означает отсутствие запрета. - **Te
  • Network accessline 21
    - **Telegram в 2026 году.** [ФАС 25.03.2026](https://fas.gov.ru/news/34584) указала на переходный период до конца 2026 года без применения мер ответственности за рекламу в Telegram и YouTube. Это позиция о применении ответственности, а не о
  • Network accessline 28
    Для интернет-рекламы применяются ст. 18.1 и 38 38-ФЗ, а для административной ответственности — [ст. 14.3 КоАП](https://www.consultant.ru/document/cons_doc_LAW_34661/2d50fc1c4013ea9ab20b8b2666c1650b1dc4c982/). Не обещай единый штраф «2500 ру
  • Network accessline 42
    Для сроков отчётности читай действующий [п. 10 Правил по ПП РФ № 974](https://www.consultant.ru/document/cons_doc_LAW_418000/044cb7cb4857f2a9907d69072ea6f0df3054eb49/): помимо обычных 30 календарных дней после месяца он содержит оговорку о 
  • Network accessline 48
    [Постановление Правительства № 1224 от 15.08.2025](https://publication.pravo.gov.ru/document/0001202508150004) определяет распределение по цепочке. В пп. 3–6 различаются договор услуг и агентское поручение; нельзя начислять 3% каждому участ
  • Network accessline 56
    Начисление делает РКН по переданным сведениям. В ЕРИР проверяют квартал, базу, сумму и УИН. По № 1224 расчёт формируется до 15-го числа второго месяца следующего квартала; для проверки/уточнения предусмотрены следующие 10 календарных дней; 
  • Network accessline 60
    По [ФНС «Налоги 2026»](https://www.nalog.gov.ru/new2026/) основная ставка НДС с 01.01.2026 — **22%**. Для обычных рекламных услуг на ОСНО это стандартная ветка; специальное освобождение нельзя выдумывать.
  • Network accessline 62
    УСН сама по себе не означает отсутствие НДС. В 2026 году освобождение по ст. 145 НК связано с пределом доходов 20 млн рублей за предыдущий и текущий год; при превышении в течение года обязанность возникает с первого числа следующего месяца.
  • Network accessline 72
    Пользовательский [обзор СберБизнес](https://sberbusiness.live/publications/markirovka-reklamy-v-internete) прочитан как вторичный материал. Для решения о публикации используй действующий акт, официальное разъяснение и факты сделки. Не перен

plugins/blogger-ads-skill/skills/blogger-ads-skill/references/ord-edo.md

  • Network accessline 45
    2. Получи от ответственного за маркировку: название ОРД, **значение поля ERID/«Токен»**, конечного рекламодателя и ИНН, исходный договор, подтверждение выдачи и копию зарегистрированного материала. Внутренний ID карточки, номер договора и т
  • Network accessline 47
    4. Проверь сведения в доступном кабинете [ЕРИР](https://erir.grfc.ru/). Это полезное дополнительное подтверждение. Отсутствие результата само по себе не доказывает подделку: проверь введённое значение, статус передачи у ОРД, ошибки, права д
  • Network accessline 49
    **Ждать универсальные «двое суток» не требуется.** [Яндекс ОРД прямо поясняет](https://yandex.ru/support/ord/ru/marking-stages): после выдачи токена проверка ЕРИР может продолжаться, но это не препятствует размещению. Условие ст. 18.1 ч. 17
  • Network accessline 53
    Справки операторов: [Яндекс — вопросы о токенах и передаче данных](https://yandex.ru/support/ord/ru/faq), [ОРД-А — карточка и редактирование креатива](https://ord-a.ru/help/wiki/creatives/). Эти инструкции описывают работу конкретных систем
  • Network accessline 61
    ERID размещают в соответствии с [приказом РКН от 25.03.2025 № 68](https://publication.pravo.gov.ru/document/0001202504140029). Он заменил приказ № 191. Пункты 10–12 предусматривают параметр `erid` в ссылке, а также пометку `erid: …` в начал
  • Network accessline 67
    Не утверждай, что любой пробел автоматически требует нового ERID. Существенная замена содержания, объекта, материала — основание оформить новый креатив и получить новый токен. Возможность технических правок и правок до первого размещения за
  • Network accessline 75
    Отчётность не заканчивается выдачей токена. Зафиксируй исполнителя подачи статистики, доходного акта и связи с исходным договором. Один акт не следует задваивать разными участниками. По [этапам Яндекс ОРД](https://yandex.ru/support/ord/ru/m
  • Network accessline 77
    [Пункт 10 ПП РФ № 974 в редакции от 18.09.2025](https://www.consultant.ru/document/cons_doc_LAW_418000/044cb7cb4857f2a9907d69072ea6f0df3054eb49/) содержит обычный 30-дневный срок и оговорку о предоставлении информации в течение года со дня 
  • Network accessline 85
    [ФНС разъяснила](https://www.nalog.gov.ru/rn77/news/activities_fts/16543959/): с 01.01.2026 отменены прежние утверждённые XML-форматы акта выполненных работ и товарной накладной из приказов № ММВ-7-10/551@ и № ММВ-7-10/552@. Для формализова
  • Network accessline 99
    Скрипт создаёт **неподписанный файл**. Для реального обмена нужны проверка действующей XSD и правил оператора, загрузка, подпись уполномоченного лица, при необходимости МЧД, ответный титул/приёмка и квитанции. Успешная XSD-проверка не подтв

plugins/blogger-ads-skill/skills/blogger-ads-skill/references/templates.md

  • Network accessline 30
    В DOCX встроены Montserrat Regular и Bold, поэтому не требуется системная установка. Источник — [официальный репозиторий Montserrat](https://github.com/JulietaUla/Montserrat/tree/master/fonts/ttf), лицензия — `assets/templates/Montserrat-OF
  • Network accessline 43
    "CONTRACT_DATE": "«20» октября 2026 г.",   "CHANNEL_NAME": "Название согласованной рекламной площадки",   "CHANNEL_URL": "https://example.org/community"
  • Network accessline 44
    "CHANNEL_NAME": "Название согласованной рекламной площадки",   "CHANNEL_URL": "https://example.org/community" }
  • Network accessline 45
    "CHANNEL_URL": "https://example.org/community"
  • Network accessline 121
    | `channel` | `telegram`, `email`, `other` или `unknown`; уже выбранную переписку не объявляй неизвестной | | `channel_name` | Название только для `other`; иначе `null` | | `contractor_contact`, `customer_contact` | Контакты только в выбран
  • Network accessline 122
    | `channel_name` | Название только для `other`; иначе `null` | | `contractor_contact`, `customer_contact` | Контакты только в выбранном канале или `null`. Telegram: `@username`, `https://t.me/username` либо международный номер. Email не под
  • Network accessline 123
    | `contractor_contact`, `customer_contact` | Контакты только в выбранном канале или `null`. Telegram: `@username`, `https://t.me/username` либо международный номер. Email не подставляется в Telegram. При `unknown` оба контакта — `null` |
  • Network accessline 217
    "part": "word/document.xml",       "paragraph": 27,       "find": "https://example.org/old",
  • Network accessline 218
    "paragraph": 27,       "find": "https://example.org/old",       "replace": "https://example.org/new"
  • Network accessline 219
    "find": "https://example.org/old",
  • Network accessline 220
    "replace": "https://example.org/new"
  • Network accessline 242
    Шрифт поставляется в `assets/templates/NotoEmoji.ttf`, лицензия OFL — рядом. Источник: [официальные файлы Noto Emoji](https://github.com/google/fonts/tree/main/ofl/notoemoji). Сборка не требует сети или установки шрифта. Если шрифт не содер
  • Network accessline 273
    Поле PDF `anchor_hint` показывает текст из области той же аннотации рядом с `target`. Это подсказка для чтения: область иногда захватывает соседнюю строку, а у скана текстового слоя может не быть. Сопоставь её с изображением страницы; пусто

plugins/blogger-ads-skill/skills/blogger-ads-skill/references/workflow.md

  • Network accessline 60
    Для выбранных файлов материала используй `deal.py import-creative --state … --text … --links …`. В `--links` передай JSON-файл карты: список URL, список объектов `{"anchor":"…","url":"https://…"}` или таблицу `[номер, якорь, адрес]` / `[яко
  • Network accessline 192
    По [ПП РФ № 1224, пп. 8, 9, 13, 15](https://publication.pravo.gov.ru/document/0001202508150004) `plan` создаёт `fee-YYYY-QN-assessment` (расчёт РКН к 15-му второго месяца следующего квартала), `fee-YYYY-QN-review` (проверка/уточнение в след
  • Network accessline 194
    Для первого платёжного периода 2025-Q2 действовали те же контрольные даты: 15.08, 25.08 и 05.09.2025; они прямо указаны в [сообщении Роскомнадзора](https://t.me/rkn_tg/1547). Отдельный переходный срок для этого периода в расчёт не добавляет

plugins/blogger-ads-skill/skills/blogger-ads-skill/scripts/accounting.py

  • Executable scriptline 1
    #!/usr/bin/env -S uv run --script

plugins/blogger-ads-skill/skills/blogger-ads-skill/scripts/creative_links.py

  • Executable scriptline 1
    Executable file

plugins/blogger-ads-skill/skills/blogger-ads-skill/scripts/deal.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 284
    FEE_RULE_SOURCE = "https://publication.pravo.gov.ru/document/0001202508150004"
  • Network accessline 285
    ORD_RULE_SOURCE = "https://www.consultant.ru/document/cons_doc_LAW_418000/044cb7cb4857f2a9907d69072ea6f0df3054eb49/"

plugins/blogger-ads-skill/skills/blogger-ads-skill/scripts/handoff.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/blogger-ads-skill/skills/blogger-ads-skill/scripts/inspect_links.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 27
    W = "{http://schemas.openxmlformats.org/wordprocessingml/2006/main}"
  • Network accessline 28
    A = "{http://schemas.openxmlformats.org/drawingml/2006/main}"
  • Network accessline 29
    V = "{urn:schemas-microsoft-com:vml}" R = "{http://schemas.openxmlformats.org/officeDocument/2006/relationships}" REL = "{http://schemas.openxmlformats.org/package/2006/relationships}"
  • Network accessline 30
    R = "{http://schemas.openxmlformats.org/officeDocument/2006/relationships}"
  • Network accessline 31
    REL = "{http://schemas.openxmlformats.org/package/2006/relationships}"
  • Network accessline 32
    STRICT_NAMESPACES = {     "http://purl.oclc.org/ooxml/wordprocessingml/main": W[1:-1],     "http://purl.oclc.org/ooxml/drawingml/main": A[1:-1],
  • Network accessline 33
    "http://purl.oclc.org/ooxml/wordprocessingml/main": W[1:-1],
  • Network accessline 34
    "http://purl.oclc.org/ooxml/drawingml/main": A[1:-1],
  • Network accessline 35
    "http://purl.oclc.org/ooxml/officeDocument/relationships": R[1:-1],
  • Network accessline 36
    "http://purl.oclc.org/ooxml/package/relationships": REL[1:-1],
  • Network accessline 222
    node.attrib = attributes         if node.tag == REL + "Relationship":             strict_prefix = "http://purl.oclc.org/ooxml/officeDocument/relationships/"
  • Network accessline 223
    if node.tag == REL + "Relationship":             strict_prefix = "http://purl.oclc.org/ooxml/officeDocument/relationships/"             relation_type = node.get("Type", "")
  • Network accessline 224
    strict_prefix = "http://purl.oclc.org/ooxml/officeDocument/relationships/"
  • Network accessline 270
    target = relationship.get("Target") if relationship is not None else None                 if relationship is not None and (                         relationship.get("Type") != "http://schemas.openxmlformats.org/officeDocument/2006/relations
  • Network accessline 271
    if relationship is not None and (                         relationship.get("Type") != "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink"                         or relationship.get("TargetMode") != "External"):
  • Network accessline 272
    relationship.get("Type") != "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink"

plugins/blogger-ads-skill/skills/blogger-ads-skill/scripts/print_html.py

  • Executable scriptline 1
    #!/usr/bin/env -S uv run --script
  • Access to secretsline 20
    [Credential-related source omitted]
  • Access to secretsline 31
    [Credential-related source omitted]
  • Access to secretsline 32
    [Credential-related source omitted]

plugins/blogger-ads-skill/skills/blogger-ads-skill/scripts/render_contract.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 22
    W = "http://schemas.openxmlformats.org/wordprocessingml/2006/main"
  • Network accessline 178
    raise ValueError("--exchange-file: при неизвестном канале контакты в нём тоже неизвестны; укажите null")     for contact in filter(None, contacts):         if channel == "telegram" and not re.fullmatch(r"(?:@[A-Za-z0-9_]+|https://t\.me/[A-Z
  • Network accessline 179
    for contact in filter(None, contacts):         if channel == "telegram" and not re.fullmatch(r"(?:@[A-Za-z0-9_]+|https://t\.me/[A-Za-z0-9_]+|\+[1-9][0-9]{6,14})", contact):             raise ValueError("--exchange-file: контакт Telegram — @
  • Network accessline 180
    if channel == "telegram" and not re.fullmatch(r"(?:@[A-Za-z0-9_]+|https://t\.me/[A-Za-z0-9_]+|\+[1-9][0-9]{6,14})", contact):
  • Network accessline 181
    raise ValueError("--exchange-file: контакт Telegram — @username, https://t.me/username или международный номер; email сюда не подставляется")
  • Network accessline 421
    rel_ns = "http://schemas.openxmlformats.org/package/2006/relationships"
  • Network accessline 422
    rid_ns = "http://schemas.openxmlformats.org/officeDocument/2006/relationships"
  • Possible obfuscationline 592
    if re.search(r"[\x00-\x08\x0b\x0c\x0e-\x1f]", value):

plugins/blogger-ads-skill/skills/blogger-ads-skill/tests/test_accounting.py

  • Executable scriptline 1
    Executable file

plugins/blogger-ads-skill/skills/blogger-ads-skill/tests/test_contract.py

  • Executable scriptline 1
    Executable file
  • Network accessline 15
    module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) W = "{http://schemas.openxmlformats.org/wordprocessingml/2006/main}"
  • Network accessline 17
    W = "{http://schemas.openxmlformats.org/wordprocessingml/2006/main}"
  • Network accessline 25
    self.schema = json.loads((ROOT / "assets/template-fields.json").read_text())         self.fields = {key: value["example"] for key, value in self.schema["fields"].items() if "<N>" not in key}         self.fields.update(LINK_1_ANCHOR="Пример 
  • Network accessline 27
    self.fields.update(LINK_1_ANCHOR="Пример & проверка", LINK_1_URL="https://example.org/?a=1&b=2")
  • Network accessline 286
    '<w:p><w:r><w:t>{{PARTY_INFO}}</w:t></w:r></w:p>')         post = Path(self.temp.name) / "approved.txt"         text = ": Дословно:: пауза.. г. Москва; И. И. Иванов.\nhttps://example.org./path.v2?next=a..b&end=."
  • Network accessline 287
    post = Path(self.temp.name) / "approved.txt"         text = ": Дословно:: пауза.. г. Москва; И. И. Иванов.\nhttps://example.org./path.v2?next=a..b&end=."         post.write_text(text, encoding="utf-8")
  • Network accessline 288
    text = ": Дословно:: пауза.. г. Москва; И. И. Иванов.\nhttps://example.org./path.v2?next=a..b&end=."
  • Network accessline 289
    post.write_text(text, encoding="utf-8")         fields = {"PRODUCT_URL": "https://example.org./path.v2?next=a..b&end=.",                   "PARTY_INFO": "г. Москва, ул. Примерная, д. 1; Иванов И. И."}
  • Network accessline 290
    fields = {"PRODUCT_URL": "https://example.org./path.v2?next=a..b&end=.",
  • Network accessline 306
    def test_links_expand_without_losing_addresses(self):         self.fields.update(LINK_COUNT="3", LINK_2_ANCHOR="Второй", LINK_2_URL="https://example.org/2", LINK_3_ANCHOR="Третий", LINK_3_URL="https://example.org/3")
  • Network accessline 307
    self.fields.update(LINK_COUNT="3", LINK_2_ANCHOR="Второй", LINK_2_URL="https://example.org/2", LINK_3_ANCHOR="Третий", LINK_3_URL="https://example.org/3")
  • Network accessline 310
    root = ET.fromstring(z.read("word/document.xml"))             self.assertEqual(len(list(root.iter(W + "tr"))), 4)             self.assertIn("https://example.org/?a=1&b=2", "".join(root.itertext()))
  • Network accessline 312
    self.assertIn("https://example.org/?a=1&b=2", "".join(root.itertext()))
  • Network accessline 333
    def test_separate_erid_is_only_in_marking_block_and_does_not_change_material(self):         post = Path(self.temp.name) / "approved-material.txt"         text = "✅ Согласованный текст\nПодробности: https://example.org/?utm_source=TG\n"
  • Network accessline 334
    post = Path(self.temp.name) / "approved-material.txt"         text = "✅ Согласованный текст\nПодробности: https://example.org/?utm_source=TG\n"         post.write_bytes(text.encode("utf-8"))
  • Network accessline 335
    text = "✅ Согласованный текст\nПодробности: https://example.org/?utm_source=TG\n"
  • Network accessline 469
    def test_patch_multiline_creative_and_exact_table_cell(self):         self.fields["POST_TEXT"] = "🔒 Старый заголовок\n✅ Старый текст\nhttps://example.org/"
  • Network accessline 470
    self.fields["POST_TEXT"] = "🔒 Старый заголовок\n✅ Старый текст\nhttps://example.org/"
  • Network accessline 473
    info = module.inspect_document(self.output)         table_url = next(p for p in info["paragraphs"] if p["text"] == self.fields["LINK_1_URL"])         text = "🔒 Новый заголовок\n✅ Точный текст\n📊🚀💸\nhttps://example.org/"
  • Network accessline 474
    table_url = next(p for p in info["paragraphs"] if p["text"] == self.fields["LINK_1_URL"])         text = "🔒 Новый заголовок\n✅ Точный текст\n📊🚀💸\nhttps://example.org/"         module.patch_document(self.output, self.patch_data(self.output, 
  • Network accessline 475
    text = "🔒 Новый заголовок\n✅ Точный текст\n📊🚀💸\nhttps://example.org/"
  • Network accessline 476
    module.patch_document(self.output, self.patch_data(self.output, [             {"find": self.fields["POST_TEXT"], "replace": text},             {"paragraph": table_url["paragraph"], "find": self.fields["LINK_1_URL"], "replace": "https://exam
  • Network accessline 477
    {"find": self.fields["POST_TEXT"], "replace": text},             {"paragraph": table_url["paragraph"], "find": self.fields["LINK_1_URL"], "replace": "https://example.org/correct"}         ]), revised)
  • Network accessline 478
    {"paragraph": table_url["paragraph"], "find": self.fields["LINK_1_URL"], "replace": "https://example.org/correct"}
  • Network accessline 480
    paragraphs = [p["text"] for p in module.inspect_document(revised)["paragraphs"]]         self.assertIn(text, paragraphs)         self.assertIn("https://example.org/correct", paragraphs)
  • Network accessline 481
    self.assertIn(text, paragraphs)         self.assertIn("https://example.org/correct", paragraphs)         self.assertTrue(module.audit_document(revised)["ok"])
  • Network accessline 482
    self.assertIn("https://example.org/correct", paragraphs)
  • Network accessline 510
    def test_strict_docx_is_rejected_before_inspection_audit_or_patch(self):         source = self.synthetic("<w:p><w:r><w:t>Текст без шрифта</w:t></w:r></w:p>",                                 namespace="http://purl.oclc.org/ooxml/wordprocessi
  • Network accessline 511
    source = self.synthetic("<w:p><w:r><w:t>Текст без шрифта</w:t></w:r></w:p>",                                 namespace="http://purl.oclc.org/ooxml/wordprocessingml/main")         changes = {"source_sha256": hashlib.sha256(source.read_bytes(
  • Network accessline 512
    namespace="http://purl.oclc.org/ooxml/wordprocessingml/main")

plugins/blogger-ads-skill/skills/blogger-ads-skill/tests/test_contract_dates.py

  • Executable scriptline 1
    Executable file
  • Network accessline 178
    with ZipFile(path) as archive:                 xml = ET.fromstring(archive.read('word/document.xml'))             text = ''.join(node.text or '' for node in xml.iter('{http://schemas.openxmlformats.org/wordprocessingml/2006/main}t'))
  • Network accessline 179
    xml = ET.fromstring(archive.read('word/document.xml'))             text = ''.join(node.text or '' for node in xml.iter('{http://schemas.openxmlformats.org/wordprocessingml/2006/main}t'))             self.assertIn('14.10.2026', text)
  • Network accessline 180
    text = ''.join(node.text or '' for node in xml.iter('{http://schemas.openxmlformats.org/wordprocessingml/2006/main}t'))

plugins/blogger-ads-skill/skills/blogger-ads-skill/tests/test_creative_links.py

  • Executable scriptline 1
    Executable file
  • Network accessline 24
    links, deal, render, inspect = [module(name) for name in ("creative_links", "deal", "render_contract", "inspect_links")] W = "{http://schemas.openxmlformats.org/wordprocessingml/2006/main}"
  • Network accessline 25
    W = "{http://schemas.openxmlformats.org/wordprocessingml/2006/main}"
  • Network accessline 39
    self.table = [             ["№", "Фраза-ссылка (якорь)", "Адрес (URL)"],             ["1", "«Сервис» (первое упоминание)", "https://Example.test/?b=2&a=1&a=2#top"],
  • Network accessline 40
    ["№", "Фраза-ссылка (якорь)", "Адрес (URL)"],             ["1", "«Сервис» (первое упоминание)", "https://Example.test/?b=2&a=1&a=2#top"],             ["2", "  Открытый код и SDK  ", "https://example.test/security/"],
  • Network accessline 41
    ["1", "«Сервис» (первое упоминание)", "https://Example.test/?b=2&a=1&a=2#top"],
  • Network accessline 42
    ["2", "  Открытый код и SDK  ", "https://example.test/security/"],
  • Network accessline 43
    ["3", "«Провайдер» (абзац о тарифах)", "https://provider.test/pricing"],
  • Network accessline 44
    ["4", "«Сервис» (абзац с расчётом)", "https://Example.test/?b=2&a=1&a=2#top"],
  • Network accessline 45
    ["5", "«Сервис» (призыв в конце)", "https://Example.test/?b=2&a=1&a=2#top"],
  • Network accessline 46
    ["6", "https://t.me/example", "https://t.me/example"],
  • Network accessline 80
    def test_pair_objects_two_column_table_and_legacy_urls_are_supported(self):         self.assertEqual(links.parse_links(self.expected), self.expected)         self.assertEqual(links.parse_links([["Якорь", "URL"], ["Сервис", "https://example.
  • Network accessline 81
    self.assertEqual(links.parse_links(self.expected), self.expected)         self.assertEqual(links.parse_links([["Якорь", "URL"], ["Сервис", "https://example.test"]]),                          [{"anchor": "Сервис", "url": "https://example.tes
  • Network accessline 82
    self.assertEqual(links.parse_links([["Якорь", "URL"], ["Сервис", "https://example.test"]]),
  • Network accessline 83
    [{"anchor": "Сервис", "url": "https://example.test"}])
  • Network accessline 84
    urls = ["https://example.test/?a=1", "https://example.test/?a=1"]
  • Network accessline 89
    for anchor in ("anchor", "якорь"):             with self.subTest(anchor=anchor):                 rows = [[anchor, "https://example.test/url"], ["Следующая", "https://example.test/next"]]
  • Network accessline 90
    with self.subTest(anchor=anchor):                 rows = [[anchor, "https://example.test/url"], ["Следующая", "https://example.test/next"]]                 expected = [{"anchor": row[0], "url": row[1]} for row in rows]
  • Network accessline 91
    rows = [[anchor, "https://example.test/url"], ["Следующая", "https://example.test/next"]]
  • Network accessline 103
    invalid = [             [["№", "Якорь", "URL"], ["1", "Название", "Ссылка в тексте"]],             [["1", "https://example.test", "видимая ссылка в тексте"]],
  • Network accessline 104
    [["№", "Якорь", "URL"], ["1", "Название", "Ссылка в тексте"]],             [["1", "https://example.test", "видимая ссылка в тексте"]],             [["№", "Якорь", "URL"], ["1", "https://example.test", "см. https://other.test"]],
  • Network accessline 105
    [["1", "https://example.test", "видимая ссылка в тексте"]],
  • Network accessline 106
    [["№", "Якорь", "URL"], ["1", "https://example.test", "см. https://other.test"]],
  • Network accessline 107
    [["1", "https://example.test", "https://broken address"]],
  • Network accessline 108
    [["1", "https://example.test", ""]],
  • Network accessline 109
    [["1", "", "https://example.test"]],
  • Network accessline 110
    [{"anchor": "Якорь", "url": "https://bad address"}],
  • Network accessline 156
    def test_legacy_digest_is_unchanged_until_new_import_adds_link_map(self):         creative = {"text": "Пост", "links": ["https://example.test"], "media_sha256": []}
  • Network accessline 157
    creative = {"text": "Пост", "links": ["https://example.test"], "media_sha256": []}
  • Network accessline 188
    for key, value in [("LINK_3_ANCHOR", self.expected[2]["url"]),                            ("LINK_3_URL", self.expected[5]["url"]), ("LINK_COUNT", "5"),                            ("LINK_7_URL", "https://extra.test")]:
  • Network accessline 189
    ("LINK_3_URL", self.expected[5]["url"]), ("LINK_COUNT", "5"),                            ("LINK_7_URL", "https://extra.test")]:             with self.subTest(key=key):
  • Network accessline 190
    ("LINK_7_URL", "https://extra.test")]:
  • Network accessline 219
    self.assertFalse(changed.exists())         new_map = self.base / "new-map.json"         new_map.write_text(json.dumps([{"anchor": "Новая карта", "url": "https://new.test"}]))
  • Network accessline 220
    new_map = self.base / "new-map.json"         new_map.write_text(json.dumps([{"anchor": "Новая карта", "url": "https://new.test"}]))         render.revise_document(self.output, {}, changed, links_file=new_map)
  • Network accessline 221
    new_map.write_text(json.dumps([{"anchor": "Новая карта", "url": "https://new.test"}]))

plugins/blogger-ads-skill/skills/blogger-ads-skill/tests/test_deal.py

  • Executable scriptline 1
    Executable file
  • Network accessline 249
    self.state["stage"] = stage                     if actual:                         self.state["publication"].update(actual_at=actual, url="https://t.me/example/123",
  • Network accessline 250
    if actual:                         self.state["publication"].update(actual_at=actual, url="https://t.me/example/123",                                                          evidence=["Скриншот фактического размещения"])
  • Network accessline 251
    self.state["publication"].update(actual_at=actual, url="https://t.me/example/123",
  • Network accessline 549
    self.assertNotIn(completed["uid"], deal.ics(result, self.now))         self.assertIn(completed["uid"], deal.changes(old, result)["cancel"])         self.state["creative"]["links"] = ["https://example.org/changed"]
  • Network accessline 550
    self.assertIn(completed["uid"], deal.changes(old, result)["cancel"])         self.state["creative"]["links"] = ["https://example.org/changed"]         reopened = deal.plan(self.state, self.now)
  • Network accessline 551
    self.state["creative"]["links"] = ["https://example.org/changed"]
  • Network accessline 1353
    *(("completed", 0, key) for key in ("title", "completed_at", "completion_source"))]         payload = ('[договор](</tmp/missing.docx>) ![снимок](/tmp/missing.png) '                    '<a href="/tmp/missing.html">ссылка</a> <https://example
  • Network accessline 1354
    payload = ('[договор](</tmp/missing.docx>) ![снимок](/tmp/missing.png) '                    '<a href="/tmp/missing.html">ссылка</a> <https://example.org> '                    '&lt;img src=x&gt; **условия** `текст`\n# заголовок\n- пункт\n'
  • Network accessline 1355
    '<a href="/tmp/missing.html">ссылка</a> <https://example.org> '
  • Network accessline 1737
    self.state["publication"]["scheduled_message_id"] = None         self.state["checks"]["scheduled_message"] = queue_proof         self.state["creative"]["links"] = ["https://example.org/new"]
  • Network accessline 1738
    self.state["checks"]["scheduled_message"] = queue_proof         self.state["creative"]["links"] = ["https://example.org/new"]         self.assertFalse(deal.check(self.state, self.now)["ready"])
  • Network accessline 1739
    self.state["creative"]["links"] = ["https://example.org/new"]
  • Network accessline 1914
    def test_check_rejects_invalid_legacy_creative_links(self):         self.assertIsNone(self.state["creative"].get("provenance"))         for links in ("not-a-list", {"url": "https://example.org/"}, None,
  • Network accessline 1915
    self.assertIsNone(self.state["creative"].get("provenance"))         for links in ("not-a-list", {"url": "https://example.org/"}, None,                       [123], ["not-a-url"], ["https://example.org/a b"]):
  • Network accessline 1916
    for links in ("not-a-list", {"url": "https://example.org/"}, None,
  • Network accessline 1917
    [123], ["not-a-url"], ["https://example.org/a b"]):
  • Network accessline 2050
    self.links_path = self.folder / "post-links.json"         self.raw_text = "  🧩 Согласованный пост\r\n\r\nerid: test-token \r\n".encode("utf-8")         self.links = ["https://example.org/a?utm_source=TG&x=1&x=2#section",
  • Network accessline 2051
    self.raw_text = "  🧩 Согласованный пост\r\n\r\nerid: test-token \r\n".encode("utf-8")         self.links = ["https://example.org/a?utm_source=TG&x=1&x=2#section",                       "https://example.org/a?utm_source=TG&x=1&x=2#section",
  • Network accessline 2052
    self.links = ["https://example.org/a?utm_source=TG&x=1&x=2#section",
  • Network accessline 2053
    "https://example.org/a?utm_source=TG&x=1&x=2#section",
  • Network accessline 2054
    "http://EXAMPLE.org:8080/b?next=%2Fpage%3Fa%3D1&space=a+b"]
  • Network accessline 2127
    def test_inspect_preserves_mixed_order_repeats_and_raw_query_values(self):         text = ("https://example.org/?x=1&erid=A%2FB%5B+Z&erid=repeat#fragment\n"
  • Network accessline 2128
    text = ("https://example.org/?x=1&erid=A%2FB%5B+Z&erid=repeat#fragment\n"
  • Network accessline 2129
    "erid: repeat\nhttps://example.org/?erid=A%2FB%5B+Z\nERID: other[\n"
  • Network accessline 2130
    "https://example.org/?erid=repeat)")
  • Network accessline 2143
    for text in ("Обычный пост без идентификаторов.", "",                      "noterid: wrong _erid: wrong erid_suffix: wrong еrid: wrong erid=plain "                      "https://example.org/?myerid=wrong&erid_suffix=wrong&%65rid=wrong"):
  • Network accessline 2144
    "noterid: wrong _erid: wrong erid_suffix: wrong еrid: wrong erid=plain "                      "https://example.org/?myerid=wrong&erid_suffix=wrong&%65rid=wrong"):             with self.subTest(text=text):
  • Network accessline 2145
    "https://example.org/?myerid=wrong&erid_suffix=wrong&%65rid=wrong"):
  • Network accessline 2180
    self.assertEqual(first["text_sha256"], second["text_sha256"])         self.save_state()         self.links_path.write_text(json.dumps(["https://example.org/new"]), encoding="utf-8")
  • Network accessline 2181
    self.save_state()         self.links_path.write_text(json.dumps(["https://example.org/new"]), encoding="utf-8")         third = self.import_source()["inspection"]
  • Network accessline 2182
    self.links_path.write_text(json.dumps(["https://example.org/new"]), encoding="utf-8")
  • Network accessline 2436
    self.import_source()         self.assertEqual(self.state["creative"]["links"], [             "https://example.org/a?utm_source=TG&x=1&x=2#section",
  • Network accessline 2437
    self.assertEqual(self.state["creative"]["links"], [             "https://example.org/a?utm_source=TG&x=1&x=2#section",             "https://example.org/a?utm_source=TG&x=1&x=2#section",
  • Network accessline 2438
    "https://example.org/a?utm_source=TG&x=1&x=2#section",
  • Network accessline 2439
    "https://example.org/a?utm_source=TG&x=1&x=2#section",
  • Network accessline 2440
    "http://EXAMPLE.org:8080/b?next=%2Fpage%3Fa%3D1&space=a+b"])
  • Network accessline 2619
    [1, "Якорь без адреса", "неизвестный переход"]],                       ["видимая ссылка в тексте"], [""], [None], ["/relative"], ["//example.org/"],                       ["mailto:mail@example.org"], ["https://"], ["https:///path"],
  • Network accessline 2620
    ["видимая ссылка в тексте"], [""], [None], ["/relative"], ["//example.org/"],                       ["mailto:mail@example.org"], ["https://"], ["https:///path"],                       ["https://example.org/a b"], ["https://example.org/\npat
  • Network accessline 2621
    ["mailto:mail@example.org"], ["https://"], ["https:///path"],
  • Network accessline 2622
    ["https://example.org/a b"], ["https://example.org/\npath"], ["https://[bad"]):
  • Network accessline 2630
    def test_recorded_source_rejects_non_urls_but_legacy_state_remains_compatible(self):         self.import_source()         links = [["Якорь", "URL"], ["видимая ссылка в тексте", "https://example.org/"]]
  • Network accessline 2631
    self.import_source()         links = [["Якорь", "URL"], ["видимая ссылка в тексте", "https://example.org/"]]         raw = json.dumps(links, ensure_ascii=False).encode("utf-8")
  • Network accessline 2632
    links = [["Якорь", "URL"], ["видимая ссылка в тексте", "https://example.org/"]]

plugins/blogger-ads-skill/skills/blogger-ads-skill/tests/test_document_backup.py

  • Executable scriptline 1
    Executable file

plugins/blogger-ads-skill/skills/blogger-ads-skill/tests/test_edo_recovery_dates.py

  • Executable scriptline 1
    Executable file

plugins/blogger-ads-skill/skills/blogger-ads-skill/tests/test_erir_policy.py

  • Executable scriptline 1
    Executable file

plugins/blogger-ads-skill/skills/blogger-ads-skill/tests/test_exchange.py

  • Executable scriptline 1
    Executable file

plugins/blogger-ads-skill/skills/blogger-ads-skill/tests/test_handoff.py

  • Executable scriptline 1
    Executable file
  • Network accessline 130
    def test_received_link_report_with_matching_urls_passes_readonly(self):         urls = ['https://example.test/?b=2&a=1', 'https://example.test/?a=1&b=2'] * 2
  • Network accessline 131
    urls = ['https://example.test/?b=2&a=1', 'https://example.test/?a=1&b=2'] * 2
  • Network accessline 156
    def test_outgoing_docx_and_pdf_each_require_current_compared_link_report(self):         from pypdf.annotations import Link         url = 'https://example.test/product'
  • Network accessline 157
    from pypdf.annotations import Link         url = 'https://example.test/product'         self.import_post('Продукт', [{'anchor': 'Продукт', 'url': url}])
  • Network accessline 158
    url = 'https://example.test/product'
  • Network accessline 161
    with ZipFile(docx, 'w') as archive:             archive.writestr('word/document.xml',                 '<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" '
  • Network accessline 162
    archive.writestr('word/document.xml',                 '<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" '                 'xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><w:bo
  • Network accessline 163
    '<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" '
  • Network accessline 164
    'xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><w:body>'
  • Network accessline 166
    '</w:body></w:document>')             archive.writestr('word/_rels/document.xml.rels',                 '<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'
  • Network accessline 167
    archive.writestr('word/_rels/document.xml.rels',                 '<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'                 '<Relationship Id="r1" Type="http://schemas.openxmlformats.org/officeDoc
  • Network accessline 168
    '<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'
  • Network accessline 169
    '<Relationship Id="r1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" '
  • Network accessline 207
    self.register_link_report(report)         data = self.data()         data['creative']['links'] = ['https://example.test/expected']
  • Network accessline 208
    data = self.data()         data['creative']['links'] = ['https://example.test/expected']         handoff.save(self.state, data)
  • Network accessline 209
    data['creative']['links'] = ['https://example.test/expected']
  • Network accessline 216
    writer = PdfWriter()         writer.add_blank_page(300, 300)         writer.add_annotation(0, Link(rect=(10, 10, 100, 20), url='https://example.test/product'))
  • Network accessline 217
    writer.add_blank_page(300, 300)         writer.add_annotation(0, Link(rect=(10, 10, 100, 20), url='https://example.test/product'))         writer.pages[0]['/Annots'][0].get_object()['/A'].pop('/URI')
  • Network accessline 218
    writer.add_annotation(0, Link(rect=(10, 10, 100, 20), url='https://example.test/product'))
  • Network accessline 233
    import inspect_links         from pypdf.annotations import Link         wanted, actual = 'https://example.test/product', 'https://example.test/wrong-target'
  • Network accessline 234
    from pypdf.annotations import Link         wanted, actual = 'https://example.test/product', 'https://example.test/wrong-target'         data = self.data()
  • Network accessline 235
    wanted, actual = 'https://example.test/product', 'https://example.test/wrong-target'
  • Network accessline 249
    with ZipFile(source, 'w') as archive:                         archive.writestr('word/document.xml',                             '<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" '
  • Network accessline 250
    archive.writestr('word/document.xml',                             '<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" '                             'xmlns:r="http://schemas.openxmlformats.org/officeDocument/2
  • Network accessline 251
    '<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" '
  • Network accessline 252
    'xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'
  • Network accessline 254
    '</w:p></w:body></w:document>')                         archive.writestr('word/_rels/document.xml.rels',                             '<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'
  • Network accessline 255
    archive.writestr('word/_rels/document.xml.rels',                             '<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'                             f'<Relationship Id="r1" Type="http://schemas.ope
  • Network accessline 256
    '<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'
  • Network accessline 257
    f'<Relationship Id="r1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" '
  • Network accessline 306
    def test_link_report_rejects_tampered_comparison_and_malformed_rows(self):         url = 'https://example.test/product'
  • Network accessline 307
    url = 'https://example.test/product'
  • Network accessline 563
    before, mtime = self.state.read_bytes(), self.state.stat().st_mtime_ns         for text in ('План ещё не выдаю.', f'План готов: {files[1]}',                      '[План](https://example.org/plan.md)', '[План](#plan)'):
  • Network accessline 564
    for text in ('План ещё не выдаю.', f'План готов: {files[1]}',                      '[План](https://example.org/plan.md)', '[План](#plan)'):             with self.subTest(text=text):
  • Network accessline 565
    '[План](https://example.org/plan.md)', '[План](#plan)'):
  • Network accessline 596
    literal = self.file('document.txt?download=1', 'Зарегистрированная версия')         handoff.register(self.state, [literal], 'prepared', 'v1', self.at, group='reference')         for query in ('download=1', 'next=https://example.org'):
  • Network accessline 597
    handoff.register(self.state, [literal], 'prepared', 'v1', self.at, group='reference')         for query in ('download=1', 'next=https://example.org'):             with self.subTest(query=query):
  • Network accessline 598
    for query in ('download=1', 'next=https://example.org'):
  • Network accessline 1120
    def test_history_cannot_call_text_hash_a_full_creative_hash(self):         text = self.file('post.txt', 'Точный пост https://example.org')
  • Network accessline 1121
    text = self.file('post.txt', 'Точный пост https://example.org')
  • Network accessline 1122
    links = self.file('links.json', '["https://example.org"]')
  • Network accessline 1134
    text.write_text('Новая согласуемая редакция https://example.org')
  • Network accessline 1586
    def test_unregistered_accounting_files_are_checked_without_deal_state(self):         self.response.write_text(f'Учебный [счёт](<{self.artifact}>), [справка](https://example.com/guide), '
  • Network accessline 1587
    self.response.write_text(f'Учебный [счёт](<{self.artifact}>), [справка](https://example.com/guide), '
  • Network accessline 1641
    f'    [пример]({missing})\n\n'             f'[unused]: {missing}\n\n'             '[Справка][web]\n\n[web]: https://example.org/help "Справка"\n\n'
  • Network accessline 1642
    f'[unused]: {missing}\n\n'             '[Справка][web]\n\n[web]: https://example.org/help "Справка"\n\n'             f':codex-file-citation{{path="{self.artifact}" purpose="source"}}')
  • Network accessline 1643
    '[Справка][web]\n\n[web]: https://example.org/help "Справка"\n\n'
  • Network accessline 1692
    encoded = str(literal).replace('?', '%3F')         cases = ((f'{actual}?download=1#page', actual),                  (f'{actual}?next=https://example.org#page', actual),
  • Network accessline 1693
    cases = ((f'{actual}?download=1#page', actual),                  (f'{actual}?next=https://example.org#page', actual),                  (f'{actual}#page?download=1', actual),
  • Network accessline 1694
    (f'{actual}?next=https://example.org#page', actual),                  (f'{actual}#page?download=1', actual),                  (f'{actual}:12?download=1#page', actual),
  • Network accessline 1707
    self.assertEqual(data['local_links'], [str(expected.resolve())])         actual.unlink()         for query in ('download=1', 'next=https://example.org'):
  • Network accessline 1708
    actual.unlink()         for query in ('download=1', 'next=https://example.org'):             self.response.write_text(f'[Файл](<{actual}?{query}>)')
  • Network accessline 1709
    for query in ('download=1', 'next=https://example.org'):

plugins/blogger-ads-skill/skills/blogger-ads-skill/tests/test_links.py

  • Executable scriptline 1
    Executable file
  • Network accessline 28
    path = self.base / "received.pdf"         writer = PdfWriter()         for targets in [["https://example.test/?a=1&b=2", "https://example.test/?a=1&b=2"],
  • Network accessline 29
    writer = PdfWriter()         for targets in [["https://example.test/?a=1&b=2", "https://example.test/?a=1&b=2"],                         ["https://example.test/?b=2&a=1"]]:
  • Network accessline 30
    for targets in [["https://example.test/?a=1&b=2", "https://example.test/?a=1&b=2"],
  • Network accessline 31
    ["https://example.test/?b=2&a=1"]]:
  • Network accessline 45
    path = self.base / "received.docx"         with ZipFile(path, "w") as archive:             archive.writestr("word/document.xml", '''<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:r="http://schemas.o
  • Network accessline 46
    with ZipFile(path, "w") as archive:             archive.writestr("word/document.xml", '''<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relat
  • Network accessline 47
    archive.writestr("word/document.xml", '''<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><w:body>
  • Network accessline 48
    <w:p><w:hyperlink r:id="r1"><w:r><w:t>При</w:t></w:r><w:r><w:t>мер</w:t></w:r></w:hyperlink></w:p> <w:p><w:r><w:t>https://plain.example.test/</w:t></w:r><w:hyperlink r:id="r1"><w:r><w:t>OpenAI</w:t><w:tab/><w:t>тарифы</w:t><w:br/><w:t>подро
  • Network accessline 49
    <w:p><w:r><w:t>https://plain.example.test/</w:t></w:r><w:hyperlink r:id="r1"><w:r><w:t>OpenAI</w:t><w:tab/><w:t>тарифы</w:t><w:br/><w:t>подробнее</w:t></w:r></w:hyperlink><w:hyperlink r:id="r2"><w:r><w:t>Пример</w:t></w:r></w:hyperlink></w:
  • Network accessline 50
    </w:body></w:document>'''.replace("</w:body>", extra + "</w:body>"))             archive.writestr("word/_rels/document.xml.rels", '''<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> <Relationship Id="r1" 
  • Network accessline 51
    archive.writestr("word/_rels/document.xml.rels", '''<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
  • Network accessline 52
    <Relationship Id="r1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" Target="https://pricing.example.test/?a=1&amp;b=2" TargetMode="External"/>
  • Network accessline 53
    <Relationship Id="r2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" Target="https://product.example.test/?a=1&amp;b=2" TargetMode="External"/>
  • Network accessline 65
    rect = page.search_for('Product')[0]                     page.insert_link({'kind': pymupdf.LINK_URI, 'from': rect,                                       'uri': 'https://pricing.example.test/'})
  • Network accessline 66
    page.insert_link({'kind': pymupdf.LINK_URI, 'from': rect,                                       'uri': 'https://pricing.example.test/'})                     page.set_cropbox(pymupdf.Rect(10, 10, 290, 290))
  • Network accessline 67
    'uri': 'https://pricing.example.test/'})
  • Network accessline 74
    self.assertEqual(len(result['links']), 1)                 self.assertEqual(result['links'][0]['anchor_hint'].strip(), 'Product')                 self.assertEqual(result['links'][0]['target'], 'https://pricing.example.test/')
  • Network accessline 75
    self.assertEqual(result['links'][0]['anchor_hint'].strip(), 'Product')                 self.assertEqual(result['links'][0]['target'], 'https://pricing.example.test/')                 self.assertEqual(path.read_bytes(), original)
  • Network accessline 76
    self.assertEqual(result['links'][0]['target'], 'https://pricing.example.test/')
  • Network accessline 96
    self.assertEqual(len(actual), 3)  # Plain URL is not a relationship.         self.assertEqual(actual[0]["anchor"], "Пример")         self.assertEqual(actual[0]["target"], "https://pricing.example.test/?a=1&b=2")
  • Network accessline 97
    self.assertEqual(actual[0]["anchor"], "Пример")         self.assertEqual(actual[0]["target"], "https://pricing.example.test/?a=1&b=2")         self.assertEqual(actual[1]["anchor"], "OpenAI\tтарифы\nподробнее")
  • Network accessline 98
    self.assertEqual(actual[0]["target"], "https://pricing.example.test/?a=1&b=2")
  • Network accessline 105
    def test_docx_target_requires_external_hyperlink_relationship(self):         expected = ["https://pricing.example.test/?a=1&b=2"] * 2 + ["https://product.example.test/?a=1&b=2"]
  • Network accessline 106
    expected = ["https://pricing.example.test/?a=1&b=2"] * 2 + ["https://product.example.test/?a=1&b=2"]
  • Network accessline 107
    hyperlink_type = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink"
  • Network accessline 145
    def test_counts_expose_swapped_anchor_without_declaring_document_invalid(self):         expected = ["https://product.example.test/?a=1&b=2"] * 2 + ["https://pricing.example.test/?a=1&b=2"]
  • Network accessline 146
    expected = ["https://product.example.test/?a=1&b=2"] * 2 + ["https://pricing.example.test/?a=1&b=2"]
  • Network accessline 154
    def test_docx_hyperlink_fields_warn_even_when_relationship_urls_match(self):         expected = ["https://pricing.example.test/?a=1&b=2"] * 2 + ["https://product.example.test/?a=1&b=2"]
  • Network accessline 155
    expected = ["https://pricing.example.test/?a=1&b=2"] * 2 + ["https://product.example.test/?a=1&b=2"]
  • Network accessline 156
    for field in (                 '<w:fldSimple w:instr=\' HYPERLINK "https://hidden.example.test/" \'>\n'                 '<w:r><w:t>Другой адрес</w:t></w:r></w:fldSimple>',
  • Network accessline 157
    '<w:fldSimple w:instr=\' HYPERLINK "https://hidden.example.test/" \'>\n'
  • Network accessline 158
    '<w:r><w:t>Другой адрес</w:t></w:r></w:fldSimple>',                 '<w:r><w:fldChar w:fldCharType="begin"/><w:instrText> HYPERLINK "https://hidden.example.test/" </w:instrText>'                 '<w:fldChar w:fldCharType="separate"/><w:t>Др
  • Network accessline 159
    '<w:r><w:fldChar w:fldCharType="begin"/><w:instrText> HYPERLINK "https://hidden.example.test/" </w:instrText>'
  • Network accessline 160
    '<w:fldChar w:fldCharType="separate"/><w:t>Другой адрес</w:t><w:fldChar w:fldCharType="end"/></w:r>',                 '<w:r><w:fldChar w:fldCharType="begin"/><w:instrText> HYPER</w:instrText></w:r>'                 '<w:r><w:instrText>LINK "
  • Network accessline 161
    '<w:r><w:fldChar w:fldCharType="begin"/><w:instrText> HYPER</w:instrText></w:r>'                 '<w:r><w:instrText>LINK "https://hidden.example.test/" </w:instrText>'                 '<w:fldChar w:fldCharType="separate"/><w:t>Другой адрес<
  • Network accessline 162
    '<w:r><w:instrText>LINK "https://hidden.example.test/" </w:instrText>'
  • Network accessline 167
    if part != "word/document.xml":                         with ZipFile(path, "a") as archive:                             archive.writestr(part, '<w:hdr xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">'
  • Network accessline 168
    with ZipFile(path, "a") as archive:                             archive.writestr(part, '<w:hdr xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">'                                              '<w:p>' + field + '</w:p></
  • Network accessline 169
    archive.writestr(part, '<w:hdr xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">'
  • Network accessline 180
    def test_docx_other_fields_and_separate_instructions_do_not_warn(self):         fields = '<w:fldSimple w:instr=" PAGE "><w:r><w:t>1</w:t></w:r></w:fldSimple>'         for instruction in (' MERGEFIELD "HYPERLINK" ', ' HYPER', 'LINK "https://
  • Network accessline 181
    fields = '<w:fldSimple w:instr=" PAGE "><w:r><w:t>1</w:t></w:r></w:fldSimple>'         for instruction in (' MERGEFIELD "HYPERLINK" ', ' HYPER', 'LINK "https://example.test/" ', ' HYPERLINKED '):             fields += ('<w:r><w:fldChar w:fl
  • Network accessline 182
    for instruction in (' MERGEFIELD "HYPERLINK" ', ' HYPER', 'LINK "https://example.test/" ', ' HYPERLINKED '):
  • Network accessline 190
    def test_docx_drawingml_links_warn_in_every_word_part(self):         expected = ["https://pricing.example.test/?a=1&b=2"] * 2 + ["https://product.example.test/?a=1&b=2"]
  • Network accessline 191
    expected = ["https://pricing.example.test/?a=1&b=2"] * 2 + ["https://product.example.test/?a=1&b=2"]
  • Network accessline 192
    for tag in ("hlinkClick", "hlinkHover", "no_link"):             drawing = ('<w:p><w:r><w:drawing xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" '                        'xmlns:wp="http://schemas.openxmlformats.org/drawingml
  • Network accessline 193
    drawing = ('<w:p><w:r><w:drawing xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" '
  • Network accessline 194
    'xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" '
  • Network accessline 195
    'xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'
  • Network accessline 202
    if part != "word/document.xml":                         with ZipFile(path, "a") as archive:                             archive.writestr(part, '<w:hdr xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">'
  • Network accessline 203
    with ZipFile(path, "a") as archive:                             archive.writestr(part, '<w:hdr xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">'                                              + drawing + '</w:hdr>')
  • Network accessline 204
    archive.writestr(part, '<w:hdr xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">'
  • Network accessline 206
    rel_path = str(Path(part).parent / "_rels" / (Path(part).name + ".rels"))                             archive.writestr(rel_path,                                 '<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relations
  • Network accessline 207
    archive.writestr(rel_path,                                 '<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'                                 '<Relationship Id="r1" Type="http://schemas.openxmlformats.org
  • Network accessline 208
    '<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'
  • Network accessline 209
    '<Relationship Id="r1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" '
  • Network accessline 210
    'Target="https://hidden.example.test/" TargetMode="External"/></Relationships>')
  • Network accessline 221
    def test_docx_vml_href_warns_in_every_word_part(self):         url = "https://example.test/product"
  • Network accessline 222
    url = "https://example.test/product"
  • Network accessline 228
    ordinary = ('<w:p><w:hyperlink r:id="r1"><w:r><w:t>Продукт</w:t></w:r>'                                     '</w:hyperlink></w:p>') if with_links else ''                         vml = (f'<w:p><w:r><w:pict><v:{tag} {attribute}="https://hidde
  • Network accessline 229
    '</w:hyperlink></w:p>') if with_links else ''                         vml = (f'<w:p><w:r><w:pict><v:{tag} {attribute}="https://hidden.example.test/"/>'                                '</w:pict></w:r></w:p>')
  • Network accessline 230
    vml = (f'<w:p><w:r><w:pict><v:{tag} {attribute}="https://hidden.example.test/"/>'
  • Network accessline 231
    '</w:pict></w:r></w:p>')                         start = ('<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" '                                  'xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006
  • Network accessline 232
    start = ('<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" '
  • Network accessline 233
    'xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" '
  • Network accessline 241
    archive.writestr(part, start + vml + end)                             archive.writestr('word/_rels/document.xml.rels',                                 '<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'
  • Network accessline 242
    archive.writestr('word/_rels/document.xml.rels',                                 '<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'                                 '<Relationship Id="r1" Type="http://sche
  • Network accessline 243
    '<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'
  • Network accessline 244
    '<Relationship Id="r1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" '
  • Network accessline 268
    with ZipFile(path, "w") as archive:             archive.writestr("word/document.xml", '''<w:document  xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
  • Network accessline 269
    archive.writestr("word/document.xml", '''<w:document  xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"  xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
  • Network accessline 270
    xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
  • Network accessline 271
    xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
  • Network accessline 281
    relationships = ''.join(                 f'<Relationship Id="{name}" '                 'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" '
  • Network accessline 282
    f'<Relationship Id="{name}" '                 'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" '                 f'Target="https://example.test/{name}" TargetMode="External"/>'
  • Network accessline 283
    'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" '
  • Network accessline 284
    f'Target="https://example.test/{name}" TargetMode="External"/>'
  • Network accessline 285
    for name in ("before", "inside", "after", "last"))             archive.writestr("word/_rels/document.xml.rels",                             '<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'
  • Network accessline 286
    archive.writestr("word/_rels/document.xml.rels",                             '<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'                             + relationships + '</Relationships>')
  • Network accessline 287
    '<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'
  • Network accessline 288
    + relationships + '</Relationships>')         expected = [f"https://example.test/{name}" for name in ("before", "inside", "inside", "after", "last")]         original = path.read_bytes()
  • Network accessline 289
    expected = [f"https://example.test/{name}" for name in ("before", "inside", "inside", "after", "last")]
  • Network accessline 302
    def test_expected_list_keeps_order_duplicates_and_exact_parameters(self):         path = self.base / "expected.json"         expected = ["https://example.test/?b=2&a=1", "https://example.test/?a=1&b=2"] * 2
  • Network accessline 303
    path = self.base / "expected.json"         expected = ["https://example.test/?b=2&a=1", "https://example.test/?a=1&b=2"] * 2         path.write_text(json.dumps(expected), encoding="utf-8")
  • Network accessline 304
    expected = ["https://example.test/?b=2&a=1", "https://example.test/?a=1&b=2"] * 2
  • Network accessline 305
    path.write_text(json.dumps(expected), encoding="utf-8")         self.assertEqual(links.expected_urls(path), expected)         for invalid in [{"links": expected}, [["anchor", "неизвестный переход"]], ["https://bad example.test/"]]:
  • Network accessline 306
    self.assertEqual(links.expected_urls(path), expected)         for invalid in [{"links": expected}, [["anchor", "неизвестный переход"]], ["https://bad example.test/"]]:             path.write_text(json.dumps(invalid), encoding="utf-8")
  • Network accessline 307
    for invalid in [{"links": expected}, [["anchor", "неизвестный переход"]], ["https://bad example.test/"]]:
  • Network accessline 349
    result = links.inspect_links(path)         self.assertEqual(len(result["links"]), 3)         self.assertEqual(result["links"][0]["target"], "https://example.test/?a=1&b=2")
  • Network accessline 350
    self.assertEqual(len(result["links"]), 3)         self.assertEqual(result["links"][0]["target"], "https://example.test/?a=1&b=2")         self.assertIsNone(result["links"][0]["rect"])
  • Network accessline 351
    self.assertEqual(result["links"][0]["target"], "https://example.test/?a=1&b=2")
  • Network accessline 356
    def test_pdf_unparsed_actions_warn_even_when_urls_match(self):         expected = ["https://example.test/?a=1&b=2"] * 2 + ["https://example.test/?b=2&a=1"]
  • Network accessline 357
    expected = ["https://example.test/?a=1&b=2"] * 2 + ["https://example.test/?b=2&a=1"]
  • Network accessline 363
    page = writer.pages[0]                 action = DictionaryObject({NameObject("/S"): NameObject(kind if not kind.startswith("/Next") else "/Launch"),                                            NameObject("/F"): TextStringObject("https://hidd
  • Network accessline 364
    action = DictionaryObject({NameObject("/S"): NameObject(kind if not kind.startswith("/Next") else "/Launch"),                                            NameObject("/F"): TextStringObject("https://hidden.example.test/remote.pdf"),          
  • Network accessline 365
    NameObject("/F"): TextStringObject("https://hidden.example.test/remote.pdf"),
  • Network accessline 384
    def test_pdf_additional_annotation_actions_warn(self):         expected = ["https://example.test/?a=1&b=2"] * 2 + ["https://example.test/?b=2&a=1"]
  • Network accessline 385
    expected = ["https://example.test/?a=1&b=2"] * 2 + ["https://example.test/?b=2&a=1"]
  • Network accessline 399
    page["/Annots"].append(writer._add_object(annotation))                     action = DictionaryObject({NameObject("/S"): NameObject(kind),                         NameObject("/F"): TextStringObject("https://hidden.example.test/remote.pdf"),
  • Network accessline 400
    action = DictionaryObject({NameObject("/S"): NameObject(kind),                         NameObject("/F"): TextStringObject("https://hidden.example.test/remote.pdf"),                         NameObject("/D"): TextStringObject("section")})
  • Network accessline 401
    NameObject("/F"): TextStringObject("https://hidden.example.test/remote.pdf"),
  • Network accessline 413
    def test_pdf_non_link_primary_actions_warn(self):         expected = ["https://example.test/?a=1&b=2"] * 2 + ["https://example.test/?b=2&a=1"]
  • Network accessline 414
    expected = ["https://example.test/?a=1&b=2"] * 2 + ["https://example.test/?b=2&a=1"]
  • Network accessline 427
    annotation[NameObject("/A")] = writer._add_object(DictionaryObject({                             NameObject("/S"): NameObject("/URI"),                             NameObject("/URI"): TextStringObject("https://hidden.example.test/")}))
  • Network accessline 428
    NameObject("/S"): NameObject("/URI"),                             NameObject("/URI"): TextStringObject("https://hidden.example.test/")}))                     writer.pages[0]["/Annots"].append(writer._add_object(annotation))
  • Network accessline 429
    NameObject("/URI"): TextStringObject("https://hidden.example.test/")}))
  • Network accessline 450
    path = self.pdf()                         writer.clone_document_from_reader(PdfReader(path))                         expected = ["https://example.test/?a=1&b=2"] * 2 + ["https://example.test/?b=2&a=1"]
  • Network accessline 451
    writer.clone_document_from_reader(PdfReader(path))                         expected = ["https://example.test/?a=1&b=2"] * 2 + ["https://example.test/?b=2&a=1"]                     else:
  • Network accessline 452
    expected = ["https://example.test/?a=1&b=2"] * 2 + ["https://example.test/?b=2&a=1"]
  • Network accessline 456
    expected = []                     action = DictionaryObject({NameObject("/S"): NameObject("/URI"),                         NameObject("/URI"): TextStringObject("https://hidden.example.test/")})
  • Network accessline 457
    action = DictionaryObject({NameObject("/S"): NameObject("/URI"),                         NameObject("/URI"): TextStringObject("https://hidden.example.test/")})                     if kind in ("catalog /AA", "/Names/JavaScript"):
  • Network accessline 458
    NameObject("/URI"): TextStringObject("https://hidden.example.test/")})
  • Network accessline 508
    rel_path=None, relationship_type=None):         path = self.base / 'imported.docx'         url = 'https://example.test/product'
  • Network accessline 509
    path = self.base / 'imported.docx'         url = 'https://example.test/product'         ordinary = ('<w:p><w:hyperlink r:id="r1"><w:r><w:t>Продукт</w:t></w:r>'
  • Network accessline 510
    url = 'https://example.test/product'
  • Network accessline 512
    '</w:hyperlink></w:p>') if with_links else ''         chunk = '<w:altChunk r:id="import1"/>' if element else ''         start = ('<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" '
  • Network accessline 513
    chunk = '<w:altChunk r:id="import1"/>' if element else ''         start = ('<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" '                  'xmlns:r="http://schemas.openxmlformats.org/officeDocument/200
  • Network accessline 514
    start = ('<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" '
  • Network accessline 515
    'xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><w:body>')
  • Network accessline 519
    parts[part] = start + chunk + end         rels = {'word/_rels/document.xml.rels': (             '<Relationship Id="r1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" '
  • Network accessline 520
    rels = {'word/_rels/document.xml.rels': (             '<Relationship Id="r1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" '             f'Target="{url}" TargetMode="External"/>')}
  • Network accessline 521
    '<Relationship Id="r1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" '
  • Network accessline 523
    if relationship:             rel_path = rel_path or str(Path(part).parent / '_rels' / (Path(part).name + '.rels'))             relationship_type = relationship_type or 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/aFC
  • Network accessline 524
    rel_path = rel_path or str(Path(part).parent / '_rels' / (Path(part).name + '.rels'))             relationship_type = relationship_type or 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/aFChunk'             target = f'
  • Network accessline 525
    relationship_type = relationship_type or 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/aFChunk'
  • Network accessline 526
    target = f'https://remote.example.test/import.{extension}' if external else f'import.{extension}'
  • Network accessline 530
    if not external:                 parts[str(Path(part).parent / ('import.' + extension))] = (                     '<html><body><a href="https://hidden.example.test/">Дополнительный переход</a></body></html>'
  • Network accessline 531
    parts[str(Path(part).parent / ('import.' + extension))] = (                     '<html><body><a href="https://hidden.example.test/">Дополнительный переход</a></body></html>'                     if extension == 'html' else
  • Network accessline 532
    '<html><body><a href="https://hidden.example.test/">Дополнительный переход</a></body></html>'
  • Network accessline 533
    if extension == 'html' else                     'MIME-Version: 1.0\r\nContent-Type: text/html\r\n\r\n'                     '<a href="https://hidden.example.test/">Дополнительный переход</a>')
  • Network accessline 534
    'MIME-Version: 1.0\r\nContent-Type: text/html\r\n\r\n'                     '<a href="https://hidden.example.test/">Дополнительный переход</a>')         with ZipFile(path, 'w') as archive:
  • Network accessline 535
    '<a href="https://hidden.example.test/">Дополнительный переход</a>')
  • Network accessline 538
    archive.writestr(name, content)             for name, content in rels.items():                 archive.writestr(name, '<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'
  • Network accessline 539
    for name, content in rels.items():                 archive.writestr(name, '<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'                                  + content + '</Relationships>')
  • Network accessline 540
    archive.writestr(name, '<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'
  • Network accessline 576
    for rel_path in ('word/_rels/document.xml.rels', 'word/_rels/header1.xml.rels',                          'customXml/_rels/item1.xml.rels'):             for prefix in ('http://schemas.openxmlformats.org/officeDocument/2006/relationships/',
  • Network accessline 577
    'customXml/_rels/item1.xml.rels'):             for prefix in ('http://schemas.openxmlformats.org/officeDocument/2006/relationships/',                            'http://purl.oclc.org/ooxml/officeDocument/relationships/'):
  • Network accessline 578
    for prefix in ('http://schemas.openxmlformats.org/officeDocument/2006/relationships/',
  • Network accessline 579
    'http://purl.oclc.org/ooxml/officeDocument/relationships/'):
  • Network accessline 604
    def as_strict(self, path, strict_package=False):         replacements = {             'xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"':
  • Network accessline 605
    replacements = {             'xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"':                 'xmlns:w="http://purl.oclc.org/ooxml/wordprocessingml/main"',
  • Network accessline 606
    'xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"':
  • Network accessline 607
    'xmlns:w="http://purl.oclc.org/ooxml/wordprocessingml/main"',
  • Network accessline 608
    'xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"':
  • Network accessline 609
    'xmlns:a="http://purl.oclc.org/ooxml/drawingml/main"',
  • Network accessline 610
    'xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"':
  • Network accessline 611
    'xmlns:r="http://purl.oclc.org/ooxml/officeDocument/relationships"',
  • Network accessline 612
    'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/':
  • Network accessline 613
    'Type="http://purl.oclc.org/ooxml/officeDocument/relationships/',
  • Network accessline 614
    }         if strict_package:             replacements['xmlns="http://schemas.openxmlformats.org/package/2006/relationships"'] = (
  • Network accessline 615
    if strict_package:             replacements['xmlns="http://schemas.openxmlformats.org/package/2006/relationships"'] = (                 'xmlns="http://purl.oclc.org/ooxml/package/relationships"')
  • Network accessline 616
    replacements['xmlns="http://schemas.openxmlformats.org/package/2006/relationships"'] = (
  • Network accessline 617
    'xmlns="http://purl.oclc.org/ooxml/package/relationships"')
  • Network accessline 627
    def test_strict_links_match_transitional_anchors_locations_and_duplicate_urls(self):         expected = ['https://pricing.example.test/?a=1&b=2'] * 2 + ['https://product.example.test/?a=1&b=2']
  • Network accessline 628
    expected = ['https://pricing.example.test/?a=1&b=2'] * 2 + ['https://product.example.test/?a=1&b=2']
  • Network accessline 649
    def test_strict_internal_anchor_and_literal_namespace_urls_are_preserved(self):         literal = 'http://purl.oclc.org/ooxml/officeDocument/relationships/hyperlink?b=2&a=1&a=2#raw'
  • Network accessline 650
    literal = 'http://purl.oclc.org/ooxml/officeDocument/relationships/hyperlink?b=2&a=1&a=2#raw'
  • Network accessline 656
    parts['word/document.xml'] = parts['word/document.xml'].replace('<w:t>При</w:t>'.encode(), b'<w:t>' + escaped + b'</w:t>')         parts['word/_rels/document.xml.rels'] = parts['word/_rels/document.xml.rels'].replace(             b'https://
  • Network accessline 657
    parts['word/_rels/document.xml.rels'] = parts['word/_rels/document.xml.rels'].replace(             b'https://pricing.example.test/?a=1&amp;b=2', escaped)         with ZipFile(path, 'w') as archive:
  • Network accessline 658
    b'https://pricing.example.test/?a=1&amp;b=2', escaped)
  • Network accessline 671
    def test_strict_unparsed_features_keep_warnings(self):         features = {             'HYPERLINK': '<w:p><w:fldSimple w:instr=\' HYPERLINK "https://hidden.example.test/" \'> '
  • Network accessline 672
    features = {             'HYPERLINK': '<w:p><w:fldSimple w:instr=\' HYPERLINK "https://hidden.example.test/" \'> '                          '<w:r><w:t>Импорт</w:t></w:r></w:fldSimple></w:p>',
  • Network accessline 673
    'HYPERLINK': '<w:p><w:fldSimple w:instr=\' HYPERLINK "https://hidden.example.test/" \'> '
  • Network accessline 674
    '<w:r><w:t>Импорт</w:t></w:r></w:fldSimple></w:p>',             'split-field': '<w:p><w:r><w:fldChar w:fldCharType="begin"/><w:instrText> HYPER</w:instrText></w:r>'                            '<w:r><w:instrText>LINK "https://hidden.example.
  • Network accessline 675
    'split-field': '<w:p><w:r><w:fldChar w:fldCharType="begin"/><w:instrText> HYPER</w:instrText></w:r>'                            '<w:r><w:instrText>LINK "https://hidden.example.test/" </w:instrText>'                            '<w:fldChar w:
  • Network accessline 676
    '<w:r><w:instrText>LINK "https://hidden.example.test/" </w:instrText>'
  • Network accessline 677
    '<w:fldChar w:fldCharType="end"/></w:r></w:p>',             'hlinkClick': '<w:p><w:r><w:drawing xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">'                           '<a:hlinkClick r:id="r1"/></w:drawing></w:r></w:p>',
  • Network accessline 678
    'hlinkClick': '<w:p><w:r><w:drawing xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">'
  • Network accessline 679
    '<a:hlinkClick r:id="r1"/></w:drawing></w:r></w:p>',             'hlinkHover': '<w:p><w:r><w:drawing xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">'                           '<a:hlinkHover r:id="r1"/></w:drawing></w:r></w
  • Network accessline 680
    'hlinkHover': '<w:p><w:r><w:drawing xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">'
  • Network accessline 706
    path = self.pdf()             writer.clone_document_from_reader(PdfReader(path))             expected = ["https://example.test/?a=1&b=2"] * 2 + ["https://example.test/?b=2&a=1"]
  • Network accessline 707
    writer.clone_document_from_reader(PdfReader(path))             expected = ["https://example.test/?a=1&b=2"] * 2 + ["https://example.test/?b=2&a=1"]         else:
  • Network accessline 708
    expected = ["https://example.test/?a=1&b=2"] * 2 + ["https://example.test/?b=2&a=1"]
  • Network accessline 717
    NameObject("/Parent"): outline_ref,                 NameObject("/A"): DictionaryObject({NameObject("/S"): NameObject("/URI"),                     NameObject("/URI"): TextStringObject("https://hidden.example.test/bookmark")})})
  • Network accessline 718
    NameObject("/A"): DictionaryObject({NameObject("/S"): NameObject("/URI"),                     NameObject("/URI"): TextStringObject("https://hidden.example.test/bookmark")})})             item_ref = writer._add_object(item)
  • Network accessline 719
    NameObject("/URI"): TextStringObject("https://hidden.example.test/bookmark")})})
  • Network accessline 724
    elif kind == "/AcroForm":             action = DictionaryObject({NameObject("/S"): NameObject("/JavaScript"),                 NameObject("/JS"): TextStringObject("app.launchURL('https://hidden.example.test/form')")})
  • Network accessline 725
    action = DictionaryObject({NameObject("/S"): NameObject("/JavaScript"),                 NameObject("/JS"): TextStringObject("app.launchURL('https://hidden.example.test/form')")})             field = DictionaryObject({NameObject("/FT"): Name
  • Network accessline 726
    NameObject("/JS"): TextStringObject("app.launchURL('https://hidden.example.test/form')")})
  • Network accessline 748
    catalog = PdfReader(path).trailer["/Root"]                 if kind == "/Outlines":                     self.assertEqual(catalog[kind]["/First"]["/A"]["/URI"], "https://hidden.example.test/bookmark")
  • Network accessline 749
    if kind == "/Outlines":                     self.assertEqual(catalog[kind]["/First"]["/A"]["/URI"], "https://hidden.example.test/bookmark")                 else:
  • Network accessline 750
    self.assertEqual(catalog[kind]["/First"]["/A"]["/URI"], "https://hidden.example.test/bookmark")

plugins/blogger-ads-skill/skills/blogger-ads-skill/tests/test_print_html.py

  • Executable scriptline 1
    Executable file

plugins/codex-review/skills/codex-review/.gitignore

  • Access to secretsline 1
    [Credential-related source omitted]

plugins/codex-review/skills/codex-review/README.md

  • Dangerous shell operationline 56
    git rm -r --cached --ignore-unmatch .codex-review/

plugins/codex-review/skills/codex-review/scripts/auto-approve-plan.sh

  • Executable scriptline 1
    #!/bin/sh
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 92
    rm -f "$verdict_file" "$phase_file"
  • Dangerous shell operationline 92
    rm -f "$verdict_file" "$phase_file"
  • Dangerous shell operationline 101
    rm -f "$verdict_file" "$phase_file"
  • Dangerous shell operationline 101
    rm -f "$verdict_file" "$phase_file"
  • Dangerous shell operationline 130
    rm -f "$verdict_file" "$phase_file"
  • Dangerous shell operationline 130
    rm -f "$verdict_file" "$phase_file"
  • Dangerous shell operationline 138
    rm -f "$verdict_file" "$phase_file"
  • Dangerous shell operationline 138
    rm -f "$verdict_file" "$phase_file"

plugins/codex-review/skills/codex-review/scripts/codex-review.sh

  • Executable scriptline 1
    #!/bin/bash
  • Dangerous shell operationline 601
    rm -f "$STATE_DIR/verdict.txt" "$STATE_DIR/verdict.phase"
  • Dangerous shell operationline 777
    rm -f "$STATE_DIR/verdict.txt" "$STATE_DIR/verdict.phase" "$output_file"

plugins/codex-review/skills/codex-review/scripts/codex-state.sh

  • Executable scriptline 1
    #!/bin/bash

plugins/codex-review/skills/codex-review/scripts/common.sh

  • Executable scriptline 1
    #!/bin/bash
  • Dangerous shell operationline 395
    rm -f "$orphan"
  • Dangerous shell operationline 399
    rm -f "$tmp_file"
  • Dangerous shell operationline 404
    rm -f "$tmp_file"
  • Dangerous shell operationline 448
    rm -f "$STATE_DIR/STATUS.md"
  • Dangerous shell operationline 567
    if ! rm -rf "$dir"; then
  • Dangerous shell operationline 595
    rm -f "$tmp_file"
  • Dangerous shell operationline 598
    if rm -rf "$lock_dir"; then

plugins/crawl4ai-seo/skills/crawl4ai-seo/SKILL.md

  • Network accessline 63
    # 1. Создать job python3 scripts/init_job.py --domain https://example.com --project client-a --label full-audit
  • Network accessline 64
    python3 scripts/init_job.py --domain https://example.com --project client-a --label full-audit
  • Network accessline 85
    python3 scripts/seed_urls.py --domain https://example.com --project client-a --label quick-check

plugins/crawl4ai-seo/skills/crawl4ai-seo/config/README.md

  • Network accessline 20
    {   "target": { "domain": "https://example.com" },
  • Network accessline 21
    "target": { "domain": "https://example.com" },

plugins/crawl4ai-seo/skills/crawl4ai-seo/config/defaults.example.json

  • Network accessline 37
    "enabled": false,     "token_file": "../scrapedo-web-scraper/config/token.txt",     "api_base": "http://api.scrape.do"
  • Network accessline 38
    "token_file": "../scrapedo-web-scraper/config/token.txt",     "api_base": "http://api.scrape.do"   }
  • Network accessline 39
    "api_base": "http://api.scrape.do"

plugins/crawl4ai-seo/skills/crawl4ai-seo/references/WORKFLOWS.md

  • Network accessline 10
    python3 scripts/init_job.py --domain https://example.com --project client-a --label site-inventory
  • Network accessline 33
    uv run --script scripts/crawl_batch.py \   --domain https://example.com \
  • Network accessline 34
    --domain https://example.com \
  • Network accessline 35
    --label serp-shortlist \   --url https://example.com/page-a \   --url https://competitor.com/page-b
  • Network accessline 36
    --url https://example.com/page-a \
  • Network accessline 37
    --url https://competitor.com/page-b

plugins/crawl4ai-seo/skills/crawl4ai-seo/scripts/build_navigation_report.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 326
    if url != f"https://{domain}/" and incoming == 0:

plugins/crawl4ai-seo/skills/crawl4ai-seo/scripts/common.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 87
    if not value:         return ""     parsed = urlparse(value if "://" in value else f"https://{value}")
  • Network accessline 88
    return ""     parsed = urlparse(value if "://" in value else f"https://{value}")     return (parsed.netloc or parsed.path).lower().strip()
  • Network accessline 89
    parsed = urlparse(value if "://" in value else f"https://{value}")
  • Network accessline 95
    if not value:         return value     parsed = urlparse(value if "://" in value else f"https://{value}")
  • Network accessline 96
    return value     parsed = urlparse(value if "://" in value else f"https://{value}")     scheme = parsed.scheme or "https"
  • Network accessline 97
    parsed = urlparse(value if "://" in value else f"https://{value}")

plugins/crawl4ai-seo/skills/crawl4ai-seo/scripts/compare_pages.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/crawl4ai-seo/skills/crawl4ai-seo/scripts/crawl_batch.py

  • Executable scriptline 1
    #!/usr/bin/env -S uv run --script

plugins/crawl4ai-seo/skills/crawl4ai-seo/scripts/doctor.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/crawl4ai-seo/skills/crawl4ai-seo/scripts/seed_urls.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 35
    def fetch_text(url: str, timeout: int) -> str | None:     req = urllib.request.Request(url, headers={"User-Agent": USER_AGENT})
  • Network accessline 36
    req = urllib.request.Request(url, headers={"User-Agent": USER_AGENT})
  • Network accessline 37
    try:         with urllib.request.urlopen(req, timeout=timeout) as response:             content_type = response.headers.get("Content-Type", "")
  • Network accessline 38
    with urllib.request.urlopen(req, timeout=timeout) as response:
  • Network accessline 138
    parser.add_argument("--params", help="Path to JSON launch params")     parser.add_argument("--job-id", help="Existing job_id to reuse, or new one to create")     parser.add_argument("--domain", help="Domain or site root, e.g. https://exampl
  • Network accessline 139
    parser.add_argument("--job-id", help="Existing job_id to reuse, or new one to create")     parser.add_argument("--domain", help="Domain or site root, e.g. https://example.com")     parser.add_argument("--site", help="Optional site slug over
  • Network accessline 140
    parser.add_argument("--domain", help="Domain or site root, e.g. https://example.com")
  • Network accessline 246
    context = existing_job     else:         target_domain = domain_hint or f"https://{domain_host}"
  • Network accessline 247
    else:         target_domain = domain_hint or f"https://{domain_host}"         launch_params = deep_merge(
  • Network accessline 248
    target_domain = domain_hint or f"https://{domain_host}"

plugins/docx-contracts/skills/docx-contracts/scripts/extract_schema.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/docx-contracts/skills/docx-contracts/scripts/fill_template.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/fal-ai-image/skills/fal-ai-image/.gitignore

  • Access to secretsline 2
    [Credential-related source omitted]

plugins/fal-ai-image/skills/fal-ai-image/SKILL.md

  • Network accessline 192
    sh scripts/edit.sh    --model "gemini"    --prompt "combine these into a collage"    --image-urls "https://example.com/img1.png,https://example.com/img2.png"
  • Network accessline 193
    --model "gemini" \   --prompt "combine these into a collage" \   --image-urls "https://example.com/img1.png,https://example.com/img2.png" \
  • Network accessline 194
    --prompt "combine these into a collage" \   --image-urls "https://example.com/img1.png,https://example.com/img2.png" \   --aspect-ratio "16:9" \
  • Network accessline 195
    --image-urls "https://example.com/img1.png,https://example.com/img2.png" \
  • Network accessline 204
    sh scripts/edit.sh    --model "gpt"    --prompt "make this product shot look like a premium studio campaign"    --image-urls "https://example.com/source.png"
  • Network accessline 205
    --model "gpt" \   --prompt "make this product shot look like a premium studio campaign" \   --image-urls "https://example.com/source.png" \
  • Network accessline 206
    --prompt "make this product shot look like a premium studio campaign" \   --image-urls "https://example.com/source.png" \   --mask-url "https://example.com/mask.png" \
  • Network accessline 207
    --image-urls "https://example.com/source.png" \
  • Network accessline 208
    --mask-url "https://example.com/mask.png" \

plugins/fal-ai-image/skills/fal-ai-image/config/.env.example

  • Network accessline 1
    # fal.ai API key (required for both Nano Banana Pro and GPT Image 2 on fal) # Get yours at: https://fal.ai/dashboard/keys
  • Network accessline 2
    # Get yours at: https://fal.ai/dashboard/keys

plugins/fal-ai-image/skills/fal-ai-image/config/README.md

  • Network accessline 48
    1. Get an API key at https://fal.ai/dashboard/keys
  • Network accessline 130
    As of April 22, 2026, fal's GPT Image 2 playground shows common high-quality renders landing roughly around `$0.15-$0.22` per image depending on size, so the "about $0.18" rule of thumb is reasonable for user guidance. Verify current prices
  • Network accessline 199
    - Nano Banana Pro API: https://fal.ai/models/fal-ai/nano-banana-pro/api
  • Network accessline 200
    - Nano Banana Pro edit API: https://fal.ai/models/fal-ai/nano-banana-pro/edit/api
  • Network accessline 201
    - GPT Image 2 API: https://fal.ai/models/openai/gpt-image-2/api
  • Network accessline 202
    - GPT Image 2 edit API: https://fal.ai/models/openai/gpt-image-2/edit/api

plugins/fal-ai-image/skills/fal-ai-image/references/EDITING.md

  • Network accessline 67
    sh scripts/edit.sh \   --model gpt \   --image-urls "https://example.com/base.png" \
  • Network accessline 68
    --model gpt \   --image-urls "https://example.com/base.png" \   --mask-url "https://example.com/mask.png" \
  • Network accessline 69
    --image-urls "https://example.com/base.png" \
  • Network accessline 70
    --mask-url "https://example.com/mask.png" \
  • Network accessline 78
    - fal GPT edit API: https://fal.ai/models/openai/gpt-image-2/edit/api
  • Network accessline 79
    - OpenAI image generation guide: https://platform.openai.com/docs/guides/image-generation

plugins/fal-ai-image/skills/fal-ai-image/references/MODELS.md

  • Network accessline 48
    - https://fal.ai/models/openai/gpt-image-2/playground

plugins/fal-ai-image/skills/fal-ai-image/scripts/common.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 31
    [Credential-related source omitted]
  • Access to secretsline 101
    [Credential-related source omitted]
  • Access to secretsline 102
    [Credential-related source omitted]
  • Network accessline 153
    queue_api_base() {     printf 'https://queue.fal.run/%s\n' "$(model_queue_name "$1")"
  • Network accessline 154
    printf 'https://queue.fal.run/%s\n' "$(model_queue_name "$1")"
  • Network accessline 157
    request_api_base() {     printf 'https://queue.fal.run/%s\n' "$FAL_IMAGE_MODEL_RESOLVED"
  • Network accessline 158
    printf 'https://queue.fal.run/%s\n' "$FAL_IMAGE_MODEL_RESOLVED"
  • Access to secretsline 168
    [Credential-related source omitted]
  • Access to secretsline 208
    [Credential-related source omitted]
  • Access to secretsline 246
    [Credential-related source omitted]
  • Access to secretsline 247
    [Credential-related source omitted]
  • Access to secretsline 248
    [Credential-related source omitted]
  • Access to secretsline 249
    [Credential-related source omitted]
  • Network accessline 375
    [Credential-related source omitted]
  • Access to secretsline 375
    [Credential-related source omitted]
  • Access to secretsline 376
    [Credential-related source omitted]
  • Network accessline 387
    while [ "$_attempt" -lt "$_max_attempts" ]; do         _status_response=$(curl -s "$_api_base/requests/$_request_id/status" \
  • Network accessline 388
    [Credential-related source omitted]
  • Access to secretsline 388
    [Credential-related source omitted]
  • Access to secretsline 389
    [Credential-related source omitted]
  • Network accessline 424
    [Credential-related source omitted]
  • Access to secretsline 424
    [Credential-related source omitted]
  • Access to secretsline 425
    [Credential-related source omitted]
  • Network accessline 448
    if curl -s -o "$_output_path" "$_url"; then

plugins/fal-ai-image/skills/fal-ai-image/scripts/edit.sh

  • Executable scriptline 1
    #!/bin/sh

plugins/fal-ai-image/skills/fal-ai-image/scripts/generate.sh

  • Executable scriptline 1
    #!/bin/sh

plugins/fal-ai-image/skills/fal-ai-image/scripts/tests/run.sh

  • Executable scriptline 1
    #!/bin/sh

plugins/fal-ai-image/skills/fal-ai-image/scripts/tests/test_config_selector.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 17
    rm -rf "$_td"
  • Access to secretsline 25
    [Credential-related source omitted]
  • Access to secretsline 28
    [Credential-related source omitted]
  • Dangerous shell operationline 45
    rm -rf "$_td"

plugins/fal-ai-image/skills/fal-ai-image/scripts/tests/test_edit_openai_mask.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 11
    rm -rf "$TMP_DIR"
  • Access to secretsline 16
    [Credential-related source omitted]
  • Network accessline 23
    cat > "$TMP_DIR/bin/curl" <<'EOF'
  • Network accessline 41
    NEXT_IS_DATA="true"             ;;         http://*|https://*)
  • Network accessline 42
    ;;         http://*|https://*)             URL="$arg"
  • Network accessline 43
    http://*|https://*)
  • Network accessline 55
    ;;     */requests/req-test)         printf '{"images":[{"url":"https://example.com/result.png","content_type":"image/png","file_name":"result.png"}]}'
  • Network accessline 56
    */requests/req-test)         printf '{"images":[{"url":"https://example.com/result.png","content_type":"image/png","file_name":"result.png"}]}'         ;;
  • Network accessline 57
    printf '{"images":[{"url":"https://example.com/result.png","content_type":"image/png","file_name":"result.png"}]}'
  • Access to secretsline 67
    [Credential-related source omitted]
  • Network accessline 74
    sh "$SCRIPTS_DIR/edit.sh"    --model gpt    --prompt "targeted edit"    --image-urls "https://example.com/source.png"
  • Network accessline 75
    --model gpt \   --prompt "targeted edit" \   --image-urls "https://example.com/source.png" \
  • Network accessline 76
    --prompt "targeted edit" \   --image-urls "https://example.com/source.png" \   --mask-url "https://example.com/mask.png" \
  • Network accessline 77
    --image-urls "https://example.com/source.png" \
  • Network accessline 78
    --mask-url "https://example.com/mask.png" \
  • Network accessline 82
    grep '"mask_url":"https://example.com/mask.png"' "$FAL_TEST_LOG_DIR/payload.json" >/dev/null grep 'https://queue.fal.run/openai/gpt-image-2/edit' "$FAL_TEST_LOG_DIR/url.txt" >/dev/null grep 'https://queue.fal.run/openai/gpt-image-2/requests
  • Network accessline 83
    grep 'https://queue.fal.run/openai/gpt-image-2/edit' "$FAL_TEST_LOG_DIR/url.txt" >/dev/null
  • Network accessline 84
    grep 'https://queue.fal.run/openai/gpt-image-2/requests/req-test/status' "$FAL_TEST_LOG_DIR/url.txt" >/dev/null

plugins/fal-ai-image/skills/fal-ai-image/scripts/tests/test_openai_image_size.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 11
    rm -rf "$TMP_DIR"
  • Access to secretsline 16
    [Credential-related source omitted]
  • Access to secretsline 21
    [Credential-related source omitted]

plugins/fal-ai-image/skills/fal-ai-image/scripts/upload.sh

  • Executable scriptline 1
    #!/bin/sh
  • Network accessline 55
    [Credential-related source omitted]
  • Access to secretsline 55
    [Credential-related source omitted]
  • Access to secretsline 56
    [Credential-related source omitted]
  • Network accessline 75
    UPLOAD_RESULT=$(curl -s -X PUT "$UPLOAD_URL" \

plugins/genome-analizer/skills/genome-analizer/SKILL.md

  • Network accessline 104
    **Источники:** [SNPedia](https://snpedia.com), [GWAS Catalog](https://www.ebi.ac.uk/gwas/)
  • Network accessline 104
    **Источники:** [SNPedia](https://snpedia.com), [GWAS Catalog](https://www.ebi.ac.uk/gwas/)

plugins/github-pages-publisher/skills/github-pages-publisher/.gitignore

  • Access to secretsline 1
    [Credential-related source omitted]

plugins/github-pages-publisher/skills/github-pages-publisher/config/.env.example

  • Network accessline 2
    GHPAGES_REPO=YOURS_PROFILE/YOURS_REPO GHPAGES_BRANCH=main GHPAGES_PAGES_BASE_URL=https://YOURS_PROFILE.github.io/YOURS_REPO
  • Network accessline 4
    GHPAGES_PAGES_BASE_URL=https://YOURS_PROFILE.github.io/YOURS_REPO

plugins/github-pages-publisher/skills/github-pages-publisher/config/README.md

  • Network accessline 6
    - `GHPAGES_REPO` — `owner/repo` - `GHPAGES_BRANCH` — target branch (usually `main` or `gh-pages`) - `GHPAGES_PAGES_BASE_URL` — public Pages base URL, for example `https://example.github.io/repo`
  • Network accessline 8
    - `GHPAGES_PAGES_BASE_URL` — public Pages base URL, for example `https://example.github.io/repo`

plugins/github-pages-publisher/skills/github-pages-publisher/scripts/optimize_images.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/github-pages-publisher/skills/github-pages-publisher/scripts/publish_static.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 68
    [Credential-related source omitted]
  • Access to secretsline 69
    [Credential-related source omitted]
  • Access to secretsline 70
    [Credential-related source omitted]
  • Access to secretsline 71
    [Credential-related source omitted]
  • Network accessline 83
    [Credential-related source omitted]
  • Network accessline 84
    [Credential-related source omitted]
  • Network accessline 85
    [Credential-related source omitted]

plugins/knowledge-compiler/skills/knowledge-compiler/references/QUALITY_GATE.md

  • Network accessline 28
    Совпадение `seg-*` только в пути или параметрах URL не считается указателем источника. Например, обычная ссылка с подписью «Документация» на `https://example.com/seg-999/guide` не требует сегмента `seg-999` в карте.

plugins/knowledge-compiler/skills/knowledge-compiler/scripts/build_skill_skeleton.sh

  • Executable scriptline 1
    #!/bin/sh

plugins/knowledge-compiler/skills/knowledge-compiler/scripts/doctor.sh

  • Executable scriptline 1
    #!/bin/sh

plugins/knowledge-compiler/skills/knowledge-compiler/scripts/extract_docling.py

  • Executable scriptline 1
    #!/usr/bin/env -S uv run --script

plugins/knowledge-compiler/skills/knowledge-compiler/scripts/extract_pdfminer.py

  • Executable scriptline 1
    #!/usr/bin/env -S uv run --script

plugins/knowledge-compiler/skills/knowledge-compiler/scripts/extract_pypdf.py

  • Executable scriptline 1
    #!/usr/bin/env -S uv run --script

plugins/knowledge-compiler/skills/knowledge-compiler/scripts/extract_source.py

  • Executable scriptline 1
    #!/usr/bin/env -S uv run --script
  • Access to secretsline 123
    [Credential-related source omitted]
  • Network accessline 183
    opf_dir = posixpath.dirname(rootfile)         opf = ElementTree.fromstring(zf.read(rootfile))         ns = {"opf": "http://www.idpf.org/2007/opf"}
  • Network accessline 184
    opf = ElementTree.fromstring(zf.read(rootfile))         ns = {"opf": "http://www.idpf.org/2007/opf"}         manifest: dict[str, str] = {}
  • Network accessline 185
    ns = {"opf": "http://www.idpf.org/2007/opf"}

plugins/knowledge-compiler/skills/knowledge-compiler/scripts/outline_scout.py

  • Executable scriptline 1
    #!/usr/bin/env -S uv run --script

plugins/knowledge-compiler/skills/knowledge-compiler/scripts/prepare_source.sh

  • Executable scriptline 1
    #!/bin/sh

plugins/knowledge-compiler/skills/knowledge-compiler/scripts/quality_gate.py

  • Executable scriptline 1
    #!/usr/bin/env -S uv run --script

plugins/knowledge-compiler/skills/knowledge-compiler/scripts/segment_text.py

  • Executable scriptline 1
    #!/usr/bin/env -S uv run --script

plugins/knowledge-compiler/skills/knowledge-compiler/scripts/tests/run.sh

  • Executable scriptline 1
    #!/bin/sh

plugins/knowledge-compiler/skills/knowledge-compiler/scripts/tests/test_epub_metadata.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 8
    trap 'rm -rf "$TMP_DIR"' EXIT
  • Network accessline 29
    "OEBPS/content.opf",         """<?xml version="1.0"?> <package xmlns="http://www.idpf.org/2007/opf" version="2.0" unique-identifier="bookid">
  • Network accessline 30
    """<?xml version="1.0"?> <package xmlns="http://www.idpf.org/2007/opf" version="2.0" unique-identifier="bookid">   <metadata xmlns:dc="http://purl.org/dc/elements/1.1/">
  • Network accessline 31
    <package xmlns="http://www.idpf.org/2007/opf" version="2.0" unique-identifier="bookid">
  • Network accessline 32
    <metadata xmlns:dc="http://purl.org/dc/elements/1.1/">
  • Network accessline 49
    "OEBPS/toc.ncx",         """<?xml version="1.0"?> <ncx xmlns="http://www.daisy.org/z3986/2005/ncx/">
  • Network accessline 50
    """<?xml version="1.0"?> <ncx xmlns="http://www.daisy.org/z3986/2005/ncx/">   <navMap>
  • Network accessline 51
    <ncx xmlns="http://www.daisy.org/z3986/2005/ncx/">
  • Network accessline 65
    zf.writestr(         "OEBPS/ch1.xhtml",         """<html xmlns="http://www.w3.org/1999/xhtml"><body><h1>1.\u00a0First chapter</h1><p>Main content.</p></body></html>""",
  • Network accessline 66
    "OEBPS/ch1.xhtml",         """<html xmlns="http://www.w3.org/1999/xhtml"><body><h1>1.\u00a0First chapter</h1><p>Main content.</p></body></html>""",     )
  • Network accessline 67
    """<html xmlns="http://www.w3.org/1999/xhtml"><body><h1>1.\u00a0First chapter</h1><p>Main content.</p></body></html>""",
  • Network accessline 69
    zf.writestr(         "OEBPS/appendix.xhtml",         """<html xmlns="http://www.w3.org/1999/xhtml"><body><h1>Appendix</h1><p>Short appendix.</p></body></html>""",
  • Network accessline 70
    "OEBPS/appendix.xhtml",         """<html xmlns="http://www.w3.org/1999/xhtml"><body><h1>Appendix</h1><p>Short appendix.</p></body></html>""",     )
  • Network accessline 71
    """<html xmlns="http://www.w3.org/1999/xhtml"><body><h1>Appendix</h1><p>Short appendix.</p></body></html>""",

plugins/knowledge-compiler/skills/knowledge-compiler/scripts/tests/test_non_pdf_no_pdf_deps.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 8
    trap 'rm -rf "$TMP_DIR"' EXIT

plugins/knowledge-compiler/skills/knowledge-compiler/scripts/tests/test_outline_scout.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 8
    trap 'rm -rf "$TMP_DIR"' EXIT

plugins/knowledge-compiler/skills/knowledge-compiler/scripts/tests/test_quality_gate.py

  • Executable scriptline 1
    #!/usr/bin/env -S uv run --script
  • Access to secretsline 99
    [Credential-related source omitted]
  • Access to secretsline 439
    [Credential-related source omitted]
  • Network accessline 1001
    "concepts.md#seg-001",                 "missing.md#seg-001",                 "https://example.com/source-index.md#seg-001",
  • Network accessline 1002
    "missing.md#seg-001",                 "https://example.com/source-index.md#seg-001",                 f"{self.index.as_posix()}#seg-001",
  • Network accessline 1003
    "https://example.com/source-index.md#seg-001",
  • Network accessline 1069
    def test_new_html_anchor_does_not_discard_previous_unclosed_link(self):         for next_link in (             '<a href="https://example.com">guide</a>',
  • Network accessline 1070
    for next_link in (             '<a href="https://example.com">guide</a>',             '<a href="source-index.md#seg-001">seg-001</a>',
  • Network accessline 1071
    '<a href="https://example.com">guide</a>',
  • Network accessline 1248
    '<area href="source-index.md#seg-001" alt="seg-001">',             '<area href="source-index.md#seg-001" alt="Источник">',             '<area href="https://example.com/help" alt="Справка">',
  • Network accessline 1249
    '<area href="source-index.md#seg-001" alt="Источник">',             '<area href="https://example.com/help" alt="Справка">',             '<area alt="seg-001">',
  • Network accessline 1250
    '<area href="https://example.com/help" alt="Справка">',
  • Network accessline 1336
    def test_segment_names_in_url_paths_and_queries_are_not_references(self):         for example in (             "[docs](https://example.com/seg-999/guide)",
  • Network accessline 1337
    for example in (             "[docs](https://example.com/seg-999/guide)",             "![diagram](images/seg-999.png)",
  • Network accessline 1338
    "[docs](https://example.com/seg-999/guide)",
  • Network accessline 1339
    "![diagram](images/seg-999.png)",             "[docs](https://example.com/guide?section=seg-999)",             "[docs][guide]\n\n[guide]: https://example.com/seg-999/guide",
  • Network accessline 1340
    "[docs](https://example.com/guide?section=seg-999)",
  • Network accessline 1341
    "[docs][guide]\n\n[guide]: https://example.com/seg-999/guide",

plugins/knowledge-compiler/skills/knowledge-compiler/scripts/tests/test_quality_gate.sh

  • Executable scriptline 1
    #!/bin/sh

plugins/knowledge-compiler/skills/knowledge-compiler/scripts/tests/test_segment_decision.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 8
    trap 'rm -rf "$TMP_DIR"' EXIT

plugins/knowledge-compiler/skills/knowledge-compiler/scripts/tests/test_toc_segmentation.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 8
    trap 'rm -rf "$TMP_DIR"' EXIT

plugins/knowledge-compiler/skills/knowledge-compiler/scripts/tests/test_uv_override_helpers.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 8
    trap 'rm -rf "$TMP_DIR"' EXIT
  • Access to secretsline 32
    [Credential-related source omitted]
  • Access to secretsline 33
    [Credential-related source omitted]

plugins/perplexity-search/skills/perplexity-search/.gitignore

  • Access to secretsline 1
    [Credential-related source omitted]

plugins/perplexity-search/skills/perplexity-search/SKILL.md

  • Network accessline 15
    Работа с [Perplexity API](https://docs.perplexity.ai) на POSIX-shell. Четыре режима:
  • Access to secretsline 34
    [Credential-related source omitted]
  • Access to secretsline 37
    [Credential-related source omitted]
  • Network accessline 40
    Ключ — на [perplexity.ai/account/api](https://www.perplexity.ai/account/api).
  • Network accessline 133
    sh scripts/fetch_url.sh --url "https://example.com/pricing"
  • Network accessline 134
    sh scripts/fetch_url.sh --url "https://a.com/post" --url "https://b.com/post" \

plugins/perplexity-search/skills/perplexity-search/config/.env.example

  • Access to secretsline 2
    [Credential-related source omitted]
  • Network accessline 5
    # ─── API credentials ───────────────────────────────────────── # Create a key at https://www.perplexity.ai/account/api (Settings → API).
  • Network accessline 6
    # Create a key at https://www.perplexity.ai/account/api (Settings → API).
  • Access to secretsline 8
    [Credential-related source omitted]
  • Network accessline 49
    # Default number of stdout lines before the rest is left in cache files. PPLX_PRINT_LIMIT=30 # curl --max-time per request, seconds. Raise for xhigh presets.
  • Network accessline 50
    PPLX_PRINT_LIMIT=30 # curl --max-time per request, seconds. Raise for xhigh presets. PPLX_HTTP_TIMEOUT=300
  • Network accessline 51
    # curl --max-time per request, seconds. Raise for xhigh presets.

plugins/perplexity-search/skills/perplexity-search/config/README.md

  • Network accessline 5
    1. Открыть [perplexity.ai/account/api](https://www.perplexity.ai/account/api)
  • Access to secretsline 9
    [Credential-related source omitted]
  • Access to secretsline 12
    [Credential-related source omitted]
  • Access to secretsline 15
    [Credential-related source omitted]
  • Access to secretsline 34
    [Credential-related source omitted]
  • Network accessline 47
    | `PPLX_RESEARCH_CACHE_TTL` | `86400` | то же для `research.sh` | | `PPLX_PRINT_LIMIT` | `30` | строк в stdout, остальное остаётся в `cache/` | | `PPLX_HTTP_TIMEOUT` | `300` | `curl --max-time`, секунды |
  • Network accessline 48
    | `PPLX_PRINT_LIMIT` | `30` | строк в stdout, остальное остаётся в `cache/` | | `PPLX_HTTP_TIMEOUT` | `300` | `curl --max-time`, секунды | | `PPLX_MAX_RETRIES` | `3` | попыток на 429/5xx |
  • Network accessline 49
    | `PPLX_HTTP_TIMEOUT` | `300` | `curl --max-time`, секунды |
  • Access to secretsline 105
    [Credential-related source omitted]
  • Network accessline 115
    Актуальное: [docs.perplexity.ai/docs/getting-started/pricing](https://docs.perplexity.ai/docs/getting-started/pricing)

plugins/perplexity-search/skills/perplexity-search/references/API_REFERENCE.md

  • Network accessline 8
    | Endpoint | Метод | Используется в | |---|---|---| | `https://api.perplexity.ai/search` | POST | `search.sh` |
  • Network accessline 9
    |---|---|---| | `https://api.perplexity.ai/search` | POST | `search.sh` | | `https://api.perplexity.ai/v1/agent` | POST | `ask.sh`, `research.sh`, `fetch_url.sh` |
  • Network accessline 10
    | `https://api.perplexity.ai/search` | POST | `search.sh` |
  • Network accessline 11
    | `https://api.perplexity.ai/v1/agent` | POST | `ask.sh`, `research.sh`, `fetch_url.sh` |
  • Network accessline 12
    | `https://api.perplexity.ai/v1/agent/{id}` | GET | `research.sh` (polling) |
  • Network accessline 13
    | `https://api.perplexity.ai/v1/agent/{id}/cancel` | POST | не используется |
  • Network accessline 15
    [Credential-related source omitted]
  • Access to secretsline 15
    [Credential-related source omitted]
  • Network accessline 16
    ключ в curl через `--config -` (stdin), чтобы он не появлялся в `ps` и не
  • Network accessline 59
    "server_time": null,   "results": [     {"title": "…", "url": "https://…", "snippet": "…", "date": "2026-05-01", "last_updated": "2026-06-02"}
  • Network accessline 60
    "results": [     {"title": "…", "url": "https://…", "snippet": "…", "date": "2026-05-01", "last_updated": "2026-06-02"}   ]
  • Network accessline 61
    {"title": "…", "url": "https://…", "snippet": "…", "date": "2026-05-01", "last_updated": "2026-06-02"}
  • Network accessline 247
    sh scripts/fetch_url.sh \   --url "https://a.example/post" \
  • Network accessline 248
    --url "https://a.example/post" \
  • Network accessline 249
    --url "https://b.example/post" \

plugins/perplexity-search/skills/perplexity-search/scripts/ask.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 37
    [Credential-related source omitted]
  • Dangerous shell operationline 114
    trap 'rm -f "$BODY_FILE"' EXIT

plugins/perplexity-search/skills/perplexity-search/scripts/cache_grep.sh

  • Executable scriptline 1
    #!/bin/sh

plugins/perplexity-search/skills/perplexity-search/scripts/common.sh

  • Executable scriptline 1
    #!/bin/sh
  • Network accessline 42
    PPLX_API_BASE="${PPLX_API_BASE:-https://api.perplexity.ai}"
  • Network accessline 86
    require_curl() {     command -v curl >/dev/null 2>&1 || die "curl is required but not found"
  • Network accessline 87
    command -v curl >/dev/null 2>&1 || die "curl is required but not found"
  • Access to secretsline 92
    [Credential-related source omitted]
  • Access to secretsline 109
    [Credential-related source omitted]
  • Access to secretsline 114
    [Credential-related source omitted]
  • Dangerous shell operationline 196
    rm -f "$_lc_exports"
  • Dangerous shell operationline 201
    rm -f "$_lc_exports"
  • Network accessline 204
    [Credential-related source omitted]
  • Access to secretsline 204
    [Credential-related source omitted]
  • Access to secretsline 205
    [Credential-related source omitted]
  • Network accessline 206
    [Credential-related source omitted]
  • Access to secretsline 206
    [Credential-related source omitted]
  • Network accessline 208
    # The key is streamed to curl inside a quoted header value; reject anything
  • Access to secretsline 210
    [Credential-related source omitted]
  • Access to secretsline 212
    [Credential-related source omitted]
  • Access to secretsline 213
    [Credential-related source omitted]
  • Access to secretsline 260
    [Credential-related source omitted]
  • Access to secretsline 263
    [Credential-related source omitted]
  • Access to secretsline 272
    [Credential-related source omitted]
  • Dangerous shell operationline 337
    rm -rf "$_la_dir"
  • Dangerous shell operationline 351
    [ -z "$1" ] || rm -rf "$1"
  • Access to secretsline 360
    [Credential-related source omitted]
  • Access to secretsline 361
    [Credential-related source omitted]
  • Access to secretsline 362
    [Credential-related source omitted]
  • Access to secretsline 363
    [Credential-related source omitted]
  • Access to secretsline 365
    [Credential-related source omitted]
  • Network accessline 370
    # --- HTTP ------------------------------------------------------------ # # The API key is streamed to curl through `--config -`, so it never appears in
  • Network accessline 371
    # # The API key is streamed to curl through `--config -`, so it never appears in # argv (visible via ps) and is never written to disk.
  • Network accessline 372
    # The API key is streamed to curl through `--config -`, so it never appears in
  • Network accessline 388
    # run that we cannot even adopt, because its id never reached us. So a POST is # only retried when the request provably never landed: #   curl 6  — host not resolved
  • Network accessline 389
    # only retried when the request provably never landed: #   curl 6  — host not resolved #   curl 7  — connection refused / could not connect
  • Network accessline 390
    #   curl 6  — host not resolved
  • Network accessline 391
    #   curl 7  — connection refused / could not connect
  • Dangerous shell operationline 404
    rm -f "$_rq_tmp" "$_rq_hdr"
  • Network accessline 422
    [Credential-related source omitted]
  • Network accessline 423
    [Credential-related source omitted]
  • Access to secretsline 423
    [Credential-related source omitted]
  • Network accessline 424
    | curl -sS --config - \
  • Network accessline 427
    --max-time "$PPLX_HTTP_TIMEOUT" \                     -X POST --data-binary "@$_rq_body" \                     "${PPLX_API_BASE}${_rq_path}")
  • Network accessline 428
    -X POST --data-binary "@$_rq_body" \                     "${PPLX_API_BASE}${_rq_path}")             then
  • Network accessline 429
    "${PPLX_API_BASE}${_rq_path}")
  • Network accessline 436
    [Credential-related source omitted]
  • Network accessline 437
    [Credential-related source omitted]
  • Access to secretsline 437
    [Credential-related source omitted]
  • Network accessline 438
    | curl -sS --config - \
  • Network accessline 439
    -o "$_rq_tmp" -D "$_rq_hdr" -w '%{http_code}' \                     --max-time "$PPLX_HTTP_TIMEOUT" \                     "${PPLX_API_BASE}${_rq_path}")
  • Network accessline 440
    --max-time "$PPLX_HTTP_TIMEOUT" \                     "${PPLX_API_BASE}${_rq_path}")             then
  • Network accessline 441
    "${PPLX_API_BASE}${_rq_path}")
  • Dangerous shell operationline 453
    rm -f "$_rq_hdr"
  • Access to secretsline 457
    [Credential-related source omitted]
  • Access to secretsline 458
    [Credential-related source omitted]
  • Network accessline 483
    fi                 if [ "$_rq_method" = "POST" ] && ! _rq_retry_safe "$_rq_method" "$_rq_status" "$_rq_curl"; then                     _rq_fail "POST $_rq_path failed after the request was already on the wire (HTTP $_rq_status, curl exit $_
  • Network accessline 484
    if [ "$_rq_method" = "POST" ] && ! _rq_retry_safe "$_rq_method" "$_rq_status" "$_rq_curl"; then                     _rq_fail "POST $_rq_path failed after the request was already on the wire (HTTP $_rq_status, curl exit $_rq_curl)" \        
  • Network accessline 485
    _rq_fail "POST $_rq_path failed after the request was already on the wire (HTTP $_rq_status, curl exit $_rq_curl)" \
  • Network accessline 516
    [Credential-related source omitted]
  • Network accessline 517
    [Credential-related source omitted]
  • Access to secretsline 517
    [Credential-related source omitted]
  • Network accessline 518
    | curl -sS --config - \
  • Network accessline 519
    -o "$_pg_tmp" -w '%{http_code}' \             --max-time "$PPLX_HTTP_TIMEOUT" \             "${PPLX_API_BASE}$1" 2>/dev/null) || _pg_status="000"
  • Network accessline 521
    "${PPLX_API_BASE}$1" 2>/dev/null) || _pg_status="000"
  • Dangerous shell operationline 525
    *)           rm -f "$_pg_tmp" ;;
  • Dangerous shell operationline 527
    rm -f "$_pg_tmp"
  • Access to secretsline 548
    [Credential-related source omitted]
  • Access to secretsline 566
    [Credential-related source omitted]
  • Access to secretsline 710
    [Credential-related source omitted]
  • Access to secretsline 754
    [Credential-related source omitted]
  • Access to secretsline 882
    [Credential-related source omitted]
  • Access to secretsline 892
    [Credential-related source omitted]
  • Access to secretsline 971
    [Credential-related source omitted]
  • Access to secretsline 1008
    [Credential-related source omitted]
  • Access to secretsline 1036
    [Credential-related source omitted]
  • Access to secretsline 1049
    [Credential-related source omitted]
  • Access to secretsline 1059
    [Credential-related source omitted]
  • Access to secretsline 1073
    [Credential-related source omitted]

plugins/perplexity-search/skills/perplexity-search/scripts/fetch_url.sh

  • Executable scriptline 1
    #!/bin/sh
  • Network accessline 2
    # fetch_url.sh — pull the contents of specific URLs through the Agent API's # fetch_url tool. Useful when search.sh gave you the link and you now need the # page itself, or when a page resists plain curl (JS, soft paywalls, redirects).
  • Network accessline 3
    # fetch_url tool. Useful when search.sh gave you the link and you now need the # page itself, or when a page resists plain curl (JS, soft paywalls, redirects). #
  • Network accessline 4
    # page itself, or when a page resists plain curl (JS, soft paywalls, redirects).
  • Network accessline 14
    usage() {     cat <<'EOF' Usage: sh scripts/fetch_url.sh --url "https://..." [--url ...] [options]
  • Network accessline 16
    Usage: sh scripts/fetch_url.sh --url "https://..." [--url ...] [options]
  • Network accessline 39
    add_url() {     case "$1" in         http://*|https://*) : ;;
  • Network accessline 40
    case "$1" in         http://*|https://*) : ;;         *) die "Not an http(s) URL: $1" ;;
  • Network accessline 41
    http://*|https://*) : ;;
  • Dangerous shell operationline 92
    trap 'rm -f "$BODY_FILE"' EXIT
  • Network accessline 112
    echo "=== Perplexity Fetch ($SOURCE): $FIRST_URL ==="

plugins/perplexity-search/skills/perplexity-search/scripts/find_latest.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 53
    [Credential-related source omitted]
  • Access to secretsline 54
    [Credential-related source omitted]
  • Access to secretsline 55
    [Credential-related source omitted]
  • Access to secretsline 56
    [Credential-related source omitted]
  • Access to secretsline 59
    [Credential-related source omitted]

plugins/perplexity-search/skills/perplexity-search/scripts/prepare_runtime.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 24
    [Credential-related source omitted]
  • Access to secretsline 25
    [Credential-related source omitted]

plugins/perplexity-search/skills/perplexity-search/scripts/research.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 35
    [Credential-related source omitted]
  • Access to secretsline 106
    [Credential-related source omitted]
  • Access to secretsline 110
    [Credential-related source omitted]
  • Dangerous shell operationline 187
    trap 'rm -f "$BODY_FILE"; lock_release "$LOCK_DIR"' EXIT
  • Dangerous shell operationline 268
    rm -f "$PROBE_FILE"
  • Dangerous shell operationline 273
    rm -f "$PROBE_FILE"
  • Access to secretsline 326
    [Credential-related source omitted]

plugins/perplexity-search/skills/perplexity-search/scripts/sanitize_env.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 2
    [Credential-related source omitted]

plugins/perplexity-search/skills/perplexity-search/scripts/search.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 27
    [Credential-related source omitted]
  • Dangerous shell operationline 91
    trap 'rm -f "$BODY_FILE"' EXIT

plugins/perplexity-search/skills/perplexity-search/scripts/tests/fixtures/agent_response.json

  • Network accessline 13
    "id": 1,           "title": "Attention primer",           "url": "https://example.com/a",
  • Network accessline 14
    "title": "Attention primer",           "url": "https://example.com/a",           "snippet": "A short snippet about attention.",
  • Network accessline 15
    "url": "https://example.com/a",
  • Network accessline 21
    "id": 2,           "title": "Attention primer (mirror)",           "url": "https://example.com/a",
  • Network accessline 22
    "title": "Attention primer (mirror)",           "url": "https://example.com/a",           "snippet": "Duplicate of the first source.",
  • Network accessline 23
    "url": "https://example.com/a",
  • Network accessline 29
    "id": 3,           "title": "Sequence models",           "url": "https://example.com/b",
  • Network accessline 30
    "title": "Sequence models",           "url": "https://example.com/b",           "snippet": "Another snippet.",
  • Network accessline 31
    "url": "https://example.com/b",

plugins/perplexity-search/skills/perplexity-search/scripts/tests/fixtures/search_response.json

  • Network accessline 5
    {       "title": "First result title",       "url": "https://example.org/articles/one",
  • Network accessline 6
    "title": "First result title",       "url": "https://example.org/articles/one",       "snippet": "This is the full snippet body for the first result. It is long enough that it clearly belongs in the .txt dump rather than in the ranked table
  • Network accessline 7
    "url": "https://example.org/articles/one",
  • Network accessline 12
    {       "title": "Messy\ttitle with tabs\nand a newline",       "url": "https://news.example.com/b?utm_source=x",
  • Network accessline 13
    "title": "Messy\ttitle with tabs\nand a newline",       "url": "https://news.example.com/b?utm_source=x",       "snippet": "Second snippet.",
  • Network accessline 14
    "url": "https://news.example.com/b?utm_source=x",
  • Network accessline 19
    {       "title": "Third result",       "url": "https://docs.example.net/guide",
  • Network accessline 20
    "title": "Third result",       "url": "https://docs.example.net/guide",       "snippet": "",
  • Network accessline 21
    "url": "https://docs.example.net/guide",

plugins/perplexity-search/skills/perplexity-search/scripts/tests/run.sh

  • Executable scriptline 1
    #!/bin/sh

plugins/perplexity-search/skills/perplexity-search/scripts/tests/test_build_agent_body.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 13
    trap 'rm -rf "$TMP_DIR"' EXIT
  • Access to secretsline 19
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Access to secretsline 31
    [Credential-related source omitted]
  • Access to secretsline 33
    [Credential-related source omitted]
  • Access to secretsline 146
    [Credential-related source omitted]

plugins/perplexity-search/skills/perplexity-search/scripts/tests/test_build_search_body.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 13
    trap 'rm -rf "$TMP_DIR"' EXIT
  • Access to secretsline 19
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Access to secretsline 31
    [Credential-related source omitted]
  • Access to secretsline 34
    [Credential-related source omitted]

plugins/perplexity-search/skills/perplexity-search/scripts/tests/test_cache.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 13
    trap 'rm -rf "$TMP_DIR"' EXIT
  • Access to secretsline 19
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]

plugins/perplexity-search/skills/perplexity-search/scripts/tests/test_cli.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 12
    trap 'rm -rf "$TMP_DIR"' EXIT
  • Access to secretsline 20
    [Credential-related source omitted]
  • Access to secretsline 21
    [Credential-related source omitted]
  • Access to secretsline 35
    [Credential-related source omitted]
  • Dangerous shell operationline 66
    expect_fail "bad resume id"     sh "$SCRIPTS/research.sh" --resume 'abc;rm -rf /'

plugins/perplexity-search/skills/perplexity-search/scripts/tests/test_config_loader.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 2
    [Credential-related source omitted]
  • Dangerous shell operationline 13
    trap 'rm -rf "$TMP_DIR"' EXIT
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 22
    [Credential-related source omitted]
  • Access to secretsline 24
    [Credential-related source omitted]
  • Access to secretsline 40
    [Credential-related source omitted]
  • Access to secretsline 54
    [Credential-related source omitted]
  • Access to secretsline 88
    [Credential-related source omitted]
  • Access to secretsline 100
    [Credential-related source omitted]
  • Access to secretsline 115
    [Credential-related source omitted]
  • Access to secretsline 140
    [Credential-related source omitted]
  • Access to secretsline 179
    [Credential-related source omitted]
  • Access to secretsline 236
    [Credential-related source omitted]
  • Access to secretsline 244
    [Credential-related source omitted]

plugins/perplexity-search/skills/perplexity-search/scripts/tests/test_dates.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 13
    trap 'rm -rf "$TMP_DIR"' EXIT
  • Access to secretsline 19
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]

plugins/perplexity-search/skills/perplexity-search/scripts/tests/test_http.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 19
    rm -rf "$TMP_DIR"
  • Network accessline 116
    [Credential-related source omitted]
  • Network accessline 117
    [Credential-related source omitted]
  • Access to secretsline 117
    [Credential-related source omitted]
  • Network accessline 118
    PPLX_API_BASE="http://127.0.0.1:$(cat "$PORT_FILE")"
  • Access to secretsline 119
    [Credential-related source omitted]
  • Access to secretsline 131
    [Credential-related source omitted]

plugins/perplexity-search/skills/perplexity-search/scripts/tests/test_render.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 14
    trap 'rm -rf "$TMP_DIR"' EXIT
  • Access to secretsline 20
    [Credential-related source omitted]
  • Access to secretsline 21
    [Credential-related source omitted]
  • Network accessline 50
    grep -q 'The answer text, with a citation' "$TMP_DIR/answer.md" || { echo "answer text missing"; exit 1; } grep -q '^## Sources$' "$TMP_DIR/answer.md" || { echo "sources section missing"; exit 1; } grep -q 'https://example.com/a' "$TMP_DIR/
  • Network accessline 51
    grep -q '^## Sources$' "$TMP_DIR/answer.md" || { echo "sources section missing"; exit 1; } grep -q 'https://example.com/a' "$TMP_DIR/answer.md" || { echo "first source missing"; exit 1; } grep -qi 'cost: \$0\.00' "$TMP_DIR/answer.md" || { e
  • Network accessline 52
    grep -q 'https://example.com/a' "$TMP_DIR/answer.md" || { echo "first source missing"; exit 1; }

plugins/perplexity-search/skills/perplexity-search/scripts/tests/test_research.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 17
    rm -rf "$TMP_DIR"
  • Network accessline 88
    "output": [                 {"type": "search_results", "queries": ["q"], "results": [                     {"id": 1, "title": "Src", "url": "https://example.com/x",
  • Network accessline 89
    {"type": "search_results", "queries": ["q"], "results": [                     {"id": 1, "title": "Src", "url": "https://example.com/x",                      "snippet": "s", "date": "2026-01-01", "source": "web"}
  • Network accessline 90
    {"id": 1, "title": "Src", "url": "https://example.com/x",
  • Network accessline 131
    [Credential-related source omitted]
  • Network accessline 132
    [Credential-related source omitted]
  • Access to secretsline 132
    [Credential-related source omitted]
  • Network accessline 133
    PPLX_API_BASE="http://127.0.0.1:$(cat "$PORT_FILE")"
  • Access to secretsline 134
    [Credential-related source omitted]

plugins/perplexity-search/skills/perplexity-search/scripts/tests/test_signals.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 14
    trap 'rm -rf "$TMP_DIR"' EXIT

plugins/reddit-skill/skills/reddit-skill/.gitignore

  • Access to secretsline 1
    [Credential-related source omitted]

plugins/reddit-skill/skills/reddit-skill/SKILL.md

  • Network accessline 15
    а также прямой доступ к Reddit API через OAuth2 без PRAW. Порт MCP-сервера [Arindam200/reddit-mcp](https://github.com/Arindam200/reddit-mcp) на shell-скрипты
  • Network accessline 16
    через OAuth2 без PRAW. Порт MCP-сервера [Arindam200/reddit-mcp](https://github.com/Arindam200/reddit-mcp) на shell-скрипты по образцу yandex-metrika / yandex-search-api.
  • Network accessline 17
    [Arindam200/reddit-mcp](https://github.com/Arindam200/reddit-mcp) на shell-скрипты
  • Network accessline 33
    - **Пост и комментарии:** используй адрес с `.json`; для обычной ссылки добавь   `.json` к пути поста перед параметрами запроса,   например `https://www.reddit.com/r/Python/comments/abc123/title/.json?limit=100&raw_json=1`.
  • Network accessline 34
    `.json` к пути поста перед параметрами запроса,   например `https://www.reddit.com/r/Python/comments/abc123/title/.json?limit=100&raw_json=1`. - **Список постов:** если инструмент поддерживает XML/Atom, открой RSS-ленту,
  • Network accessline 35
    например `https://www.reddit.com/r/Python/comments/abc123/title/.json?limit=100&raw_json=1`.
  • Network accessline 37
    например `https://www.reddit.com/r/Python/top.rss?t=day&limit=25`.
  • Network accessline 68
    Для полного доступа через API зарегистрировать **script-app** на https://www.reddit.com/prefs/apps и заполнить `config/.env`:
  • Network accessline 69
    https://www.reddit.com/prefs/apps и заполнить `config/.env`:
  • Access to secretsline 70
    [Credential-related source omitted]
  • Network accessline 111
    RSS поддерживают `subreddit_top.sh`, `search.sh`, `user_posts.sh` и `auth_check.sh`. Параметры поиска, сортировки, периода и количества передаются в публичную ленту. `submission.sh` в этом же режиме читает `https://www.reddit.com/comments/{
  • Network accessline 112
    Параметры поиска, сортировки, периода и количества передаются в публичную ленту. `submission.sh` в этом же режиме читает `https://www.reddit.com/comments/{id}.json` без токена. Можно передать обычную ссылку поста, ссылку с `.json` или ID.
  • Network accessline 113
    `submission.sh` в этом же режиме читает `https://www.reddit.com/comments/{id}.json`
  • Network accessline 207
    # 4) Пост и комментарии через публичный JSON без ключей REDDIT_RSS_MODE=1 sh scripts/submission.sh \     --url "https://www.reddit.com/r/Python/comments/abc123/some_title/" \
  • Network accessline 208
    REDDIT_RSS_MODE=1 sh scripts/submission.sh      --url "https://www.reddit.com/r/Python/comments/abc123/some_title/"
  • Network accessline 209
    --url "https://www.reddit.com/r/Python/comments/abc123/some_title/" \
  • Network accessline 244
    Оригинальный [reddit-mcp](https://github.com/Arindam200/reddit-mcp) использует PRAW + Python и зашит как MCP-сервер. Здесь публичное чтение начинается с доступного веб-инструмента агента; shell-скрипты используют curl и кеш в директории ски
  • Network accessline 248
    - [Reddit API docs](https://www.reddit.com/dev/api/)
  • Network accessline 249
    - [RSS Reddit](https://www.reddit.com/wiki/rss)
  • Network accessline 250
    - [OAuth2 wiki](https://github.com/reddit-archive/reddit/wiki/OAuth2)
  • Network accessline 251
    - [API rules / User-Agent](https://github.com/reddit-archive/reddit/wiki/API)

plugins/reddit-skill/skills/reddit-skill/config/.env.example

  • Access to secretsline 8
    [Credential-related source omitted]
  • Access to secretsline 13
    [Credential-related source omitted]
  • Access to secretsline 18
    [Credential-related source omitted]

plugins/reddit-skill/skills/reddit-skill/config/README.md

  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 29
    REDDIT_RSS_MODE=1 sh scripts/search.sh --query "machine learning" --subreddit Python REDDIT_RSS_MODE=1 sh scripts/user_posts.sh --username spez REDDIT_RSS_MODE=1 sh scripts/submission.sh --url "https://www.reddit.com/r/Python/comments/abc12
  • Network accessline 31
    REDDIT_RSS_MODE=1 sh scripts/submission.sh --url "https://www.reddit.com/r/Python/comments/abc123/title/.json"
  • Access to secretsline 44
    [Credential-related source omitted]
  • Access to secretsline 74
    [Credential-related source omitted]
  • Network accessline 76
    1. Открой https://old.reddit.com/prefs/apps
  • Access to secretsline 79
    [Credential-related source omitted]
  • Access to secretsline 84
    [Credential-related source omitted]
  • Network accessline 90
    1. Открой https://old.reddit.com/prefs/apps (старый интерфейс стабильнее нового)
  • Network accessline 95
    - **Description**: пусто или короткое нейтральное описание (см. подсказки ниже про формулировки)    - **About URL**: можно пусто    - **Redirect URI**: `http://localhost:8080` (формально требуется; для read-only не используется)
  • Network accessline 96
    - **About URL**: можно пусто    - **Redirect URI**: `http://localhost:8080` (формально требуется; для read-only не используется) 4. Пройди капчу и **сразу же** жми **`create app`** (токен капчи живёт ~2 минуты)
  • Network accessline 97
    - **Redirect URI**: `http://localhost:8080` (формально требуется; для read-only не используется)
  • Network accessline 108
    1. Открой форму **Request API Access**: https://support.reddithelp.com/hc/en-us/requests/new
  • Network accessline 162
    **Если use case действительно коммерческий** (канал/консалтинг монетизируется) — Reddit ожидает, что ты заявишь это явно через отдельный канал: https://support.reddithelp.com/hc/en-us/requests/new (выбрать commercial-вариант). Для personal 
  • Network accessline 170
    1. **Hard reload** (`⌘+Shift+R` / `Ctrl+Shift+R`) — заполни заново и пройди капчу ровно перед кликом 2. **Инкогнито-режим** — расширения (uBlock Origin, Privacy Badger, AdGuard) ломают Reddit anti-bot. В инкогнито их нет. 3. **Старый Reddit
  • Network accessline 171
    2. **Инкогнито-режим** — расширения (uBlock Origin, Privacy Badger, AdGuard) ломают Reddit anti-bot. В инкогнито их нет. 3. **Старый Reddit** явно — `https://old.reddit.com/prefs/apps` 4. **Без VPN** — Reddit банит часть VPN-IP с определённ
  • Network accessline 172
    3. **Старый Reddit** явно — `https://old.reddit.com/prefs/apps`
  • Access to secretsline 191
    [Credential-related source omitted]
  • Access to secretsline 198
    [Credential-related source omitted]
  • Network accessline 202
    `REDDIT_USER_AGENT` обязателен по [правилам Reddit API](https://github.com/reddit-archive/reddit/wiki/API). Шаблон: `<platform>:<app-id>:<version> (by /u/<username>)`. Не используйте дефолтные строки браузеров — Reddit может банить.
  • Network accessline 247
    Подробнее: https://www.reddit.com/wiki/api
  • Access to secretsline 260
    [Credential-related source omitted]
  • Network accessline 280
    ### `/prefs/apps` редиректит на Responsible Builder Policy - Это новый approval-flow, а не баг формы. Технически не обходится. - Подавай заявку через https://support.reddithelp.com/hc/en-us/requests/new → «Request API Access». Шаблон описан
  • Network accessline 281
    - Это новый approval-flow, а не баг формы. Технически не обходится. - Подавай заявку через https://support.reddithelp.com/hc/en-us/requests/new → «Request API Access». Шаблон описания — в Шаге 1 → Вариант C. - Если у тебя уже есть рабочий с
  • Network accessline 282
    - Подавай заявку через https://support.reddithelp.com/hc/en-us/requests/new → «Request API Access». Шаблон описания — в Шаге 1 → Вариант C.
  • Network accessline 294
    - Reddit API docs: https://www.reddit.com/dev/api/
  • Network accessline 295
    - OAuth2 wiki: https://github.com/reddit-archive/reddit/wiki/OAuth2
  • Network accessline 296
    - API rules / User-Agent: https://github.com/reddit-archive/reddit/wiki/API
  • Network accessline 297
    - Reddit Data API Terms: https://www.redditinc.com/policies/data-api-terms
  • Network accessline 298
    - Developer Terms: https://www.redditinc.com/policies/developer-terms - Responsible Builder Policy (что Reddit хочет видеть в use case): https://support.reddithelp.com/hc/en-us/articles/42728983564564-Responsible-Builder-Policy - Запрос API
  • Network accessline 299
    - Responsible Builder Policy (что Reddit хочет видеть в use case): https://support.reddithelp.com/hc/en-us/articles/42728983564564-Responsible-Builder-Policy - Запрос API Access (non-commercial): https://support.reddithelp.com/hc/en-us/requ
  • Network accessline 300
    - Запрос API Access (non-commercial): https://support.reddithelp.com/hc/en-us/requests/new — выбрать «Request API Access»
  • Network accessline 301
    - Запрос commercial Data API: https://support.reddithelp.com/hc/en-us/requests/new — отдельный commercial-вариант

plugins/reddit-skill/skills/reddit-skill/scripts/auth_check.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 11
    trap 'rm -f "$OUT"' EXIT
  • Access to secretsline 18
    [Credential-related source omitted]

plugins/reddit-skill/skills/reddit-skill/scripts/comment_reply.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 44
    trap 'rm -f "$OUT"' EXIT
  • Access to secretsline 53
    [Credential-related source omitted]
  • Network accessline 68
    print(f"  id        : {t.get('id','?')}") print(f"  name      : {t.get('name','?')}") print(f"  permalink : https://www.reddit.com{t.get('permalink','')}")
  • Network accessline 69
    print(f"  name      : {t.get('name','?')}") print(f"  permalink : https://www.reddit.com{t.get('permalink','')}") PY
  • Network accessline 70
    print(f"  permalink : https://www.reddit.com{t.get('permalink','')}")

plugins/reddit-skill/skills/reddit-skill/scripts/common.sh

  • Executable scriptline 1
    #!/bin/sh
  • Network accessline 17
    # Variables exported by load_config: #   REDDIT_AUTH_MODE         — "app-only" | "user" | "rss" #   REDDIT_OAUTH_BASE        — "https://oauth.reddit.com"
  • Network accessline 18
    #   REDDIT_AUTH_MODE         — "app-only" | "user" | "rss" #   REDDIT_OAUTH_BASE        — "https://oauth.reddit.com" #   REDDIT_TOKEN_URL         — "https://www.reddit.com/api/v1/access_token"
  • Network accessline 19
    #   REDDIT_OAUTH_BASE        — "https://oauth.reddit.com"
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Access to secretsline 22
    [Credential-related source omitted]
  • Network accessline 37
    REDDIT_OAUTH_BASE="https://oauth.reddit.com"
  • Network accessline 38
    [Credential-related source omitted]
  • Access to secretsline 38
    [Credential-related source omitted]
  • Access to secretsline 57
    [Credential-related source omitted]
  • Access to secretsline 59
    [Credential-related source omitted]
  • Access to secretsline 61
    [Credential-related source omitted]
  • Access to secretsline 70
    [Credential-related source omitted]
  • Access to secretsline 79
    [Credential-related source omitted]
  • Access to secretsline 80
    [Credential-related source omitted]
  • Access to secretsline 109
    [Credential-related source omitted]
  • Access to secretsline 111
    [Credential-related source omitted]
  • Access to secretsline 115
    [Credential-related source omitted]
  • Access to secretsline 134
    [Credential-related source omitted]
  • Access to secretsline 135
    [Credential-related source omitted]
  • Access to secretsline 136
    [Credential-related source omitted]
  • Access to secretsline 137
    [Credential-related source omitted]
  • Access to secretsline 139
    [Credential-related source omitted]
  • Dangerous shell operationline 152
    trap "rm -f '$_resp_file' '$_hdr_file'" EXIT INT TERM
  • Access to secretsline 163
    [Credential-related source omitted]
  • Access to secretsline 164
    [Credential-related source omitted]
  • Network accessline 171
    [Credential-related source omitted]
  • Access to secretsline 171
    [Credential-related source omitted]
  • Access to secretsline 173
    [Credential-related source omitted]
  • Dangerous shell operationline 179
    rm -f "$_resp_file" "$_hdr_file"
  • Access to secretsline 190
    [Credential-related source omitted]
  • Access to secretsline 194
    [Credential-related source omitted]
  • Access to secretsline 199
    [Credential-related source omitted]
  • Access to secretsline 206
    [Credential-related source omitted]
  • Dangerous shell operationline 209
    rm -f "$_resp_file" "$_hdr_file"
  • Network accessline 241
    # --- HTTP wrappers --------------------------------------------------- # # reddit_get PATH OUTFILE [extra curl args ...]
  • Network accessline 242
    # # reddit_get PATH OUTFILE [extra curl args ...] # reddit_post PATH OUTFILE [extra curl args ...]
  • Network accessline 243
    # reddit_get PATH OUTFILE [extra curl args ...]
  • Network accessline 244
    # reddit_post PATH OUTFILE [extra curl args ...]
  • Network accessline 272
    _hdr="$REDDIT_TMPDIR/reddit_hdr.$$.txt"     _url="${REDDIT_OAUTH_BASE}${_path}"
  • Network accessline 273
    _url="${REDDIT_OAUTH_BASE}${_path}"
  • Network accessline 276
    case "$_url" in
  • Network accessline 277
    *\?*) _url="${_url}&raw_json=1" ;;
  • Network accessline 278
    *)    _url="${_url}?raw_json=1" ;;
  • Network accessline 281
    if [ "$_method" = "GET" ]; then         _status=$(curl -sS --connect-timeout 10 --max-time 60 -G -o "$_out" -D "$_hdr" -w '%{http_code}' \
  • Network accessline 282
    _status=$(curl -sS --connect-timeout 10 --max-time 60 -G -o "$_out" -D "$_hdr" -w '%{http_code}' \
  • Network accessline 284
    [Credential-related source omitted]
  • Network accessline 285
    "$@" \             "$_url") || die "Request failed (network error): $_path"     else
  • Network accessline 286
    "$_url") || die "Request failed (network error): $_path"     else         _status=$(curl -sS --connect-timeout 10 --max-time 60 -X "$_method" -o "$_out" -D "$_hdr" -w '%{http_code}' \
  • Network accessline 287
    else         _status=$(curl -sS --connect-timeout 10 --max-time 60 -X "$_method" -o "$_out" -D "$_hdr" -w '%{http_code}' \             -A "$REDDIT_USER_AGENT" \
  • Network accessline 288
    _status=$(curl -sS --connect-timeout 10 --max-time 60 -X "$_method" -o "$_out" -D "$_hdr" -w '%{http_code}' \
  • Network accessline 290
    [Credential-related source omitted]
  • Network accessline 291
    "$@" \             "$_url") || die "Request failed (network error): $_path"     fi
  • Network accessline 292
    "$_url") || die "Request failed (network error): $_path"
  • Dangerous shell operationline 297
    rm -f "$_hdr"
  • Dangerous shell operationline 303
    rm -f "$(_token_cache_file)"
  • Dangerous shell operationline 304
    rm -f "$_hdr"
  • Dangerous shell operationline 308
    rm -f "$_hdr"
  • Dangerous shell operationline 313
    rm -f "$_hdr"
  • Dangerous shell operationline 322
    rm -f "$_hdr"
  • Dangerous shell operationline 334
    rm -f "$_hdr"
  • Dangerous shell operationline 374
    trap 'rm -rf "$_public_dir"' EXIT
  • Network accessline 375
    _public_retry=0     while :; do         _public_status=$(curl -sS --connect-timeout 10 --max-time 60 -G \
  • Network accessline 376
    while :; do         _public_status=$(curl -sS --connect-timeout 10 --max-time 60 -G \             -o "$_public_dir/response" -D "$_public_dir/headers" -w '%{http_code}' \
  • Network accessline 377
    _public_status=$(curl -sS --connect-timeout 10 --max-time 60 -G \
  • Network accessline 378
    -o "$_public_dir/response" -D "$_public_dir/headers" -w '%{http_code}' \             -A "$REDDIT_USER_AGENT" "$@" \             "https://www.reddit.com${_public_path}${_public_suffix}") || die "Public $_public_format request failed (network
  • Network accessline 379
    -A "$REDDIT_USER_AGENT" "$@" \             "https://www.reddit.com${_public_path}${_public_suffix}") || die "Public $_public_format request failed (network error)"         case "$_public_status" in
  • Network accessline 380
    "https://www.reddit.com${_public_path}${_public_suffix}") || die "Public $_public_format request failed (network error)"
  • Dangerous shell operationline 447
    trap 'rm -f "$_listing_tmp"' EXIT
  • Access to secretsline 477
    [Credential-related source omitted]
  • Access to secretsline 478
    [Credential-related source omitted]
  • Network accessline 504
    #   abc123                                                  → abc123 #   t3_abc123                                               → abc123 #   https://www.reddit.com/r/sub/comments/abc123/title/     → abc123
  • Network accessline 505
    #   t3_abc123                                               → abc123 #   https://www.reddit.com/r/sub/comments/abc123/title/     → abc123 #   https://www.reddit.com/r/sub/comments/abc123/           → abc123
  • Network accessline 506
    #   https://www.reddit.com/r/sub/comments/abc123/title/     → abc123
  • Network accessline 507
    #   https://www.reddit.com/r/sub/comments/abc123/           → abc123
  • Network accessline 508
    #   https://redd.it/abc123                                  → abc123
  • Access to secretsline 513
    [Credential-related source omitted]
  • Access to secretsline 545
    [Credential-related source omitted]
  • Access to secretsline 546
    [Credential-related source omitted]
  • Access to secretsline 549
    [Credential-related source omitted]
  • Network accessline 576
    n_comm = "?" if n_comm is None else n_comm         author = cd.get("author") or "?"         url = "https://www.reddit.com" + cd.get("permalink", "")
  • Network accessline 577
    author = cd.get("author") or "?"         url = "https://www.reddit.com" + cd.get("permalink", "")         print(f"  [{score:>5} ↑ {n_comm:>4} 💬] r/{sub}  by u/{author}")
  • Network accessline 578
    url = "https://www.reddit.com" + cd.get("permalink", "")
  • Network accessline 585
    score = cd.get("score", 0)         author = cd.get("author", "")         link = "https://www.reddit.com" + cd.get("permalink", "")
  • Network accessline 586
    author = cd.get("author", "")         link = "https://www.reddit.com" + cd.get("permalink", "")         print(f"  [{score:>5} ↑] r/{sub}  by u/{author}")
  • Network accessline 587
    link = "https://www.reddit.com" + cd.get("permalink", "")

plugins/reddit-skill/skills/reddit-skill/scripts/me.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 17
    [Credential-related source omitted]

plugins/reddit-skill/skills/reddit-skill/scripts/post_create.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 7
    [Credential-related source omitted]
  • Dangerous shell operationline 61
    trap 'rm -f "$OUT"' EXIT
  • Access to secretsline 91
    [Credential-related source omitted]

plugins/reddit-skill/skills/reddit-skill/scripts/rss_to_listing.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 14
    ATOM = "{http://www.w3.org/2005/Atom}"
  • Network accessline 15
    REDDIT = "https://www.reddit.com"

plugins/reddit-skill/skills/reddit-skill/scripts/search.sh

  • Executable scriptline 1
    #!/bin/sh

plugins/reddit-skill/skills/reddit-skill/scripts/submission.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 31
    [Credential-related source omitted]
  • Access to secretsline 32
    [Credential-related source omitted]
  • Network accessline 41
    print(f"  r/{post.get('subreddit','?')}  by u/{post.get('author','?')}") print(f"  Score: {post.get('score',0)} ↑  Comments: {post.get('num_comments',0)} 💬  UpvoteRatio: {post.get('upvote_ratio','?')}") print(f"  URL: https://www.reddit.com
  • Network accessline 42
    print(f"  Score: {post.get('score',0)} ↑  Comments: {post.get('num_comments',0)} 💬  UpvoteRatio: {post.get('upvote_ratio','?')}") print(f"  URL: https://www.reddit.com{post.get('permalink','')}") body = (post.get('selftext') or '').strip()
  • Network accessline 43
    print(f"  URL: https://www.reddit.com{post.get('permalink','')}")

plugins/reddit-skill/skills/reddit-skill/scripts/subreddit_info.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 33
    [Credential-related source omitted]

plugins/reddit-skill/skills/reddit-skill/scripts/subreddit_popular.sh

  • Executable scriptline 1
    #!/bin/sh

plugins/reddit-skill/skills/reddit-skill/scripts/subreddit_stats.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 42
    [Credential-related source omitted]
  • Access to secretsline 51
    [Credential-related source omitted]
  • Access to secretsline 59
    [Credential-related source omitted]
  • Access to secretsline 61
    [Credential-related source omitted]
  • Access to secretsline 70
    [Credential-related source omitted]

plugins/reddit-skill/skills/reddit-skill/scripts/subreddit_subscribe.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 42
    trap 'rm -f "$OUT"' EXIT

plugins/reddit-skill/skills/reddit-skill/scripts/subreddit_top.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 47
    [Credential-related source omitted]
  • Access to secretsline 48
    [Credential-related source omitted]
  • Access to secretsline 53
    [Credential-related source omitted]
  • Access to secretsline 83
    [Credential-related source omitted]
  • Access to secretsline 84
    [Credential-related source omitted]
  • Access to secretsline 86
    [Credential-related source omitted]

plugins/reddit-skill/skills/reddit-skill/scripts/tests/fixtures/posts.atom

  • Network accessline 1
    <?xml version="1.0" encoding="UTF-8"?> <feed xmlns="http://www.w3.org/2005/Atom">
  • Network accessline 2
    <feed xmlns="http://www.w3.org/2005/Atom">
  • Network accessline 7
    <author><name>/u/alice</name></author>     <category term="Python" label="r/Python"/>     <link href="https://www.reddit.com/r/Python/comments/abc123/python_rss/"/>
  • Network accessline 8
    <category term="Python" label="r/Python"/>     <link href="https://www.reddit.com/r/Python/comments/abc123/python_rss/"/>     <published>2026-09-17T12:00:00+03:00</published>
  • Network accessline 9
    <link href="https://www.reddit.com/r/Python/comments/abc123/python_rss/"/>
  • Network accessline 10
    <published>2026-09-17T12:00:00+03:00</published>     <updated>2026-09-17T13:00:00+03:00</updated>     <content type="html">&lt;p&gt;Hello &amp;amp; &lt;strong&gt;world&lt;/strong&gt;!&lt;/p&gt;&lt;p&gt;A&amp;nbsp;B&lt;br/&gt;Next line&lt;/p
  • Network accessline 11
    <updated>2026-09-17T13:00:00+03:00</updated>     <content type="html">&lt;p&gt;Hello &amp;amp; &lt;strong&gt;world&lt;/strong&gt;!&lt;/p&gt;&lt;p&gt;A&amp;nbsp;B&lt;br/&gt;Next line&lt;/p&gt;&lt;a href="https://example.com/article?a=1&amp;a
  • Network accessline 12
    <content type="html">&lt;p&gt;Hello &amp;amp; &lt;strong&gt;world&lt;/strong&gt;!&lt;/p&gt;&lt;p&gt;A&amp;nbsp;B&lt;br/&gt;Next line&lt;/p&gt;&lt;a href="https://example.com/article?a=1&amp;amp;b=2"&gt;[link]&lt;/a&gt; &lt;a href="https://w
  • Network accessline 15
    <id>t3_def456</id>     <title>Post without optional metadata</title>     <link rel="self" href="https://www.reddit.com/r/Python/comments/def456/.rss"/>
  • Network accessline 16
    <title>Post without optional metadata</title>     <link rel="self" href="https://www.reddit.com/r/Python/comments/def456/.rss"/>     <link rel="alternate" href="/r/Python/comments/def456/"/>
  • Network accessline 17
    <link rel="self" href="https://www.reddit.com/r/Python/comments/def456/.rss"/>

plugins/reddit-skill/skills/reddit-skill/scripts/tests/run.sh

  • Executable scriptline 1
    #!/bin/sh

plugins/reddit-skill/skills/reddit-skill/scripts/tests/test_cache_key.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 13
    trap 'rm -rf "$REDDIT_CACHE_DIR"' EXIT

plugins/reddit-skill/skills/reddit-skill/scripts/tests/test_load_config.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 10
    trap 'rm -rf "$TMP_BASE"' EXIT
  • Access to secretsline 12
    [Credential-related source omitted]
  • Access to secretsline 15
    [Credential-related source omitted]
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 34
    [Credential-related source omitted]
  • Access to secretsline 36
    [Credential-related source omitted]
  • Access to secretsline 53
    [Credential-related source omitted]
  • Access to secretsline 54
    [Credential-related source omitted]
  • Access to secretsline 72
    [Credential-related source omitted]
  • Access to secretsline 74
    [Credential-related source omitted]

plugins/reddit-skill/skills/reddit-skill/scripts/tests/test_rss_mode.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 9
    trap 'rm -rf "$TEST_ROOT"' EXIT
  • Network accessline 12
    cat > "$TEST_ROOT/bin/curl" <<'PY'
  • Network accessline 19
    args = sys.argv[1:] url = next(arg for arg in args if arg.startswith("https://"))
  • Network accessline 20
    url = next(arg for arg in args if arg.startswith("https://"))
  • Access to secretsline 21
    [Credential-related source omitted]
  • Access to secretsline 23
    [Credential-related source omitted]
  • Access to secretsline 28
    [Credential-related source omitted]
  • Access to secretsline 33
    [Credential-related source omitted]
  • Access to secretsline 35
    [Credential-related source omitted]
  • Access to secretsline 48
    [Credential-related source omitted]
  • Network accessline 49
    body = '{"kind": "Listing", "data": {"children": []}}' else:     body = '''<feed xmlns="http://www.w3.org/2005/Atom"><entry>
  • Network accessline 50
    else:     body = '''<feed xmlns="http://www.w3.org/2005/Atom"><entry>     <id>t3_abc123</id><title>RSS snapshot</title>
  • Network accessline 51
    body = '''<feed xmlns="http://www.w3.org/2005/Atom"><entry>
  • Network accessline 52
    <id>t3_abc123</id><title>RSS snapshot</title>     <link href="https://www.reddit.com/r/test/comments/abc123/test/"/>     <updated>2026-09-17T08:00:00Z</updated><category term="test"/>
  • Network accessline 53
    <link href="https://www.reddit.com/r/test/comments/abc123/test/"/>
  • Access to secretsline 57
    [Credential-related source omitted]
  • Dangerous shell operationline 74
    rm -rf "$TEST_ROOT/config" "$TEST_ROOT/cache" "$TEST_ROOT/tmp"
  • Access to secretsline 90
    [Credential-related source omitted]
  • Access to secretsline 92
    [Credential-related source omitted]
  • Network accessline 135
    import sys call = [json.loads(line) for line in open(sys.argv[1]) if json.loads(line)["kind"] == sys.argv[2]][-1] assert call["url"].split("?")[0] == "https://www.reddit.com" + sys.argv[3], call
  • Network accessline 136
    call = [json.loads(line) for line in open(sys.argv[1]) if json.loads(line)["kind"] == sys.argv[2]][-1] assert call["url"].split("?")[0] == "https://www.reddit.com" + sys.argv[3], call args = call["args"]
  • Network accessline 137
    assert call["url"].split("?")[0] == "https://www.reddit.com" + sys.argv[3], call
  • Access to secretsline 174
    [Credential-related source omitted]
  • Access to secretsline 182
    [Credential-related source omitted]
  • Network accessline 218
    reset_case run_ok submission.sh --url https://www.reddit.com/r/test/comments/abc123/test/ --limit-comments 4
  • Network accessline 219
    run_ok submission.sh --url https://www.reddit.com/r/test/comments/abc123/test/ --limit-comments 4
  • Network accessline 223
    grep -Eqi 'more|incomplete' "$TEST_ROOT/stdout" "$TEST_ROOT/stderr" ||     fail "submission should report incomplete comments" run_ok submission.sh --url https://www.reddit.com/comments/abc123.json --limit-comments 4
  • Network accessline 224
    fail "submission should report incomplete comments" run_ok submission.sh --url https://www.reddit.com/comments/abc123.json --limit-comments 4 assert_calls JSON
  • Network accessline 225
    run_ok submission.sh --url https://www.reddit.com/comments/abc123.json --limit-comments 4

plugins/reddit-skill/skills/reddit-skill/scripts/tests/test_rss_parser.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 8
    trap 'rm -rf "$TMP_BASE"' EXIT
  • Network accessline 29
    assert first["subreddit"] == "Python" and first["author"] == "alice" assert first["created_utc"] == datetime.fromisoformat("2026-09-17T09:00:00+00:00").timestamp() assert first["url"] == "https://example.com/article?a=1&b=2"
  • Network accessline 30
    assert first["created_utc"] == datetime.fromisoformat("2026-09-17T09:00:00+00:00").timestamp() assert first["url"] == "https://example.com/article?a=1&b=2" assert first["selftext"] == "Hello & world!\nA B\nNext line\n[link] [comments]"
  • Network accessline 31
    assert first["url"] == "https://example.com/article?a=1&b=2"
  • Network accessline 35
    assert second["author"] == "" and second["subreddit"] == "" assert second["selftext"] == "" and second["selftext_html"] is None assert second["url"] == "https://www.reddit.com/r/Python/comments/def456/"
  • Network accessline 36
    assert second["selftext"] == "" and second["selftext_html"] is None assert second["url"] == "https://www.reddit.com/r/Python/comments/def456/" assert second["created_utc"] == datetime.fromisoformat("2026-09-17T09:30:00+00:00").timestamp()
  • Network accessline 37
    assert second["url"] == "https://www.reddit.com/r/Python/comments/def456/"
  • Network accessline 40
    atom = "{http://www.w3.org/2005/Atom}"
  • Network accessline 41
    empty = workdir / "empty.atom" empty.write_text('<feed xmlns="http://www.w3.org/2005/Atom"/>') subprocess.run([sys.executable, parser, str(empty), str(workdir / "empty.json")], check=True)
  • Network accessline 42
    empty.write_text('<feed xmlns="http://www.w3.org/2005/Atom"/>')
  • Network accessline 51
    bad_inputs.append(ET.tostring(feed, encoding="unicode")) feed = ET.parse(fixture).getroot() feed.find(atom + "entry").find(atom + "link").set("href", "https://example.com/not-a-post")
  • Network accessline 52
    feed = ET.parse(fixture).getroot() feed.find(atom + "entry").find(atom + "link").set("href", "https://example.com/not-a-post") bad_inputs.append(ET.tostring(feed, encoding="unicode"))
  • Network accessline 53
    feed.find(atom + "entry").find(atom + "link").set("href", "https://example.com/not-a-post")
  • Network accessline 54
    bad_inputs.append(ET.tostring(feed, encoding="unicode")) bad_inputs.append('<feed xmlns="http://www.w3.org/2005/Atom"><entry/></feed>') bad_inputs.append('<feed xmlns="http://www.w3.org/2005/Atom"><entry xmlns=""/></feed>')
  • Network accessline 55
    bad_inputs.append('<feed xmlns="http://www.w3.org/2005/Atom"><entry/></feed>')
  • Network accessline 56
    bad_inputs.append('<feed xmlns="http://www.w3.org/2005/Atom"><entry xmlns=""/></feed>')

plugins/reddit-skill/skills/reddit-skill/scripts/tests/test_token_expiry.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 10
    trap 'rm -rf "$TMP_BASE"' EXIT
  • Access to secretsline 24
    [Credential-related source omitted]
  • Access to secretsline 35
    [Credential-related source omitted]
  • Access to secretsline 45
    [Credential-related source omitted]
  • Access to secretsline 55
    [Credential-related source omitted]
  • Dangerous shell operationline 73
    rm -f "$TMP_BASE/cache/token.json"

plugins/reddit-skill/skills/reddit-skill/scripts/tests/test_url_parse.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 14
    trap 'rm -rf "$REDDIT_CACHE_DIR"' EXIT
  • Network accessline 42
    got=$(parse_submission_id "https://www.reddit.com/r/Python/comments/abc123/some_title/")
  • Network accessline 46
    got=$(parse_submission_id "https://www.reddit.com/r/Python/comments/abc123/")
  • Network accessline 50
    got=$(parse_submission_id "https://www.reddit.com/r/Python/comments/abc123")
  • Network accessline 54
    got=$(parse_submission_id "https://redd.it/abc123")
  • Network accessline 58
    for url in \     "https://www.reddit.com/r/Python/comments/abc123/some_title/.json" \
  • Network accessline 59
    "https://www.reddit.com/r/Python/comments/abc123/some_title/.json" \
  • Network accessline 60
    "https://www.reddit.com/comments/abc123.json?limit=25"; do

plugins/reddit-skill/skills/reddit-skill/scripts/tests/test_write_guard.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 10
    trap 'rm -rf "$TMP_BASE"' EXIT
  • Dangerous shell operationline 22
    eval "$1"
  • Network accessline 69
    # --- Case 5a: post_create.sh without REDDIT_ENABLE_WRITE → die, no curl ---
  • Network accessline 70
    SENTINEL="$TMP_BASE/curl_was_called" cat > "$TMP_BASE/curl" <<EOF
  • Network accessline 71
    cat > "$TMP_BASE/curl" <<EOF
  • Access to secretsline 78
    [Credential-related source omitted]
  • Access to secretsline 80
    [Credential-related source omitted]
  • Network accessline 102
    # --- Case 5b: post_create.sh with REDDIT_ENABLE_WRITE=1 but no --confirm #              → dry-run, no curl ---
  • Network accessline 103
    #              → dry-run, no curl ---
  • Dangerous shell operationline 104
    rm -f "$SENTINEL"
  • Access to secretsline 106
    [Credential-related source omitted]
  • Access to secretsline 108
    [Credential-related source omitted]

plugins/reddit-skill/skills/reddit-skill/scripts/user_comments.sh

  • Executable scriptline 1
    #!/bin/sh

plugins/reddit-skill/skills/reddit-skill/scripts/user_info.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 37
    [Credential-related source omitted]

plugins/reddit-skill/skills/reddit-skill/scripts/user_posts.sh

  • Executable scriptline 1
    #!/bin/sh

plugins/scrapedo-web-scraper/skills/scrapedo-web-scraper/.gitignore

  • Access to secretsline 5
    [Credential-related source omitted]

plugins/scrapedo-web-scraper/skills/scrapedo-web-scraper/SKILL.md

  • Network accessline 16
    # Получить текст страницы python scripts/scrape.py https://example.com
  • Network accessline 16
    # Получить текст страницы python scripts/scrape.py https://example.com
  • Network accessline 17
    python scripts/scrape.py https://example.com
  • Network accessline 17
    python scripts/scrape.py https://example.com
  • Network accessline 19
    # Получить HTML python scripts/scrape.py --html https://example.com
  • Network accessline 19
    # Получить HTML python scripts/scrape.py --html https://example.com
  • Network accessline 20
    python scripts/scrape.py --html https://example.com
  • Network accessline 20
    python scripts/scrape.py --html https://example.com
  • Network accessline 28
    result = fetch_via_scrapedo('https://example.com')
  • Network accessline 28
    result = fetch_via_scrapedo('https://example.com')

plugins/scrapedo-web-scraper/skills/scrapedo-web-scraper/config/README.md

  • Network accessline 5
    1. Зарегистрируйся на https://scrape.do
  • Access to secretsline 19
    [Credential-related source omitted]

plugins/scrapedo-web-scraper/skills/scrapedo-web-scraper/scripts/scrape.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 23
    [Credential-related source omitted]
  • Access to secretsline 42
    [Credential-related source omitted]
  • Access to secretsline 46
    [Credential-related source omitted]
  • Access to secretsline 47
    [Credential-related source omitted]
  • Network accessline 113
    base_api = 'http://api.scrape.do'
  • Network accessline 121
    response = requests.get(

plugins/sourcecraft-publisher/skills/sourcecraft-publisher/.gitignore

  • Access to secretsline 1
    [Credential-related source omitted]

plugins/sourcecraft-publisher/skills/sourcecraft-publisher/SKILL.md

  • Access to secretsline 37
    [Credential-related source omitted]

plugins/sourcecraft-publisher/skills/sourcecraft-publisher/config/.env.example

  • Access to secretsline 2
    [Credential-related source omitted]
  • Network accessline 4
    # OAuth2 token for SourceCraft (with contents write access to the target repo) # How to get: https://sourcecraft.yandex.cloud/docs/access-tokens
  • Network accessline 5
    # How to get: https://sourcecraft.yandex.cloud/docs/access-tokens

plugins/sourcecraft-publisher/skills/sourcecraft-publisher/config/README.md

  • Access to secretsline 7
    [Credential-related source omitted]
  • Network accessline 13
    1. Откройте [SourceCraft](https://sourcecraft.yandex.cloud/)
  • Network accessline 25
    | `SOURCECRAFT_REPO` | да | `org/repo` — целевой репозиторий | | `SOURCECRAFT_BRANCH` | нет | Ветка для push (default: `master`) | | `SOURCECRAFT_SITE_URL` | да | Публичный URL сайта, например `https://org.sourcecraft.site/repo` |
  • Network accessline 27
    | `SOURCECRAFT_SITE_URL` | да | Публичный URL сайта, например `https://org.sourcecraft.site/repo` |

plugins/sourcecraft-publisher/skills/sourcecraft-publisher/scripts/optimize_images.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/sourcecraft-publisher/skills/sourcecraft-publisher/scripts/publish_static.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 7
    [Credential-related source omitted]
  • Access to secretsline 81
    [Credential-related source omitted]
  • Access to secretsline 82
    [Credential-related source omitted]
  • Access to secretsline 83
    [Credential-related source omitted]
  • Access to secretsline 84
    [Credential-related source omitted]
  • Network accessline 96
    with tempfile.TemporaryDirectory() as td:         repo_dir = Path(td) / 'repo'         remote = f'https://oauth2:{token}@git.sourcecraft.dev/{repo}.git'
  • Network accessline 98
    remote = f'https://oauth2:{token}@git.sourcecraft.dev/{repo}.git'

plugins/ssh-remote-connection/skills/ssh-remote-connection/.gitignore

  • Access to secretsline 2
    [Credential-related source omitted]

plugins/ssh-remote-connection/skills/ssh-remote-connection/SKILL.md

  • Access to secretsline 26
    [Credential-related source omitted]

plugins/ssh-remote-connection/skills/ssh-remote-connection/config/.env.example

  • Access to secretsline 2
    [Credential-related source omitted]

plugins/ssh-remote-connection/skills/ssh-remote-connection/scripts/connect.sh

  • Executable scriptline 1
    #!/bin/bash
  • Access to secretsline 9
    [Credential-related source omitted]
  • Access to secretsline 14
    [Credential-related source omitted]
  • Access to secretsline 16
    [Credential-related source omitted]
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 18
    [Credential-related source omitted]
  • Access to secretsline 28
    [Credential-related source omitted]
  • Dangerous shell operationline 161
    eval "$(ssh-agent -s)" > /dev/null 2>&1

plugins/telegram-channel-parser/skills/telegram-channel-parser/.gitignore

  • Access to secretsline 1
    [Credential-related source omitted]

plugins/telegram-channel-parser/skills/telegram-channel-parser/SKILL.md

  • Access to secretsline 31
    [Credential-related source omitted]
  • Access to secretsline 172
    [Credential-related source omitted]
  • Network accessline 183
    - `countwithsasha` — просто username - `@countwithsasha` — с собакой - `https://t.me/countwithsasha` — прямая ссылка
  • Network accessline 184
    - `@countwithsasha` — с собакой - `https://t.me/countwithsasha` — прямая ссылка - `https://t.me/s/countwithsasha` — ссылка на веб-превью
  • Network accessline 185
    - `https://t.me/countwithsasha` — прямая ссылка
  • Network accessline 186
    - `https://t.me/s/countwithsasha` — ссылка на веб-превью
  • Network accessline 193
    - Только **публичные** каналы (у которых есть t.me/s/ превью) - Некоторые посты Telegram не отдаёт через веб-превью. Если вместо текста приходит предложение открыть Telegram, поле текста в TSV/JSON содержит `[Текст недоступен в веб-превью T
  • Network accessline 194
    - Некоторые посты Telegram не отдаёт через веб-превью. Если вместо текста приходит предложение открыть Telegram, поле текста в TSV/JSON содержит `[Текст недоступен в веб-превью Telegram: https://t.me/<channel>/<id>]`. Это пометка скилла, а 

plugins/telegram-channel-parser/skills/telegram-channel-parser/assets/digest-feed.tsx

  • Executable scriptline 1
    Executable file
  • Network accessline 78
    const [imgError, setImgError] = useState(false);   const color = getChannelColor(post.channel);   const postUrl = `https://t.me/${post.channel}/${post.id}`;
  • Network accessline 80
    const postUrl = `https://t.me/${post.channel}/${post.id}`;

plugins/telegram-channel-parser/skills/telegram-channel-parser/config/.env.example

  • Access to secretsline 2
    [Credential-related source omitted]
  • Access to secretsline 3
    [Credential-related source omitted]

plugins/telegram-channel-parser/skills/telegram-channel-parser/config/README.md

  • Access to secretsline 9
    [Credential-related source omitted]

plugins/telegram-channel-parser/skills/telegram-channel-parser/scripts/channel_info.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

plugins/telegram-channel-parser/skills/telegram-channel-parser/scripts/common.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Access to secretsline 7
    [Credential-related source omitted]
  • Network accessline 10
    TG_BASE_URL="https://t.me/s"
  • Access to secretsline 14
    [Credential-related source omitted]
  • Access to secretsline 16
    [Credential-related source omitted]
  • Access to secretsline 18
    [Credential-related source omitted]
  • Network accessline 21
    # --------------- Input normalization --------------- # Accepts: username, @username, https://t.me/username, https://t.me/s/username, t.me/username
  • Network accessline 22
    # Accepts: username, @username, https://t.me/username, https://t.me/s/username, t.me/username
  • Network accessline 28
    input="${input#https://}"
  • Network accessline 29
    input="${input#http://}"
  • Network accessline 48
    tg_fetch() {     sleep "$TG_REQUEST_DELAY"     curl -s -L \
  • Network accessline 49
    sleep "$TG_REQUEST_DELAY"     curl -s -L \         -H "Accept-Language: ru-RU,ru;q=0.9,en;q=0.5" \
  • Network accessline 50
    curl -s -L \
  • Network accessline 96
    local url         if [ -n "$before" ]; then             url="${TG_BASE_URL}/${channel}?before=${before}"
  • Network accessline 97
    if [ -n "$before" ]; then             url="${TG_BASE_URL}/${channel}?before=${before}"         else
  • Network accessline 98
    url="${TG_BASE_URL}/${channel}?before=${before}"
  • Network accessline 99
    else             url="${TG_BASE_URL}/${channel}"         fi
  • Network accessline 100
    url="${TG_BASE_URL}/${channel}"
  • Network accessline 105
    tg_fetch "$url" > "$page_file"
  • Network accessline 106
    if [ ! -s "$page_file" ]; then             echo "Error: Empty response from $url" >&2             break
  • Network accessline 107
    echo "Error: Empty response from $url" >&2
  • Access to secretsline 204
    [Credential-related source omitted]
  • Access to secretsline 213
    [Credential-related source omitted]

plugins/telegram-channel-parser/skills/telegram-channel-parser/scripts/compare_channels.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

plugins/telegram-channel-parser/skills/telegram-channel-parser/scripts/digest.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

plugins/telegram-channel-parser/skills/telegram-channel-parser/scripts/digest_json.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Dangerous shell operationline 33
    trap 'rm -f "$_posts_tmp" "$_channels_tmp"' EXIT

plugins/telegram-channel-parser/skills/telegram-channel-parser/scripts/export_csv.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Network accessline 30
    awk -F'\t' -v ch="$CHANNEL" '{         gsub(/"/, "\"\"", $7)         url = "https://t.me/" ch "/" $1
  • Network accessline 31
    gsub(/"/, "\"\"", $7)         url = "https://t.me/" ch "/" $1         printf "%s,%s,%s,%s,%s,%s,\"%s\",%s,%s\n", $1, $2, $3, $4, $5, $6, $7, $8, url
  • Network accessline 32
    url = "https://t.me/" ch "/" $1

plugins/telegram-channel-parser/skills/telegram-channel-parser/scripts/fetch_posts.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

plugins/telegram-channel-parser/skills/telegram-channel-parser/scripts/parse_tg_posts.awk

  • Executable scriptline 1
    #!/usr/bin/awk -f
  • Network accessline 48
    body = clean_text(text)     if (body == "" && unsupported) {         body = "[Текст недоступен в веб-превью Telegram: https://t.me/" post_path "]"
  • Network accessline 49
    if (body == "" && unsupported) {         body = "[Текст недоступен в веб-превью Telegram: https://t.me/" post_path "]"     }
  • Network accessline 50
    body = "[Текст недоступен в веб-превью Telegram: https://t.me/" post_path "]"
  • Network accessline 120
    # Extract link: href="https://t.me/channel/123"

plugins/telegram-channel-parser/skills/telegram-channel-parser/scripts/posting_schedule.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

plugins/telegram-channel-parser/skills/telegram-channel-parser/scripts/prepare_runtime.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Access to secretsline 22
    [Credential-related source omitted]
  • Access to secretsline 23
    [Credential-related source omitted]

plugins/telegram-channel-parser/skills/telegram-channel-parser/scripts/sanitize_env.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Access to secretsline 2
    [Credential-related source omitted]

plugins/telegram-channel-parser/skills/telegram-channel-parser/scripts/search_posts.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

plugins/telegram-channel-parser/skills/telegram-channel-parser/scripts/tests/run.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

plugins/telegram-channel-parser/skills/telegram-channel-parser/scripts/tests/test_config_loader.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Dangerous shell operationline 11
    rm -rf "$TMP_DIR"
  • Access to secretsline 16
    [Credential-related source omitted]
  • Access to secretsline 27
    [Credential-related source omitted]
  • Access to secretsline 36
    [Credential-related source omitted]

plugins/telegram-channel-parser/skills/telegram-channel-parser/scripts/tests/test_parse_tg_posts.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Dangerous shell operationline 8
    trap 'rm -rf "$TMP_DIR"' EXIT
  • Network accessline 16
    cat > "$TMP_DIR/posts.html" <<'EOF' <div class="tgme_widget_message" data-post="channel/101"> <a class="tgme_widget_message_reply" href="https://t.me/channel/100">
  • Network accessline 17
    <div class="tgme_widget_message" data-post="channel/101"> <a class="tgme_widget_message_reply" href="https://t.me/channel/100"> <div class="tgme_widget_message_text js-message_reply_text" dir="auto">Чужой текст ответа</div>
  • Network accessline 18
    <a class="tgme_widget_message_reply" href="https://t.me/channel/100">
  • Network accessline 35
    <div><i>внутри</i></div> конец цитаты</div> хвост <a href="https://example.com/">ссылка</a>
  • Network accessline 36
    конец цитаты</div> хвост <a href="https://example.com/">ссылка</a> </div>
  • Network accessline 37
    хвост <a href="https://example.com/">ссылка</a>
  • Network accessline 49
    </div> <div class="tgme_widget_message" data-post="channel/108"> <a class="tgme_widget_message_photo_wrap" style="background-image:url('https://example.com/photo.jpg')"></a>
  • Network accessline 50
    <div class="tgme_widget_message" data-post="channel/108"> <a class="tgme_widget_message_photo_wrap" style="background-image:url('https://example.com/photo.jpg')"></a> </div>
  • Network accessline 51
    <a class="tgme_widget_message_photo_wrap" style="background-image:url('https://example.com/photo.jpg')"></a>
  • Network accessline 88
    expect_text 103 'Текст без js-класса' 'потерян текст со старым набором классов' expect_text 104 'Начало <blockquote>Цитата <b>внутри</b> конец цитаты</blockquote> хвост' 'потерян хвост или неверно закрыта вложенная цитата' expect_text 105 '
  • Network accessline 89
    expect_text 104 'Начало <blockquote>Цитата <b>внутри</b> конец цитаты</blockquote> хвост' 'потерян хвост или неверно закрыта вложенная цитата' expect_text 105 'Начало <blockquote>Цитата <i>внутри</i> конец цитаты</blockquote> хвост <a href=
  • Network accessline 90
    expect_text 105 'Начало <blockquote>Цитата <i>внутри</i> конец цитаты</blockquote> хвост <a href="https://example.com/">ссылка</a>' 'повреждён многострочный текст с цитатой'
  • Network accessline 91
    expect_text 106 'Начало <blockquote>Цитата</blockquote> хвост' 'повреждён исходный blockquote' expect_text 734 '[Текст недоступен в веб-превью Telegram: https://t.me/countwithsasha/734]' 'не сообщено о недоступном тексте' expect_text 108 ''
  • Network accessline 92
    expect_text 734 '[Текст недоступен в веб-превью Telegram: https://t.me/countwithsasha/734]' 'не сообщено о недоступном тексте'
  • Network accessline 94
    expect_text 109 'Подпись доступна' 'подпись заменена сообщением о неподдерживаемом медиа' expect_text 110 'Следующий пост' 'состояние предыдущего поста не сброшено' expect_text 111 '[Текст недоступен в веб-превью Telegram: https://t.me/chan
  • Network accessline 95
    expect_text 110 'Следующий пост' 'состояние предыдущего поста не сброшено' expect_text 111 '[Текст недоступен в веб-превью Telegram: https://t.me/channel/111]' 'превью ответа скрывает недоступность собственного текста' expect_text 112 "Длин
  • Network accessline 96
    expect_text 111 '[Текст недоступен в веб-превью Telegram: https://t.me/channel/111]' 'превью ответа скрывает недоступность собственного текста'
  • Network accessline 99
    awk -F '\t' '     $1 == 108 && $8 == "https://example.com/photo.jpg" { media_ok = 1 }
  • Network accessline 100
    $1 == 108 && $8 == "https://example.com/photo.jpg" { media_ok = 1 }

plugins/telegram-channel-parser/skills/telegram-channel-parser/scripts/tests/test_reuse_latest.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Dangerous shell operationline 8
    trap 'rm -rf "$TMP_DIR"' EXIT
  • Dangerous shell operationline 117
    rm "$TG_TEST_FIXTURES/alpha"

plugins/telegram-channel-parser/skills/telegram-channel-parser/scripts/top_posts.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

plugins/telegraph-publisher/skills/telegraph-publisher/.gitignore

  • Access to secretsline 1
    [Credential-related source omitted]

plugins/telegraph-publisher/skills/telegraph-publisher/SKILL.md

  • Access to secretsline 22
    [Credential-related source omitted]
  • Access to secretsline 35
    [Credential-related source omitted]
  • Access to secretsline 51
    [Credential-related source omitted]
  • Network accessline 62
    If the user supplies an author as `[Channel Name](https://t.me/channel)`, pass
  • Network accessline 63
    `Channel Name` and `https://t.me/channel` as separate name and URL values.
  • Network accessline 119
    sh scripts/create_account.sh --name "Author Name" [--author-url "https://..."]
  • Network accessline 319
    <figure>   <img src="https://telegra.ph/file/abc123.jpg">
  • Network accessline 320
    <img src="https://telegra.ph/file/abc123.jpg">
  • Network accessline 330
    <figure>   <iframe src="https://www.youtube.com/watch?v=VIDEO_ID"></iframe>
  • Network accessline 331
    <iframe src="https://www.youtube.com/watch?v=VIDEO_ID"></iframe>

plugins/telegraph-publisher/skills/telegraph-publisher/config/.env.example

  • Access to secretsline 3
    [Credential-related source omitted]
  • Network accessline 6
    # Leave commented out to omit these fields. Account creation needs a nonempty name. # TELEGRAPH_AUTHOR_NAME="Your Name" # TELEGRAPH_AUTHOR_URL="https://t.me/your_channel"
  • Network accessline 8
    # TELEGRAPH_AUTHOR_URL="https://t.me/your_channel"

plugins/telegraph-publisher/skills/telegraph-publisher/config/README.md

  • Access to secretsline 9
    [Credential-related source omitted]
  • Access to secretsline 13
    [Credential-related source omitted]
  • Access to secretsline 14
    [Credential-related source omitted]
  • Access to secretsline 21
    [Credential-related source omitted]
  • Access to secretsline 27
    [Credential-related source omitted]
  • Network accessline 34
    TELEGRAPH_AUTHOR_NAME="Поляков считает | Про ИИ, рекламу и аналитику данных" TELEGRAPH_AUTHOR_URL="https://t.me/polyakov_schitaet"
  • Network accessline 35
    TELEGRAPH_AUTHOR_URL="https://t.me/polyakov_schitaet"
  • Network accessline 148
    1. Open any of your Telegraph pages in **Chrome** 2. DevTools (F12) → **Application** → **Cookies** → `https://telegra.ph`
  • Network accessline 149
    2. DevTools (F12) → **Application** → **Cookies** → `https://telegra.ph`
  • Access to secretsline 150
    [Credential-related source omitted]
  • Access to secretsline 160
    [Credential-related source omitted]
  • Access to secretsline 167
    [Credential-related source omitted]
  • Access to secretsline 178
    [Credential-related source omitted]

plugins/telegraph-publisher/skills/telegraph-publisher/references/CONTENT_FORMAT.md

  • Network accessline 11
    {     "tag": "p",     "attrs": {"href": "https://...", "src": "https://..."},
  • Network accessline 12
    "tag": "p",     "attrs": {"href": "https://...", "src": "https://..."},     "children": ["text", {"tag": "b", "children": ["bold"]}]
  • Network accessline 13
    "attrs": {"href": "https://...", "src": "https://..."},
  • Network accessline 74
    [{"tag": "figure", "children": [   {"tag": "img", "attrs": {"src": "https://example.com/photo.jpg"}},
  • Network accessline 75
    {"tag": "img", "attrs": {"src": "https://example.com/photo.jpg"}},
  • Network accessline 82
    [{"tag": "figure", "children": [   {"tag": "iframe", "attrs": {"src": "https://www.youtube.com/embed/dQw4w9WgXcQ"}}
  • Network accessline 83
    {"tag": "iframe", "attrs": {"src": "https://www.youtube.com/embed/dQw4w9WgXcQ"}}
  • Network accessline 96
    {"tag": "p", "children": ["This article covers..."]},   {"tag": "figure", "children": [     {"tag": "img", "attrs": {"src": "https://example.com/diagram.png"}},
  • Network accessline 97
    {"tag": "figure", "children": [     {"tag": "img", "attrs": {"src": "https://example.com/diagram.png"}},     {"tag": "figcaption", "children": ["Architecture diagram"]}
  • Network accessline 98
    {"tag": "img", "attrs": {"src": "https://example.com/diagram.png"}},
  • Access to secretsline 187
    [Credential-related source omitted]
  • Access to secretsline 188
    [Credential-related source omitted]

plugins/telegraph-publisher/skills/telegraph-publisher/references/DIAGRAMS.md

  • Network accessline 27
    sh scripts/render_diagram.sh --type plantuml --file diagram.puml # → https://www.plantuml.com/plantuml/png/ENCODED
  • Network accessline 28
    # → https://www.plantuml.com/plantuml/png/ENCODED
  • Network accessline 42
    sh scripts/render_diagram.sh --type mermaid --file flow.mmd --upload # → https://telegra.ph/file/abc123.png
  • Network accessline 43
    # → https://telegra.ph/file/abc123.png

plugins/telegraph-publisher/skills/telegraph-publisher/references/IMAGE_WORKFLOWS.md

  • Network accessline 40
    https://cdn.jsdelivr.net/gh/<owner>/<repo>@<commit>/pages/<telegraph_path>/hero.webp
  • Network accessline 126
    <figure>   <img src="https://cdn.example.com/photo.jpg">
  • Network accessline 127
    <img src="https://cdn.example.com/photo.jpg">
  • Network accessline 163
    # After fal-ai-image generates image and saves to local file: URL="https://cdn.jsdelivr.net/gh/<owner>/<repo>@<commit>/pages/<telegraph_path>/generated_hero.png"
  • Network accessline 164
    URL="https://cdn.jsdelivr.net/gh/<owner>/<repo>@<commit>/pages/<telegraph_path>/generated_hero.png"

plugins/telegraph-publisher/skills/telegraph-publisher/references/YOUTUBE_EMBEDS.md

  • Network accessline 7
    | Input URL | Normalized to | |-----------|--------------| | `https://www.youtube.com/watch?v=VIDEO_ID` | `https://www.youtube.com/embed/VIDEO_ID` |
  • Network accessline 8
    |-----------|--------------| | `https://www.youtube.com/watch?v=VIDEO_ID` | `https://www.youtube.com/embed/VIDEO_ID` | | `https://youtube.com/watch?v=VIDEO_ID` | `https://www.youtube.com/embed/VIDEO_ID` |
  • Network accessline 9
    | `https://www.youtube.com/watch?v=VIDEO_ID` | `https://www.youtube.com/embed/VIDEO_ID` |
  • Network accessline 10
    | `https://youtube.com/watch?v=VIDEO_ID` | `https://www.youtube.com/embed/VIDEO_ID` |
  • Network accessline 11
    | `https://youtu.be/VIDEO_ID` | `https://www.youtube.com/embed/VIDEO_ID` |
  • Network accessline 12
    | `https://www.youtube.com/embed/VIDEO_ID` | (unchanged) |
  • Network accessline 19
    <figure>   <iframe src="https://www.youtube.com/watch?v=dQw4w9WgXcQ"></iframe>
  • Network accessline 20
    <iframe src="https://www.youtube.com/watch?v=dQw4w9WgXcQ"></iframe>
  • Network accessline 28
    "tag": "figure",   "children": [     {"tag": "iframe", "attrs": {"src": "https://www.youtube.com/embed/dQw4w9WgXcQ"}},
  • Network accessline 29
    "children": [     {"tag": "iframe", "attrs": {"src": "https://www.youtube.com/embed/dQw4w9WgXcQ"}},     {"tag": "figcaption", "children": ["Optional video description"]}
  • Network accessline 30
    {"tag": "iframe", "attrs": {"src": "https://www.youtube.com/embed/dQw4w9WgXcQ"}},
  • Network accessline 39
    - Only YouTube is auto-normalized. Other iframe sources pass through unchanged. - Telegraph renders iframes with a fixed aspect ratio - URL parameters (like `?t=120` for timestamps) on watch URLs are stripped during normalization. If you ne
  • Network accessline 41
    - URL parameters (like `?t=120` for timestamps) on watch URLs are stripped during normalization. If you need a start time, use the embed parameter format: `https://www.youtube.com/embed/VIDEO_ID?start=120`
  • Network accessline 48
    <figure>   <iframe src="https://www.example.com/embed/content"></iframe>
  • Network accessline 49
    <iframe src="https://www.example.com/embed/content"></iframe>

plugins/telegraph-publisher/skills/telegraph-publisher/scripts/account_info.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 39
    [Credential-related source omitted]
  • Access to secretsline 40
    [Credential-related source omitted]

plugins/telegraph-publisher/skills/telegraph-publisher/scripts/common.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 8
    [Credential-related source omitted]
  • Network accessline 10
    TELEGRAPH_API="https://api.telegra.ph"
  • Network accessline 11
    GITHUB_API="https://api.github.com"
  • Access to secretsline 20
    [Credential-related source omitted]
  • Access to secretsline 22
    [Credential-related source omitted]
  • Access to secretsline 25
    [Credential-related source omitted]
  • Access to secretsline 26
    [Credential-related source omitted]
  • Access to secretsline 27
    [Credential-related source omitted]
  • Access to secretsline 34
    [Credential-related source omitted]
  • Access to secretsline 36
    [Credential-related source omitted]
  • Access to secretsline 43
    [Credential-related source omitted]
  • Access to secretsline 45
    [Credential-related source omitted]
  • Access to secretsline 52
    [Credential-related source omitted]
  • Network accessline 68
    check_curl() {     if ! command -v curl >/dev/null 2>&1; then
  • Network accessline 69
    if ! command -v curl >/dev/null 2>&1; then
  • Network accessline 70
    echo "Error: curl is required but not found." >&2
  • Network accessline 106
    _tp_method="$1"     shift     _tp_url="${TELEGRAPH_API}/${_tp_method}"
  • Network accessline 107
    shift     _tp_url="${TELEGRAPH_API}/${_tp_method}"     _tp_tmpfile="${TPH_TMPDIR}/telegraph_response_$$.json"
  • Network accessline 108
    _tp_url="${TELEGRAPH_API}/${_tp_method}"
  • Dangerous shell operationline 110
    trap 'rm -f "$_tp_tmpfile"' EXIT
  • Network accessline 112
    curl -s -X POST "$@" "$_tp_url" > "$_tp_tmpfile" || {
  • Network accessline 113
    echo "Error: curl failed for $_tp_url" >&2

plugins/telegraph-publisher/skills/telegraph-publisher/scripts/content_converter.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 219
    if video_id:         return f'https://www.youtube.com/embed/{video_id}'
  • Network accessline 220
    return f'https://www.youtube.com/embed/{video_id}'

plugins/telegraph-publisher/skills/telegraph-publisher/scripts/create_account.sh

  • Executable scriptline 1
    #!/bin/sh
  • Network accessline 3
    # Usage: #   sh create_account.sh   # Use TELEGRAPH_AUTHOR_NAME/URL from config or environment #   sh create_account.sh --name "Author Name" [--author-url "https://..."]
  • Network accessline 4
    #   sh create_account.sh   # Use TELEGRAPH_AUTHOR_NAME/URL from config or environment #   sh create_account.sh --name "Author Name" [--author-url "https://..."] #   sh create_account.sh --revoke   # Rotate token (requires existing token in 
  • Network accessline 5
    #   sh create_account.sh --name "Author Name" [--author-url "https://..."]
  • Access to secretsline 34
    [Credential-related source omitted]
  • Access to secretsline 35
    [Credential-related source omitted]
  • Access to secretsline 40
    [Credential-related source omitted]
  • Dangerous shell operationline 42
    rm -f "$_tmpfile"
  • Access to secretsline 45
    [Credential-related source omitted]
  • Access to secretsline 48
    [Credential-related source omitted]
  • Access to secretsline 54
    [Credential-related source omitted]
  • Network accessline 64
    # Build curl args as proper argv
  • Access to secretsline 78
    [Credential-related source omitted]
  • Dangerous shell operationline 81
    rm -f "$_tmpfile"
  • Access to secretsline 90
    [Credential-related source omitted]

plugins/telegraph-publisher/skills/telegraph-publisher/scripts/create_page.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 73
    trap 'rm -rf "$WORK_DIR"' EXIT
  • Access to secretsline 98
    [Credential-related source omitted]
  • Access to secretsline 135
    [Credential-related source omitted]
  • Access to secretsline 163
    [Credential-related source omitted]
  • Dangerous shell operationline 182
    rm -f "$_tmpfile"

plugins/telegraph-publisher/skills/telegraph-publisher/scripts/diagram_encode.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 11
    PlantUML: https://www.plantuml.com/plantuml/png/ENCODED
  • Network accessline 12
    Mermaid:  https://mermaid.ink/img/pako:ENCODED
  • Network accessline 74
    return f'https://www.plantuml.com/plantuml/png/{result}'
  • Network accessline 82
    Format: https://mermaid.ink/img/pako:PAYLOAD
  • Network accessline 97
    return f'https://mermaid.ink/img/pako:{encoded}'

plugins/telegraph-publisher/skills/telegraph-publisher/scripts/edit_page.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 64
    [Credential-related source omitted]
  • Dangerous shell operationline 83
    rm -f "$_tmpfile"

plugins/telegraph-publisher/skills/telegraph-publisher/scripts/github_delete_page_assets.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 30
    trap 'rm -rf "$TMP_DIR"' EXIT
  • Access to secretsline 37
    [Credential-related source omitted]
  • Network accessline 39
    [Credential-related source omitted]
  • Access to secretsline 39
    [Credential-related source omitted]
  • Network accessline 40
    -H "X-GitHub-Api-Version: 2022-11-28" MANIFEST_GET_CODE=$(curl -sS -o "$MANIFEST_RESPONSE" -w '%{http_code}' "$@" \     "${GITHUB_API}/repos/${GITHUB_ASSETS_REPO}/contents/${MANIFEST_REPO_PATH}?ref=${GITHUB_ASSETS_BRANCH}")
  • Network accessline 41
    MANIFEST_GET_CODE=$(curl -sS -o "$MANIFEST_RESPONSE" -w '%{http_code}' "$@" \
  • Possible obfuscationline 64
    decoded = base64.b64decode(content)
  • Access to secretsline 79
    [Credential-related source omitted]
  • Network accessline 81
    [Credential-related source omitted]
  • Access to secretsline 81
    [Credential-related source omitted]
  • Network accessline 82
    -H "X-GitHub-Api-Version: 2022-11-28"         ASSET_META_CODE=$(curl -sS -o "$ASSET_META_RESPONSE" -w '%{http_code}' "$@" \             "${GITHUB_API}/repos/${GITHUB_ASSETS_REPO}/contents/${ASSET_PATH}?ref=${GITHUB_ASSETS_BRANCH}")
  • Network accessline 83
    ASSET_META_CODE=$(curl -sS -o "$ASSET_META_RESPONSE" -w '%{http_code}' "$@" \
  • Access to secretsline 118
    [Credential-related source omitted]
  • Access to secretsline 120
    [Credential-related source omitted]
  • Network accessline 121
    -H "X-GitHub-Api-Version: 2022-11-28" \         -H "Content-Type: application/json"     ASSET_DELETE_CODE=$(printf '%s' "$DELETE_PAYLOAD" | curl -sS -o "$ASSET_DELETE_RESPONSE" -w '%{http_code}' "$@" \
  • Network accessline 122
    -H "Content-Type: application/json"     ASSET_DELETE_CODE=$(printf '%s' "$DELETE_PAYLOAD" | curl -sS -o "$ASSET_DELETE_RESPONSE" -w '%{http_code}' "$@" \     -X DELETE \
  • Network accessline 123
    ASSET_DELETE_CODE=$(printf '%s' "$DELETE_PAYLOAD" | curl -sS -o "$ASSET_DELETE_RESPONSE" -w '%{http_code}' "$@" \
  • Access to secretsline 156
    [Credential-related source omitted]
  • Access to secretsline 158
    [Credential-related source omitted]
  • Network accessline 159
    -H "X-GitHub-Api-Version: 2022-11-28" \     -H "Content-Type: application/json" MANIFEST_DELETE_CODE=$(printf '%s' "$MANIFEST_DELETE_PAYLOAD" | curl -sS -o "$MANIFEST_DELETE_RESPONSE" -w '%{http_code}' "$@" \
  • Network accessline 160
    -H "Content-Type: application/json" MANIFEST_DELETE_CODE=$(printf '%s' "$MANIFEST_DELETE_PAYLOAD" | curl -sS -o "$MANIFEST_DELETE_RESPONSE" -w '%{http_code}' "$@" \     -X DELETE \
  • Network accessline 161
    MANIFEST_DELETE_CODE=$(printf '%s' "$MANIFEST_DELETE_PAYLOAD" | curl -sS -o "$MANIFEST_DELETE_RESPONSE" -w '%{http_code}' "$@" \

plugins/telegraph-publisher/skills/telegraph-publisher/scripts/github_manifest.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/telegraph-publisher/skills/telegraph-publisher/scripts/github_upload.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 44
    trap 'rm -rf "$TMP_DIR"' EXIT
  • Access to secretsline 59
    [Credential-related source omitted]
  • Network accessline 61
    [Credential-related source omitted]
  • Access to secretsline 61
    [Credential-related source omitted]
  • Network accessline 62
    -H "X-GitHub-Api-Version: 2022-11-28" ASSET_GET_CODE=$(curl -sS -o "$ASSET_GET_RESPONSE" -w '%{http_code}' "$@" \     "${GITHUB_API}/repos/${GITHUB_ASSETS_REPO}/contents/${REPO_PATH}?ref=${GITHUB_ASSETS_BRANCH}")
  • Network accessline 63
    ASSET_GET_CODE=$(curl -sS -o "$ASSET_GET_RESPONSE" -w '%{http_code}' "$@" \
  • Access to secretsline 97
    [Credential-related source omitted]
  • Access to secretsline 99
    [Credential-related source omitted]
  • Network accessline 100
    -H "X-GitHub-Api-Version: 2022-11-28" \     -H "Content-Type: application/json" ASSET_PUT_CODE=$(printf '%s' "$ASSET_PAYLOAD" | curl -sS -o "$ASSET_PUT_RESPONSE" -w '%{http_code}' "$@" \
  • Network accessline 101
    -H "Content-Type: application/json" ASSET_PUT_CODE=$(printf '%s' "$ASSET_PAYLOAD" | curl -sS -o "$ASSET_PUT_RESPONSE" -w '%{http_code}' "$@" \     -X PUT \
  • Network accessline 102
    ASSET_PUT_CODE=$(printf '%s' "$ASSET_PAYLOAD" | curl -sS -o "$ASSET_PUT_RESPONSE" -w '%{http_code}' "$@" \
  • Network accessline 137
    CDN_URL="https://cdn.jsdelivr.net/gh/${GITHUB_ASSETS_REPO}@${COMMIT_SHA}/${ASSET_PATH}"
  • Access to secretsline 140
    [Credential-related source omitted]
  • Network accessline 142
    [Credential-related source omitted]
  • Access to secretsline 142
    [Credential-related source omitted]
  • Network accessline 143
    -H "X-GitHub-Api-Version: 2022-11-28" MANIFEST_GET_CODE=$(curl -sS -o "$MANIFEST_GET_RESPONSE" -w '%{http_code}' "$@" \     "${GITHUB_API}/repos/${GITHUB_ASSETS_REPO}/contents/${MANIFEST_REPO_PATH}?ref=${GITHUB_ASSETS_BRANCH}")
  • Network accessline 144
    MANIFEST_GET_CODE=$(curl -sS -o "$MANIFEST_GET_RESPONSE" -w '%{http_code}' "$@" \
  • Possible obfuscationline 155
    decoded = base64.b64decode(content)
  • Network accessline 168
    MANIFEST_JSON=$(python3 "$SCRIPT_DIR/github_manifest.py" merge \     "$PAGE_PATH" "$ASSET_PATH" "$ASSET_SHA" "$CDN_URL" "$COMMIT_SHA" < "$MANIFEST_BODY")
  • Network accessline 169
    "$PAGE_PATH" "$ASSET_PATH" "$ASSET_SHA" "$CDN_URL" "$COMMIT_SHA" < "$MANIFEST_BODY")
  • Access to secretsline 186
    [Credential-related source omitted]
  • Access to secretsline 188
    [Credential-related source omitted]
  • Network accessline 189
    -H "X-GitHub-Api-Version: 2022-11-28" \     -H "Content-Type: application/json" MANIFEST_PUT_CODE=$(printf '%s' "$MANIFEST_PAYLOAD" | curl -sS -o "$MANIFEST_PUT_RESPONSE" -w '%{http_code}' "$@" \
  • Network accessline 190
    -H "Content-Type: application/json" MANIFEST_PUT_CODE=$(printf '%s' "$MANIFEST_PAYLOAD" | curl -sS -o "$MANIFEST_PUT_RESPONSE" -w '%{http_code}' "$@" \     -X PUT \
  • Network accessline 191
    MANIFEST_PUT_CODE=$(printf '%s' "$MANIFEST_PAYLOAD" | curl -sS -o "$MANIFEST_PUT_RESPONSE" -w '%{http_code}' "$@" \
  • Network accessline 205
    echo "$CDN_URL"

plugins/telegraph-publisher/skills/telegraph-publisher/scripts/list_pages.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 23
    [Credential-related source omitted]
  • Access to secretsline 24
    [Credential-related source omitted]

plugins/telegraph-publisher/skills/telegraph-publisher/scripts/page_views.sh

  • Executable scriptline 1
    #!/bin/sh

plugins/telegraph-publisher/skills/telegraph-publisher/scripts/parse_response.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/telegraph-publisher/skills/telegraph-publisher/scripts/render_diagram.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 87
    trap 'rm -rf "$_tmpdir"' EXIT
  • Network accessline 94
    set -- "$@" -k fi _http_code=$(curl "$@" "$_render_url" 2>/dev/null) || {
  • Network accessline 95
    fi _http_code=$(curl "$@" "$_render_url" 2>/dev/null) || {     echo "Error: Failed to download diagram from rendering server." >&2
  • Network accessline 96
    _http_code=$(curl "$@" "$_render_url" 2>/dev/null) || {

plugins/telegraph-publisher/skills/telegraph-publisher/scripts/tests/test_author_defaults.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 10
    trap 'rm -rf "$TEST_TMP_DIR"' EXIT
  • Access to secretsline 15
    [Credential-related source omitted]
  • Network accessline 21
    # Копия скриптов использует только наш .env, а curl лишь записывает argv.
  • Network accessline 22
    TPH_TEST_PYTHON="$(python3 -c 'import sys; print(sys.executable)')" export TPH_TEST_PYTHON cat > "$TEST_TMP_DIR/bin/curl" <<'CURL'
  • Network accessline 23
    export TPH_TEST_PYTHON cat > "$TEST_TMP_DIR/bin/curl" <<'CURL' #!/bin/sh
  • Network accessline 24
    cat > "$TEST_TMP_DIR/bin/curl" <<'CURL'
  • Access to secretsline 31
    [Credential-related source omitted]
  • Network accessline 32
    log.write(json.dumps(sys.argv[1:], ensure_ascii=False) + '\n') print(json.dumps({'ok': True, 'result': {     'url': 'https://telegra.ph/Test-01-01',
  • Network accessline 33
    print(json.dumps({'ok': True, 'result': {     'url': 'https://telegra.ph/Test-01-01',     'path': 'Test-01-01',
  • Network accessline 34
    'url': 'https://telegra.ph/Test-01-01',
  • Network accessline 36
    [Credential-related source omitted]
  • Network accessline 37
    [Credential-related source omitted]
  • Access to secretsline 37
    [Credential-related source omitted]
  • Network accessline 38
    'auth_url': 'https://example.invalid/auth',
  • Network accessline 40
    PY CURL chmod +x "$TEST_TMP_DIR/bin/curl"
  • Access to secretsline 48
    [Credential-related source omitted]
  • Network accessline 50
    ABSENT='__ABSENT__' AUTHOR_DEFAULT='Поляков считает | Про ИИ, рекламу и аналитику данных' URL_DEFAULT='https://t.me/polyakov_schitaet'
  • Network accessline 52
    URL_DEFAULT='https://t.me/polyakov_schitaet'
  • Access to secretsline 58
    [Credential-related source omitted]
  • Access to secretsline 66
    [Credential-related source omitted]
  • Network accessline 90
    fi         if [ -s "$TPH_TEST_CURL_LOG" ]; then             printf '%s: curl не должен вызываться при ошибке\n' "$TEST_CASE" >&2
  • Network accessline 91
    if [ -s "$TPH_TEST_CURL_LOG" ]; then             printf '%s: curl не должен вызываться при ошибке\n' "$TEST_CASE" >&2             exit 1
  • Network accessline 92
    printf '%s: curl не должен вызываться при ошибке\n' "$TEST_CASE" >&2
  • Network accessline 112
    check(len(requests) == int(count), f'ожидалось {count} запросов, получено {len(requests)}') for number, argv in enumerate(requests, 1):     check(argv[-1] == f'https://api.telegra.ph/{method}', f'запрос {number}: неверный метод')
  • Network accessline 113
    for number, argv in enumerate(requests, 1):     check(argv[-1] == f'https://api.telegra.ph/{method}', f'запрос {number}: неверный метод')     fields = {}
  • Network accessline 114
    check(argv[-1] == f'https://api.telegra.ph/{method}', f'запрос {number}: неверный метод')
  • Access to secretsline 139
    [Credential-related source omitted]
  • Network accessline 140
    TELEGRAPH_AUTHOR_NAME='Автор из окружения' TELEGRAPH_AUTHOR_URL='https://example.invalid/environment'
  • Network accessline 141
    TELEGRAPH_AUTHOR_URL='https://example.invalid/environment'
  • Network accessline 142
    export TELEGRAPH_AUTHOR_NAME TELEGRAPH_AUTHOR_URL write_config test-token "$AUTHOR_DEFAULT" "$URL_DEFAULT" run_case create_config ok create_page.sh --title Test --html '<p>Hello</p>'
  • Network accessline 143
    write_config test-token "$AUTHOR_DEFAULT" "$URL_DEFAULT"
  • Network accessline 144
    run_case create_config ok create_page.sh --title Test --html '<p>Hello</p>' assert_requests 1 createPage "author_name=$AUTHOR_DEFAULT" "author_url=$URL_DEFAULT" unset TELEGRAPH_AUTHOR_NAME TELEGRAPH_AUTHOR_URL
  • Network accessline 145
    assert_requests 1 createPage "author_name=$AUTHOR_DEFAULT" "author_url=$URL_DEFAULT"
  • Access to secretsline 148
    [Credential-related source omitted]
  • Dangerous shell operationline 149
    [Credential-related source omitted]
  • Access to secretsline 149
    [Credential-related source omitted]
  • Network accessline 150
    [Credential-related source omitted]
  • Access to secretsline 150
    [Credential-related source omitted]
  • Network accessline 151
    TELEGRAPH_AUTHOR_NAME="$AUTHOR_DEFAULT" TELEGRAPH_AUTHOR_URL="$URL_DEFAULT" export TELEGRAPH_ACCESS_TOKEN TELEGRAPH_AUTHOR_NAME TELEGRAPH_AUTHOR_URL
  • Network accessline 152
    TELEGRAPH_AUTHOR_URL="$URL_DEFAULT"
  • Network accessline 153
    [Credential-related source omitted]
  • Access to secretsline 153
    [Credential-related source omitted]
  • Network accessline 154
    run_case edit_environment ok edit_page.sh --path Test-01-01 --title Test --html '<p>Hello</p>' assert_requests 1 editPage/Test-01-01 "author_name=$AUTHOR_DEFAULT" "author_url=$URL_DEFAULT" unset TELEGRAPH_ACCESS_TOKEN TELEGRAPH_AUTHOR_NAME 
  • Network accessline 155
    assert_requests 1 editPage/Test-01-01 "author_name=$AUTHOR_DEFAULT" "author_url=$URL_DEFAULT"
  • Access to secretsline 156
    [Credential-related source omitted]
  • Network accessline 158
    write_config test-token "$AUTHOR_DEFAULT" "$URL_DEFAULT"
  • Network accessline 159
    run_case create_name_override ok create_page.sh --title Test --html '<p>Hello</p>' --author-name 'Явный автор' assert_requests 1 createPage 'author_name=Явный автор' "author_url=$URL_DEFAULT" run_case edit_url_override ok edit_page.sh --pat
  • Network accessline 160
    assert_requests 1 createPage 'author_name=Явный автор' "author_url=$URL_DEFAULT"
  • Network accessline 161
    run_case edit_url_override ok edit_page.sh --path Test-01-01 --title Test --html '<p>Hello</p>' --author-url 'https://example.invalid/explicit'
  • Network accessline 162
    assert_requests 1 editPage/Test-01-01 "author_name=$AUTHOR_DEFAULT" 'author_url=https://example.invalid/explicit'
  • Access to secretsline 170
    [Credential-related source omitted]
  • Network accessline 175
    run_case edit_name_only ok edit_page.sh --path Test-01-01 --title Test --html '<p>Hello</p>' assert_requests 1 editPage/Test-01-01 "author_name=$AUTHOR_DEFAULT" '!author_url' write_config test-token "$AUTHOR_DEFAULT" "$URL_DEFAULT"
  • Network accessline 177
    write_config test-token "$AUTHOR_DEFAULT" "$URL_DEFAULT"
  • Network accessline 187
    PY run_case split_config ok create_page.sh --title Test --content-file "$TEST_TMP_DIR/large.json" assert_requests 3 createPage "author_name=$AUTHOR_DEFAULT" "author_url=$URL_DEFAULT"
  • Network accessline 188
    run_case split_config ok create_page.sh --title Test --content-file "$TEST_TMP_DIR/large.json" assert_requests 3 createPage "author_name=$AUTHOR_DEFAULT" "author_url=$URL_DEFAULT" grep -q '^Parts:     2$' "$TEST_TMP_DIR/split_config.out"
  • Network accessline 189
    assert_requests 3 createPage "author_name=$AUTHOR_DEFAULT" "author_url=$URL_DEFAULT"
  • Network accessline 196
    write_config "$ABSENT" "$AUTHOR_DEFAULT" "$URL_DEFAULT"
  • Network accessline 198
    [Credential-related source omitted]
  • Access to secretsline 198
    [Credential-related source omitted]
  • Network accessline 200
    [Credential-related source omitted]
  • Access to secretsline 200
    [Credential-related source omitted]
  • Access to secretsline 203
    [Credential-related source omitted]
  • Network accessline 213
    ln -s "$(command -v "$command_name")" "$NO_PYTHON_BIN/$command_name" done ln -s "$TEST_TMP_DIR/bin/curl" "$NO_PYTHON_BIN/curl"
  • Network accessline 214
    done ln -s "$TEST_TMP_DIR/bin/curl" "$NO_PYTHON_BIN/curl" write_config test-token "$AUTHOR_DEFAULT" "$URL_DEFAULT"
  • Network accessline 215
    ln -s "$TEST_TMP_DIR/bin/curl" "$NO_PYTHON_BIN/curl"
  • Network accessline 216
    write_config test-token "$AUTHOR_DEFAULT" "$URL_DEFAULT"
  • Network accessline 220
    [Credential-related source omitted]
  • Network accessline 221
    [Credential-related source omitted]
  • Access to secretsline 221
    [Credential-related source omitted]
  • Network accessline 222
    write_config "$ABSENT" "$AUTHOR_DEFAULT" "$URL_DEFAULT"

plugins/telegraph-publisher/skills/telegraph-publisher/scripts/upload.sh

  • Executable scriptline 1
    #!/bin/sh
  • Network accessline 7
    #   sh upload.sh --file /path/to/image.png --insecure   # skip SSL verification # # Output: full URL (https://telegra.ph/file/...)
  • Network accessline 8
    # # Output: full URL (https://telegra.ph/file/...) #
  • Network accessline 9
    # Output: full URL (https://telegra.ph/file/...)
  • Dangerous shell operationline 82
    trap 'rm -f "$_tmpfile"' EXIT
  • Network accessline 84
    # Build curl args
  • Network accessline 93
    set -- "$@" -F "file=@$FILE" "https://telegra.ph/upload"
  • Network accessline 95
    _http_code=$(curl "$@")
  • Network accessline 119
    _full_url="https://telegra.ph${_src}"
  • Network accessline 120
    echo "$_full_url"

plugins/x-research/skills/x-research/.gitignore

  • Access to secretsline 1
    [Credential-related source omitted]

plugins/x-research/skills/x-research/SKILL.md

  • Network accessline 29
    Get an xAI API key at [console.x.ai](https://console.x.ai/), then:
  • Access to secretsline 31
    [Credential-related source omitted]
  • Access to secretsline 34
    [Credential-related source omitted]
  • Access to secretsline 76
    [Credential-related source omitted]
  • Access to secretsline 82
    [Credential-related source omitted]
  • Network accessline 94
    # By URL bash scripts/analyze.sh --url "https://x.com/elonmusk/status/123456" --query "context about the post"
  • Network accessline 95
    bash scripts/analyze.sh --url "https://x.com/elonmusk/status/123456" --query "context about the post"
  • Access to secretsline 106
    [Credential-related source omitted]
  • Access to secretsline 158
    [Credential-related source omitted]
  • Access to secretsline 159
    [Credential-related source omitted]
  • Access to secretsline 162
    [Credential-related source omitted]
  • Network accessline 197
    - **x_search**: max 10 handles per `allowed_x_handles` (auto-batched if more) - **Rate limits**: tier-based, see [docs.x.ai/developers/rate-limits](https://docs.x.ai/developers/rate-limits)
  • Network accessline 198
    - **Rate limits**: tier-based, see [docs.x.ai/developers/rate-limits](https://docs.x.ai/developers/rate-limits)

plugins/x-research/skills/x-research/config/.env.example

  • Access to secretsline 2
    [Credential-related source omitted]
  • Access to secretsline 3
    [Credential-related source omitted]
  • Network accessline 6
    # ─── API credentials ───────────────────────────────────────── # Get your key at https://console.x.ai/
  • Network accessline 7
    # Get your key at https://console.x.ai/
  • Access to secretsline 8
    [Credential-related source omitted]
  • Network accessline 10
    # ─── Model ─────────────────────────────────────────────────── # Config-driven; fallback to grok-4.20-reasoning if unavailable. # Full list: https://docs.x.ai/developers/models
  • Network accessline 11
    # Config-driven; fallback to grok-4.20-reasoning if unavailable. # Full list: https://docs.x.ai/developers/models XAI_MODEL=grok-4-1-fast-reasoning
  • Network accessline 12
    # Full list: https://docs.x.ai/developers/models

plugins/x-research/skills/x-research/config/README.md

  • Network accessline 5
    1. Go to [console.x.ai](https://console.x.ai/)
  • Access to secretsline 10
    [Credential-related source omitted]
  • Access to secretsline 13
    [Credential-related source omitted]
  • Access to secretsline 16
    [Credential-related source omitted]
  • Network accessline 65
    Check available models: [docs.x.ai/developers/models](https://docs.x.ai/developers/models)

plugins/x-research/skills/x-research/references/API_REFERENCE.md

  • Network accessline 6
    POST https://api.x.ai/v1/responses
  • Access to secretsline 7
    [Credential-related source omitted]
  • Network accessline 61
    {               "type": "url_citation",               "url": "https://x.com/user/status/123",
  • Network accessline 62
    "type": "url_citation",               "url": "https://x.com/user/status/123",               "title": "...",
  • Network accessline 63
    "url": "https://x.com/user/status/123",
  • Network accessline 91
    Full model list: https://docs.x.ai/developers/models
  • Network accessline 104
    Details: https://docs.x.ai/developers/rate-limits

plugins/x-research/skills/x-research/scripts/analyze.sh

  • Executable scriptline 1
    #!/bin/sh
  • Network accessline 2
    # Analyze: deep analysis of a specific X post, thread, or topic # Usage: bash scripts/analyze.sh --query "post description or topic" [--url "https://x.com/..."] [--period today]
  • Network accessline 3
    # Usage: bash scripts/analyze.sh --query "post description or topic" [--url "https://x.com/..."] [--period today]
  • Network accessline 12
    if [ -z "$QUERY" ] && [ -z "$URL" ]; then     echo "Error: --query or --url is required." >&2     echo "Usage: bash scripts/analyze.sh --query \"topic or post description\" [--url \"https://x.com/...\"]" >&2
  • Network accessline 13
    echo "Error: --query or --url is required." >&2     echo "Usage: bash scripts/analyze.sh --query \"topic or post description\" [--url \"https://x.com/...\"]" >&2     exit 1
  • Network accessline 14
    echo "Usage: bash scripts/analyze.sh --query \"topic or post description\" [--url \"https://x.com/...\"]" >&2
  • Access to secretsline 108
    [Credential-related source omitted]
  • Access to secretsline 109
    [Credential-related source omitted]
  • Access to secretsline 110
    [Credential-related source omitted]
  • Access to secretsline 111
    [Credential-related source omitted]
  • Access to secretsline 112
    [Credential-related source omitted]

plugins/x-research/skills/x-research/scripts/common.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 9
    [Credential-related source omitted]
  • Network accessline 14
    XAI_API_URL="https://api.x.ai/v1/responses"
  • Access to secretsline 32
    [Credential-related source omitted]
  • Access to secretsline 34
    [Credential-related source omitted]
  • Access to secretsline 37
    [Credential-related source omitted]
  • Access to secretsline 66
    [Credential-related source omitted]
  • Dangerous shell operationline 71
    rm -f "$_exports_file"
  • Access to secretsline 75
    [Credential-related source omitted]
  • Dangerous shell operationline 79
    rm -f "$_exports_file"
  • Access to secretsline 81
    [Credential-related source omitted]
  • Access to secretsline 82
    [Credential-related source omitted]
  • Dangerous shell operationline 243
    trap 'rm -f "$_body_file" "$_response_file" "$_headers_file"' EXIT
  • Access to secretsline 255
    [Credential-related source omitted]
  • Access to secretsline 258
    [Credential-related source omitted]
  • Access to secretsline 261
    [Credential-related source omitted]
  • Access to secretsline 265
    [Credential-related source omitted]
  • Access to secretsline 268
    [Credential-related source omitted]
  • Access to secretsline 270
    [Credential-related source omitted]
  • Network accessline 278
    [Credential-related source omitted]
  • Access to secretsline 278
    [Credential-related source omitted]
  • Network accessline 279
    -X POST "$XAI_API_URL" \
  • Access to secretsline 281
    [Credential-related source omitted]
  • Access to secretsline 300
    [Credential-related source omitted]
  • Access to secretsline 303
    [Credential-related source omitted]
  • Access to secretsline 306
    [Credential-related source omitted]
  • Access to secretsline 310
    [Credential-related source omitted]
  • Access to secretsline 313
    [Credential-related source omitted]
  • Access to secretsline 315
    [Credential-related source omitted]
  • Network accessline 319
    print(json.dumps(body, ensure_ascii=False)) " > "$_body_file"                 _http_code=$(curl -s -o "$_response_file" -w '%{http_code}' \
  • Network accessline 320
    " > "$_body_file"                 _http_code=$(curl -s -o "$_response_file" -w '%{http_code}' \                     -X POST "$XAI_API_URL" \
  • Network accessline 321
    [Credential-related source omitted]
  • Access to secretsline 321
    [Credential-related source omitted]
  • Network accessline 322
    -X POST "$XAI_API_URL" \
  • Access to secretsline 324
    [Credential-related source omitted]
  • Access to secretsline 435
    [Credential-related source omitted]
  • Access to secretsline 436
    [Credential-related source omitted]
  • Access to secretsline 438
    [Credential-related source omitted]
  • Access to secretsline 439
    [Credential-related source omitted]
  • Access to secretsline 440
    [Credential-related source omitted]
  • Access to secretsline 441
    [Credential-related source omitted]
  • Access to secretsline 458
    [Credential-related source omitted]
  • Access to secretsline 460
    [Credential-related source omitted]
  • Access to secretsline 461
    [Credential-related source omitted]
  • Access to secretsline 462
    [Credential-related source omitted]
  • Access to secretsline 463
    [Credential-related source omitted]
  • Access to secretsline 464
    [Credential-related source omitted]
  • Dangerous shell operationline 490
    rm -f "$_tmpcount"

plugins/x-research/skills/x-research/scripts/digest.sh

  • Executable scriptline 1
    #!/bin/sh
  • Network accessline 44
    SYSTEM_PROMPT='You are an X/Twitter research assistant. Always respond with valid JSON matching this schema: {"items": [{"author": "@handle", "date": "ISO8601", "summary": "1-2 sentence summary", "engagement": "likes, reposts", "url": "http
  • Network accessline 45
    {"items": [{"author": "@handle", "date": "ISO8601", "summary": "1-2 sentence summary", "engagement": "likes, reposts", "url": "https://x.com/...", "topic": "category"}], "ideas": ["Telegram post idea 1", "..."], "summary": "Overall narrativ
  • Dangerous shell operationline 61
    trap 'rm -rf "$_merge_dir"' EXIT
  • Access to secretsline 137
    [Credential-related source omitted]
  • Access to secretsline 138
    [Credential-related source omitted]
  • Access to secretsline 139
    [Credential-related source omitted]
  • Access to secretsline 140
    [Credential-related source omitted]
  • Access to secretsline 141
    [Credential-related source omitted]

plugins/x-research/skills/x-research/scripts/find_latest.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 55
    [Credential-related source omitted]
  • Access to secretsline 61
    [Credential-related source omitted]
  • Access to secretsline 66
    [Credential-related source omitted]
  • Access to secretsline 71
    [Credential-related source omitted]

plugins/x-research/skills/x-research/scripts/prepare_runtime.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 22
    [Credential-related source omitted]
  • Access to secretsline 23
    [Credential-related source omitted]

plugins/x-research/skills/x-research/scripts/sanitize_env.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 2
    [Credential-related source omitted]

plugins/x-research/skills/x-research/scripts/search.sh

  • Executable scriptline 1
    #!/bin/sh
  • Network accessline 27
    SYSTEM_PROMPT='You are an X/Twitter research assistant. Always respond with valid JSON matching this schema: {"items": [{"author": "@handle", "date": "ISO8601", "summary": "1-2 sentence summary", "engagement": "likes, reposts", "url": "http
  • Network accessline 28
    {"items": [{"author": "@handle", "date": "ISO8601", "summary": "1-2 sentence summary", "engagement": "likes, reposts", "url": "https://x.com/...", "topic": "category"}], "ideas": ["Telegram post idea 1", "..."], "summary": "Overall search r
  • Access to secretsline 76
    [Credential-related source omitted]
  • Access to secretsline 78
    [Credential-related source omitted]
  • Access to secretsline 80
    [Credential-related source omitted]
  • Access to secretsline 81
    [Credential-related source omitted]
  • Access to secretsline 82
    [Credential-related source omitted]

plugins/x-research/skills/x-research/scripts/tests/run.sh

  • Executable scriptline 1
    #!/bin/sh

plugins/x-research/skills/x-research/scripts/tests/test_config_loader.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 11
    rm -rf "$TMP_DIR"
  • Access to secretsline 16
    [Credential-related source omitted]
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 30
    [Credential-related source omitted]
  • Access to secretsline 37
    [Credential-related source omitted]
  • Access to secretsline 44
    [Credential-related source omitted]
  • Access to secretsline 45
    [Credential-related source omitted]

plugins/x-research/skills/x-research/scripts/trending.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 68
    [Credential-related source omitted]
  • Access to secretsline 69
    [Credential-related source omitted]
  • Access to secretsline 70
    [Credential-related source omitted]
  • Access to secretsline 71
    [Credential-related source omitted]
  • Access to secretsline 72
    [Credential-related source omitted]

plugins/yandex-direct/skills/yandex-direct/.gitignore

  • Access to secretsline 5
    [Credential-related source omitted]

plugins/yandex-direct/skills/yandex-direct/config/API_ACCESS.md

  • Network accessline 13
    Войдите под Яндекс-аккаунтом владельца приложения и откройте [создание приложения](https://oauth.yandex.ru/client/new/).
  • Network accessline 14
    [создание приложения](https://oauth.yandex.ru/client/new/).
  • Network accessline 28
    получения токена. Для выбранного типа приложения адрес возврата уже задан Яндексом; настраивать свой сайт для получения токена вручную не требуется. Порядок регистрации: [Яндекс OAuth](https://yandex.ru/dev/id/doc/ru/register-api),
  • Network accessline 29
    Яндексом; настраивать свой сайт для получения токена вручную не требуется. Порядок регистрации: [Яндекс OAuth](https://yandex.ru/dev/id/doc/ru/register-api), права Директа: [документация Директа](https://yandex.ru/dev/direct/doc/ru/concepts
  • Network accessline 30
    Порядок регистрации: [Яндекс OAuth](https://yandex.ru/dev/id/doc/ru/register-api),
  • Network accessline 31
    права Директа: [документация Директа](https://yandex.ru/dev/direct/doc/ru/concepts/register).
  • Network accessline 35
    Под тем же аккаунтом откройте [«Мои заявки» в настройках API](https://direct.yandex.ru/registered/main.pl?cmd=apiCertificationRequestList).
  • Network accessline 36
    [«Мои заявки» в настройках API](https://direct.yandex.ru/registered/main.pl?cmd=apiCertificationRequestList).
  • Network accessline 37
    Если страница недоступна, проверьте наличие кабинета: Яндекс требует хотя бы одну созданную кампанию для доступа к настройкам API. Само подключение скилла не требует запуска показов. [Условия подачи заявки](https://yandex.ru/dev/direct/doc/
  • Network accessline 39
    требует запуска показов. [Условия подачи заявки](https://yandex.ru/dev/direct/doc/ru/access-request).
  • Network accessline 67
    Если просят ссылку на программу, укажите [страницу скилла](https://github.com/artwist-polyakov/polyakov-claude-skills/tree/main/plugins/yandex-direct)
  • Network accessline 68
    [страницу скилла](https://github.com/artwist-polyakov/polyakov-claude-skills/tree/main/plugins/yandex-direct)
  • Network accessline 73
    Программа использует Python 3.11 или новее, JSON и стандартную библиотеку Python. Основной адрес — `https://api.direct.yandex.com/json/v501/`; API Live v4 используется
  • Network accessline 74
    Основной адрес — `https://api.direct.yandex.com/json/v501/`; API Live v4 используется
  • Network accessline 100
    Если форма требует спецификацию, приложите это описание отдельным документом. Такой состав технического описания приведён в [официальном руководстве Директа](https://yandex.com/dev/direct/doc/en/real-world).
  • Network accessline 102
    [официальном руководстве Директа](https://yandex.com/dev/direct/doc/en/real-world).
  • Network accessline 105
    рассмотрения до семи дней. Если заявку отклонили, исправьте замечания и отправьте повторно. Заявка относится к ClientID; каждому пользователю приложения отдельная заявка не нужна. [Порядок рассмотрения](https://yandex.ru/dev/direct/doc/ru/c
  • Network accessline 107
    заявка не нужна. [Порядок рассмотрения](https://yandex.ru/dev/direct/doc/ru/concepts/register).
  • Network accessline 116
    https://oauth.yandex.ru/authorize?response_type=token&client_id=CLIENT_ID
  • Access to secretsline 120
    [Credential-related source omitted]
  • Network accessline 124
    Этот способ подходит для собственного скрипта или небольшого числа представителей одного бизнеса. Для приложения с широкой аудиторией нужен удобный процесс авторизации пользователей. [Получение токена вручную](https://yandex.ru/dev/id/doc/r
  • Network accessline 125
    одного бизнеса. Для приложения с широкой аудиторией нужен удобный процесс авторизации пользователей. [Получение токена вручную](https://yandex.ru/dev/id/doc/ru/tokens/debug-token), [варианты авторизации Директа](https://yandex.ru/dev/direct
  • Network accessline 126
    авторизации пользователей. [Получение токена вручную](https://yandex.ru/dev/id/doc/ru/tokens/debug-token),
  • Network accessline 127
    [варианты авторизации Директа](https://yandex.ru/dev/direct/doc/ru/concepts/auth-token).

plugins/yandex-direct/skills/yandex-direct/config/README.md

  • Network accessline 17
    посмотреть в выводе `accounts.py` или взять из параметра `ulogin` в адресе открытого кабинета. Например, для `https://direct.yandex.ru/dna/grid/campaigns?ulogin=client-shop` настройка такая:
  • Network accessline 19
    `https://direct.yandex.ru/dna/grid/campaigns?ulogin=client-shop` настройка такая:

plugins/yandex-direct/skills/yandex-direct/references/AD_CONTENT.md

  • Network accessline 41
    Перед продвижением товара с особыми условиями откройте актуальные [требования по тематикам](https://yandex.ru/support/direct/ru/moderation/special-categories) и [список ограниченных категорий](https://yandex.ru/support/direct/ru/moderation/
  • Network accessline 53
    Машиночитаемый перечень требований и источников сохранён в [ad_content.json](ad_content.json). Актуальные правила оформления: [справка Яндекс Директа](https://yandex.ru/support/direct/ru/moderation/ad-rules).

plugins/yandex-direct/skills/yandex-direct/references/API_MAP.md

  • Network accessline 7
    Основной JSON API: `https://api.direct.yandex.com/json/v501/{service}`. Reports: `https://api.direct.yandex.com/json/v5/reports`. Используйте документированный адрес нужного сервиса. Существование другого отвечающего адреса не гарантирует о
  • Network accessline 13
    | Сервис | Назначение | Методы | |---|---|---| | [AdExtensions](https://yandex.ru/dev/direct/doc/ru/adextensions/adextensions) | Работа с расширениями к объявлениям. В настоящее время доступен один тип расширения — уточнение. | `add`, `dele
  • Network accessline 14
    |---|---|---| | [AdExtensions](https://yandex.ru/dev/direct/doc/ru/adextensions/adextensions) | Работа с расширениями к объявлениям. В настоящее время доступен один тип расширения — уточнение. | `add`, `delete`, `get` | | [AdGroups](https:/
  • Network accessline 15
    | [AdExtensions](https://yandex.ru/dev/direct/doc/ru/adextensions/adextensions) | Работа с расширениями к объявлениям. В настоящее время доступен один тип расширения — уточнение. | `add`, `delete`, `get` |
  • Network accessline 16
    | [AdGroups](https://yandex.ru/dev/direct/doc/ru/adgroups/adgroups) | Работа с группами объявлений. | `add`, `delete`, `get`, `update` |
  • Network accessline 17
    | [AdImages](https://yandex.ru/dev/direct/doc/ru/adimages/adimages) | Работа с изображениями. | `add`, `delete`, `get` |
  • Network accessline 18
    | [Ads](https://yandex.ru/dev/direct/doc/ru/ads/ads) | Работа с объявлениями. | `add`, `archive`, `delete`, `get`, `moderate`, `resume`, `suspend`, `unarchive`, `update` |
  • Network accessline 19
    | [AdVideos](https://yandex.ru/dev/direct/doc/ru/advideos/advideos) | Работа с видео. | `add`, `get` |
  • Network accessline 20
    | [AgencyClients](https://yandex.ru/dev/direct/doc/ru/agencyclients/agencyclients) | Сервис предназначен для агентств и позволяет управлять клиентами агентства. | `add` (снят), `addPassportOrganization`, `addPassportOrganizationMember`, `ge
  • Network accessline 21
    | [AudienceTargets](https://yandex.ru/dev/direct/doc/ru/audiencetargets/audiencetargets) | Работа с условиями нацеливания на аудиторию. | `add`, `delete`, `get`, `resume`, `setBids`, `suspend` |
  • Network accessline 22
    | [Bids](https://yandex.ru/dev/direct/doc/ru/bids/bids) | Сервис предназначен для назначения ставок ключевым фразам и автотаргетингам. | `get`, `set`, `setAuto` |
  • Network accessline 23
    | [Businesses](https://yandex.ru/dev/direct/doc/ru/businesses/businesses) | Сервис позволяет получить профили организаций бизнеса. | `get` |
  • Network accessline 24
    | [BidModifiers](https://yandex.ru/dev/direct/doc/ru/bidmodifiers/bidmodifiers) | Сервис предназначен для управления корректировками ставок. | `add`, `delete`, `get`, `set` |
  • Network accessline 25
    | [Campaigns](https://yandex.ru/dev/direct/doc/ru/campaigns/campaigns) | Работа с кампаниями. | `add`, `archive`, `delete`, `get`, `resume`, `suspend`, `unarchive`, `update` |
  • Network accessline 26
    | [Changes](https://yandex.ru/dev/direct/doc/ru/changes/changes) | Сервис предназначен для проверки наличия изменений. | `checkDictionaries`, `checkCampaigns`, `check` |
  • Network accessline 27
    | [Clients](https://yandex.ru/dev/direct/doc/ru/clients/clients) | Сервис предназначен для управления параметрами рекламодателя и настройками пользователя — представителя рекламодателя, а также для получения параметров агентства и настроек 
  • Network accessline 28
    | [Creatives](https://yandex.ru/dev/direct/doc/ru/creatives/creatives) | Работа с креативами. | `add`, `get` |
  • Network accessline 29
    | [Dictionaries](https://yandex.ru/dev/direct/doc/ru/dictionaries/dictionaries) | Сервис предназначен для получения справочных данных: регионов, часовых поясов, курсов валют, станций метрополитена, ограничений на значения параметров и др. |
  • Network accessline 30
    | [Feeds](https://yandex.ru/dev/direct/doc/ru/feeds/feeds) | Работа с фидами. | `add`, `delete`, `get`, `update` |
  • Network accessline 31
    | [KeywordBids](https://yandex.ru/dev/direct/doc/ru/keywordbids/keywordbids) | Сервис предназначен для назначения ставок ключевым фразам и автотаргетингам и для получения данных, полезных при назначении ставок. | `get`, `set`, `setAuto` |
  • Network accessline 32
    | [Keywords](https://yandex.ru/dev/direct/doc/ru/keywords/keywords) | Работа с ключевыми фразами и автотаргетингами. | `add`, `delete`, `get`, `resume`, `suspend`, `update` |
  • Network accessline 33
    | [KeywordsResearch](https://yandex.ru/dev/direct/doc/ru/keywordsresearch/keywordsresearch) | Сервис предназначен для предварительной обработки и исследования ключевых фраз. | `deduplicate`, `hasSearchVolume` |
  • Network accessline 34
    | [Leads](https://yandex.ru/dev/direct/doc/ru/leads/leads) | Сервис позволяет получить данные, введенные пользователями в формы на Турбо-страницах. | `get` |
  • Network accessline 35
    | [NegativeKeywordSharedSets](https://yandex.ru/dev/direct/doc/ru/negativekeywordsharedsets/negativekeywordsharedsets) | Работа с наборами минус-фраз. | `add`, `delete`, `get`, `update` |
  • Network accessline 36
    | [RetargetingLists](https://yandex.ru/dev/direct/doc/ru/retargetinglists/retargetinglists) | Работа с условиями ретаргетинга и подбора аудитории. | `add`, `delete`, `get`, `update` |
  • Network accessline 37
    | [Sitelinks](https://yandex.ru/dev/direct/doc/ru/sitelinks/sitelinks) | Работа с наборами быстрых ссылок. | `add`, `delete`, `get` |
  • Network accessline 38
    | [Strategies](https://yandex.ru/dev/direct/doc/ru/strategies/strategies) | Работа с пакетными стратегиями. | `add`, `archive`, `get`, `unarchive`, `update` |
  • Network accessline 39
    | [TurboPages](https://yandex.ru/dev/direct/doc/ru/turbopages/turbopages) | Сервис позволяет получить параметры Турбо-страниц. | `get` |
  • Network accessline 53
    Вызовы Live v4 идут на `https://api.direct.yandex.com/live/v4/json/`; некоторые методы используют `/v4/json/`. Устаревшее управление кампаниями, объявлениями и ставками не заменяет v501.
  • Network accessline 75
    Источники: [справочник v5](https://yandex.ru/dev/direct/doc/ru/), [методы v4](https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/_AllMethods).

plugins/yandex-direct/skills/yandex-direct/references/API_OBJECTS.md

  • Network accessline 324
    Необязательность `DefaultTexts` у `ShoppingAdUpdate` и `ListingAdUpdate` проверена по `minOccurs=0` в [схеме v501](https://api.direct.yandex.com/v501/ads?wsdl): таблица `Ads.update`
  • Network accessline 325
    проверена по `minOccurs=0` в [схеме v501](https://api.direct.yandex.com/v501/ads?wsdl): таблица `Ads.update` помечает поле обязательным, но схема допускает частичное обновление без него.
  • Network accessline 326
    [схеме v501](https://api.direct.yandex.com/v501/ads?wsdl): таблица `Ads.update`
  • Network accessline 782
    **Уточнения.** `AdExtensions` умеет добавлять, читать и удалять уточнения; редактирование текста требует нового объекта и перепривязки. Длина одного уточнения — до 25 символов, к объявлению привязывается до 50. Общая длина показанных уточне
  • Network accessline 790
    Актуальные определения: [справочник API Директа](https://yandex.ru/dev/direct/doc/ru/), [метод Ads.update](https://yandex.ru/dev/direct/doc/ru/ads/update).

plugins/yandex-direct/skills/yandex-direct/references/AUTOTARGETING.md

  • Network accessline 117
    Источники: [автотаргетинг](https://yandex.ru/support/direct/ru/impression-criteria/autotargeting),
  • Network accessline 118
    [создание группы ЕПК](https://yandex.ru/support/direct/ru/unified-performance-campaign/create-group),
  • Network accessline 119
    [Keywords.add](https://yandex.ru/dev/direct/doc/ru/keywords/add),
  • Network accessline 120
    [Keywords.update](https://yandex.ru/dev/direct/doc/ru/keywords/update),
  • Network accessline 121
    [поля Reports API](https://yandex.ru/dev/direct/doc/ru/report-format).

plugins/yandex-direct/skills/yandex-direct/references/BUDGETS.md

  • Network accessline 65
    Путь и отображение текущей суммы описаны в [гиде по интерфейсу](https://yandex.ru/support/direct/ru/new-interface/guide).
  • Network accessline 71
    Связь проверена 11.09.2026 в рублёвом тестовом кабинете: запись `Amount = 7000` дала **49 000 ₽ в неделю** в интерфейсе, снятие вернуло `null` в API. [Справка API](https://yandex.ru/dev/direct/doc/dg-v4/ru/live/AccountManagement_Update.html
  • Network accessline 73
    **Повторная проверка — раз в три календарных месяца.** Порядок, результаты и следующая дата ведутся в [issue №170](https://github.com/artwist-polyakov/polyakov-claude-skills/issues/170). На разрешённом тестовом кабинете сравни исходный `Acc
  • Network accessline 79
    - Для рублей минимум — 7000 ₽ в неделю. Команда получает `MinimumAccountDailyBudget` из [справочника валют](https://yandex.ru/dev/direct/doc/ru/dictionaries/get), переводит из микроединиц в валюту счёта и умножает на семь: `минимум за недел
  • Network accessline 86
    Механика и актуальные ограничения: [общий счёт](https://www.yandex.ru/support/direct/ru/payments/shared-account). Поэтому недельное ограничение не заменяет контроль фактического расхода за календарный месяц.
  • Network accessline 112
    При оплате за клики возможен перенос неиспользованного остатка прошлой недели, но не более 30% установленного недельного бюджета: расход отдельной недели может достигать 130% заданной суммы. Доля расхода за день зависит от расписания кампан
  • Network accessline 114
    Для бюджета на период суточный ориентир динамический: `оставшаяся сумма / оставшиеся дни показов`; он может быть превышен на 30%. Даты, автопродление и текущие ограничения проверяй перед настройкой. [Бюджет на период](https://yandex.ru/supp

plugins/yandex-direct/skills/yandex-direct/references/CHANGES.md

  • Network accessline 129
    python3 scripts/ads_write.py ad create --account example --group 12345 \   --title 'Кровельные материалы' --text 'Выберите материалы для вашего дома.' \   --href https://example.com/ --image HASH --apply
  • Network accessline 131
    --href https://example.com/ --image HASH --apply
  • Network accessline 159
    Описание API: [загрузка](https://yandex.ru/dev/direct/doc/ru/adimages/add),
  • Network accessline 160
    [чтение](https://yandex.ru/dev/direct/doc/ru/adimages/get),
  • Network accessline 161
    [требования к изображениям](https://yandex.ru/dev/direct/doc/ru/objects/adimage).

plugins/yandex-direct/skills/yandex-direct/references/ERRORS_AND_LIMITS.md

  • Network accessline 535
    Источники: [ограничения API](https://yandex.ru/dev/direct/doc/ru/concepts/restrictions), [справочник API](https://yandex.ru/dev/direct/doc/ru/).

plugins/yandex-direct/skills/yandex-direct/references/EXTENSIONS.md

  • Network accessline 56
    [   {"Title": "Каталог", "Href": "https://example.com/catalog", "Description": "Выберите подходящую модель"},
  • Network accessline 57
    {"Title": "Каталог", "Href": "https://example.com/catalog", "Description": "Выберите подходящую модель"},
  • Network accessline 58
    {"Title": "Доставка", "Href": "https://example.com/delivery"}
  • Network accessline 148
    Контракты API: [быстрые ссылки](https://yandex.ru/dev/direct/doc/ru/objects/sitelink),
  • Network accessline 149
    [уточнения](https://yandex.ru/dev/direct/doc/ru/objects/adextension),
  • Network accessline 150
    [изменение объявления](https://yandex.ru/dev/direct/doc/ru/ads/update).

plugins/yandex-direct/skills/yandex-direct/references/FEEDS.md

  • Network accessline 29
    uv run scripts/feeds.py get --account example --feed 123 --no-cache --json uv run scripts/feeds.py add --account example --name 'Каталог товаров' \   --business-type RETAIL --url https://example.com/catalog.xml
  • Network accessline 30
    uv run scripts/feeds.py add --account example --name 'Каталог товаров'    --business-type RETAIL --url https://example.com/catalog.xml
  • Network accessline 31
    --business-type RETAIL --url https://example.com/catalog.xml
  • Network accessline 33
    --business-type RETAIL --file catalog.xml uv run scripts/feeds.py update --account example --feed 123 \   --url https://example.com/catalog-new.xml --remove-utm-tags YES
  • Network accessline 34
    uv run scripts/feeds.py update --account example --feed 123    --url https://example.com/catalog-new.xml --remove-utm-tags YES
  • Network accessline 35
    --url https://example.com/catalog-new.xml --remove-utm-tags YES
  • Network accessline 191
    Справка: [Feeds](https://yandex.ru/dev/direct/doc/ru/feeds/feeds),
  • Network accessline 192
    [требования к фиду](https://yandex.ru/dev/direct/doc/ru/objects/feed),
  • Network accessline 193
    [Ads.add](https://yandex.ru/dev/direct/doc/ru/ads/add),
  • Network accessline 194
    [Ads.update](https://yandex.ru/dev/direct/doc/ru/ads/update),
  • Network accessline 195
    [правила отбора](https://yandex.ru/dev/direct/doc/ru/objects/ad).

plugins/yandex-direct/skills/yandex-direct/references/GOALS.md

  • Network accessline 25
    `PackageBiddingStrategy`. Для пакетной стратегии цели меняются у пакета и затрагивают связанные кампании; эта команда пакет не редактирует и кампанию не отвязывает. См. [описание пакетных стратегий](https://yandex.ru/dev/direct/doc/ru/objec
  • Network accessline 27
    не отвязывает. См. [описание пакетных стратегий](https://yandex.ru/dev/direct/doc/ru/objects/strategy).
  • Network accessline 54
    проверь каждый его элемент. Если состав нужно очистить, подготовь полную замену списка; добавление новой полезной цели само по себе не убирает старые мусорные. Описание: [параметры ЕПК](https://yandex.ru/dev/direct/doc/ru/campaigns/get-unif
  • Network accessline 56
    Описание: [параметры ЕПК](https://yandex.ru/dev/direct/doc/ru/campaigns/get-unified-campaign).
  • Network accessline 60
    Ценность, маржа и целевая цена — разные суммы. При смене режима согласуй их смысл и значения; не переноси прежнюю ценность в новую цену автоматически. Правила полей: [изменение ЕПК](https://yandex.ru/dev/direct/doc/ru/campaigns/update-unifi
  • Network accessline 62
    Правила полей: [изменение ЕПК](https://yandex.ru/dev/direct/doc/ru/campaigns/update-unified-campaign).
  • Network accessline 88
    если цели или стратегия изменились после исходного чтения. Предел — 30 целей; для двух стратегий `*_MULTIPLE_GOALS` минимум проверяется по итоговому списку. См. [изменение текстовой кампании](https://yandex.ru/dev/direct/doc/ru/campaigns/up
  • Network accessline 90
    по итоговому списку. См. [изменение текстовой кампании](https://yandex.ru/dev/direct/doc/ru/campaigns/update-text-campaign).

plugins/yandex-direct/skills/yandex-direct/references/MANUAL_SETUP.md

  • Network accessline 23
    Этот пример подходит, когда нужна автоматическая кампания для получения выбранных пользователем целевых действий на сайте. Текущие команды скилла не создают такие кампании; статистику после создания можно получать через Reports. Возможности
  • Network accessline 40
    У каждого текста должны быть понятное предложение и следующий шаг для клиента. Ссылки должны вести к соответствующим товарам, услугам или условиям. Перепроверьте сочетания заголовков, текста и изображений: каждое должно сохранять смысл и де
  • Network accessline 44
    Откройте нужный счётчик в Метрике и проверьте домен. Если счётчика ещё нет, нажмите **Добавить счётчик**, заполните сведения о сайте и установите полученный код на его страницы. В разделе **Настройка → Счётчик → Скопировать** доступен код д
  • Network accessline 46
    Если Метрика и Директ используют разные логины, владелец счётчика открывает **Настройки → Доступ → Индивидуальный доступ → Добавить пользователя**, вводит нужный логин, выбирает соответствующие задаче права и сохраняет изменения. Для просмо
  • Network accessline 60
    Если нужна новая цель, в Метрике откройте **Цели → Добавить цель → Целевое событие**. Задайте понятное название и идентификатор события, например `lead_accepted` для принятой заявки. Выберите точное совпадение идентификатора и сохраните цел
  • Network accessline 68
    Если подтверждённая оплата известна только системе учёта заказов, настройте передачу оттуда. В Метрике данные из CRM могут создавать отдельные цели, включая оплаченный заказ. Выберите именно нужный статус. [Загрузка данных из CRM](https://y
  • Network accessline 72
    1. Откройте сайт с параметром `_ym_debug=2`: например, `https://example.com/?_ym_debug=2`. Если в адресе уже есть параметры, добавьте `&_ym_debug=2`.
  • Network accessline 73
    2. Выполните целевое действие и проверьте в отладчике Метрики нужный счётчик и событие. При включённом исключении собственных визитов используйте приватное окно. [Официальная проверка цели](https://yandex.ru/support/metrica/ru/general/check
  • Network accessline 75
    4. Найдите цель по имени или ID в разделе **Конверсии** Метрики, задайте период проверки и проверьте достижения и целевые визиты. Данные появляются после обработки. [Отчёт «Конверсии»](https://yandex.ru/support/metrica/ru/reports/conversion
  • Network accessline 81
    В Директе откройте **Добавить → Кампанию → Мастер кампаний → Конверсии и трафик** и укажите подготовленную ссылку. Заполните объявления, **Быстрые ссылки**, регион и время показов. В **Аудитория** выберите подходящий режим: **Подобрать опти
  • Network accessline 85
    Мастер выбирает места показов автоматически. Если нужны выбор размещений или исключение площадок, подберите другой инструмент до запуска. [Возможности размещения](https://yandex.ru/support/direct/ru/campaign-master/site).
  • Network accessline 89
    В **Цель продвижения** выберите **Максимум целевых действий**. Добавьте счётчик, выбранные **Целевые действия** и их цены. Проверьте автоматически добавленные цели Карт, если подключена организация. [Цели кампании](https://yandex.ru/support
  • Network accessline 98
    Сопоставьте режим оплаты с выбранными событиями. Если заявка и оплата могут произойти в одном визите, заранее объясните последствия выбора обеих целей. [Режимы оплаты Мастера](https://yandex.ru/support/direct/ru/campaign-master/site).
  • Network accessline 102
    Если рассматривается **Адаптация бюджета**, отдельно укажите допустимое увеличение и верхнюю границу расходов. Эта настройка может увеличить бюджет следующей недели, поэтому её нельзя включать молча при фиксированном бюджете пользователя. [
  • Network accessline 104
    Слишком низкая целевая цена способна ограничить число результатов. Для первого вывода о работе автоматической стратегии Яндекс рекомендует 7–14 дней; отслеживание технических ошибок начинают сразу. [Как работает «Максимум конверсий»](https:
  • Network accessline 122
    **Создать кампанию** отправляет её на модерацию; **Сохранить как черновик** сохраняет подготовку. Показы могут начаться после одобрения при наличии денег. [Модерация и запуск](https://yandex.ru/support/direct/ru/campaign-master/site). Если 
  • Network accessline 128
    Откройте **Статистика** под названием кампании либо **Статистика → Мастер отчётов**. Задайте фактические даты работы и те же ценные цели. [Мастер отчётов Директа](https://yandex.ru/support/direct/ru/statistics/new-reports-wizard).

plugins/yandex-direct/skills/yandex-direct/references/PLACEMENTS.md

  • Network accessline 114
    Проверено по официальной документации 17.09.2026: [создание ЕПК](https://yandex.ru/dev/direct/doc/ru/campaigns/add-unified-campaign),
  • Network accessline 115
    [создание ЕПК](https://yandex.ru/dev/direct/doc/ru/campaigns/add-unified-campaign),
  • Network accessline 116
    [изменение ЕПК](https://yandex.ru/dev/direct/doc/ru/campaigns/update-unified-campaign),
  • Network accessline 117
    [чтение ЕПК](https://yandex.ru/dev/direct/doc/ru/campaigns/get-unified-campaign),
  • Network accessline 118
    [сохранение неназванных параметров при изменении](https://yandex.ru/dev/direct/doc/ru/modify).

plugins/yandex-direct/skills/yandex-direct/references/PLAYBOOK.md

  • Network accessline 85
    Если пользователь предпочитает `AUTO`, а в кампании стоит `LC`, можно предложить перейти на `AUTO` и в настройках кампании. Объясните последствия: стратегия будет использовать иначе рассчитанные конверсии и адаптировать прогноз, а при оплат
  • Network accessline 152
    В API поле группы `ServingStatus=RARELY_SERVED` называется «Мало показов»: при текущих условиях показы крайне редки, например из-за отсутствия спроса на фразы. Это свойство группы, отдельное от модерации `Status`. Значение `ELIGIBLE` означа
  • Network accessline 164
    Если спрос раздроблен по множеству однотипных товарных групп, предложите [общую группу с шаблоном и параметрами ссылки](TEMPLATES.md#редкие-товарные-запросы-в-общей-группе). Это способ собрать спрос и сохранить переходы на нужные товары; он
  • Network accessline 230
    Для новой семантики и оценки спроса используйте соседний [скилл Вордстата](https://github.com/artwist-polyakov/polyakov-claude-skills/tree/main/plugins/yandex-wordstat/skills/yandex-wordstat). Если его нет или доступ не настроен, назовите э
  • Network accessline 291
    Для решения по мобильным используйте [скилл Метрики](https://github.com/artwist-polyakov/polyakov-claude-skills/tree/main/plugins/yandex-metrika/skills/yandex-metrika): взаимодействие с сайтом, достижение ценных целей и пригодность мобильно

plugins/yandex-direct/skills/yandex-direct/references/PREVIEW.md

  • Network accessline 26
    uv run scripts/preview.py matrix --brief brief.json --image-url https://example.com/banner.jpg
  • Network accessline 80
    Для просмотра настоящего размещения используйте [«Нацелиться на объявление»](https://yandex.ru/support/direct/ru/impressions/view-ad) в кабинете, когда объявление прошло модерацию и кампания работает.

plugins/yandex-direct/skills/yandex-direct/references/REPORTS.md

  • Network accessline 13
    Список приходит из `GetStatGoals` по выбранной кампании. Без `--campaign` опрашиваются неархивные кампании кабинета. Сегменты ретаргетинга в список целей статистики не добавляются. Метод работает в версии Live 4, как указано в [таблице соот
  • Network accessline 69
    Сначала определите историю: квартал или последние 180 дней. Затем выберите недавний период для проверки позиций, обычно 14–30 полных дней. Назовите оба периода в ответе. Поисковые запросы доступны только за последние 180 дней; календарное п
  • Network accessline 93
    `AvgImpressionPosition` — средняя позиция показа, `AvgClickPosition` — средняя позиция клика; обе учитывают первую страницу поиска, позиция 1 — самая высокая. `AvgTrafficVolume` описывает средний объём трафика с занятых позиций. Это не проц
  • Network accessline 95
    `Slot=PREMIUMBLOCK` означает спецразмещение. Его доля — показы этого блока / все показы выбранного условия на поиске × 100%. `ALONE` и остальные блоки показывайте отдельно. Такая доля описывает фактические показы, а не долю всех доступных а
  • Network accessline 148
    `--attribution`. Это относится и к `--traffic-only`, и к расходу в аудите объявлений: для показов, кликов и расхода модель не нужна. [Параметры отчёта](https://yandex.ru/dev/direct/doc/ru/spec).
  • Network accessline 150
    [Параметры отчёта](https://yandex.ru/dev/direct/doc/ru/spec).
  • Network accessline 152
    Один визит может достичь нескольких целей. Покажите каждую цель отдельно: сумма конверсий по целям не равна числу уникальных клиентов или заявок. CPA каждой цели — расход / конверсии этой цели. Доход по выбранным целям тоже не складывайте б

plugins/yandex-direct/skills/yandex-direct/references/RETARGETING.md

  • Network accessline 111
    Документация API: [доступные цели и сегменты](https://yandex.ru/dev/direct/doc/dg-v4/ru/live/GetRetargetingGoals.html),
  • Network accessline 112
    [создание условия](https://yandex.ru/dev/direct/doc/ru/retargetinglists/add),
  • Network accessline 113
    [чтение правил и доступности](https://yandex.ru/dev/direct/doc/ru/retargetinglists/get).
  • Network accessline 114
    Правила применения: [корректировки](https://yandex.ru/dev/direct/doc/ru/objects/bidmodifier),
  • Network accessline 115
    [сегменты на Поиске и в РСЯ](https://yandex.ru/support/direct/ru/impression-criteria/retargeting-lists).

plugins/yandex-direct/skills/yandex-direct/references/TEMPLATES.md

  • Network accessline 31
    Значения принадлежат ключевой фразе, а не объявлению. Они используются в основной ссылке, например `https://example.ru/catalog/{param1}/`. Для каждой фразы нужно установить собственное значение, до 255 символов. Пустой параметр оставляет пу
  • Network accessline 44
    #Высоковольтные измерители# — подбор https://example.com/catalog/{param1}/
  • Network accessline 45
    https://example.com/catalog/{param1}/
  • Network accessline 50
    | Ключевая фраза | Значение `param1` | Заголовок после подстановки | Страница перехода | |---|---|---|---| | вольтметр ВН-10 | vn-10 | вольтметр ВН-10 — подбор | `https://example.com/catalog/vn-10/` |
  • Network accessline 51
    |---|---|---|---| | вольтметр ВН-10 | vn-10 | вольтметр ВН-10 — подбор | `https://example.com/catalog/vn-10/` | | киловольтметр ВН-20 | vn-20 | киловольтметр ВН-20 — подбор | `https://example.com/catalog/vn-20/` |
  • Network accessline 52
    | вольтметр ВН-10 | vn-10 | вольтметр ВН-10 — подбор | `https://example.com/catalog/vn-10/` |
  • Network accessline 53
    | киловольтметр ВН-20 | vn-20 | киловольтметр ВН-20 — подбор | `https://example.com/catalog/vn-20/` |
  • Network accessline 61
    Механика и ограничения: [шаблоны объявлений](https://yandex.ru/support/direct/ru/features/ad-templates), [параметры фраз и объединение групп](https://yandex.ru/support/direct/ru/statistics/use-url-tags).
  • Network accessline 74
    https://example.ru/catalog/{param1}/?q=#okna#&utm_term={keyword}

plugins/yandex-direct/skills/yandex-direct/references/UI_MAP.md

  • Network accessline 15
    | Куда перейти | Формат ссылки | |---|---| | Группы выбранной кампании | `https://direct.yandex.ru/dna/grid/groups?ulogin=LOGIN&campaigns-ids=ID` |
  • Network accessline 16
    |---|---| | Группы выбранной кампании | `https://direct.yandex.ru/dna/grid/groups?ulogin=LOGIN&campaigns-ids=ID` | | Настройки выбранной кампании | `https://direct.yandex.ru/dna/campaigns-edit?ulogin=LOGIN&campaigns-ids=ID` |
  • Network accessline 17
    | Группы выбранной кампании | `https://direct.yandex.ru/dna/grid/groups?ulogin=LOGIN&campaigns-ids=ID` |
  • Network accessline 18
    | Настройки выбранной кампании | `https://direct.yandex.ru/dna/campaigns-edit?ulogin=LOGIN&campaigns-ids=ID` |
  • Network accessline 19
    | Кампании кабинета | `https://direct.yandex.ru/dna/grid/campaigns?ulogin=LOGIN&filter-reset=true&stat-preset=last30Days&dim-filter=CPC_AND_CPM&status-filter=ALL_EXCEPT_ARCHIVED` |
  • Network accessline 131
    | Минус-фразы | до 20 000 символов на кампанию; плюс до 3 наборов из библиотеки | | Приоритизация объявлений | «С лучшим сочетанием показателей» (по умолчанию) или «По фразе, наиболее близкой к запросу» | | Расширенный географический таргет
  • Network accessline 132
    | Приоритизация объявлений | «С лучшим сочетанием показателей» (по умолчанию) или «По фразе, наиболее близкой к запросу» | | Расширенный географический таргетинг — **убран** | **блока больше нет**: обновление геотаргетинга сняло настройку и
  • Network accessline 133
    | Расширенный географический таргетинг — **убран** | **блока больше нет**: обновление геотаргетинга сняло настройку из кампаний (, 01.09.2026) — «настройка расширенного географического таргетинга больше неактуальна и стала недоступна в камп

plugins/yandex-direct/skills/yandex-direct/references/ZOOMKIT.md

  • Network accessline 40
    По [официальной справке](https://zoomkit.ru/help), проверенной 8 сентября 2026 года,
  • Network accessline 42
    Для одного кабинета за 30 дней: `(50 + 2 × 1) × 30 = 1560 ₽`. С учётом добавляемых при пополнении 6% это около 1654 ₽ к оплате ([пункт 4.7 оферты](https://zoomkit.ru/docs/offer.pdf)).
  • Network accessline 43
    С учётом добавляемых при пополнении 6% это около 1654 ₽ к оплате ([пункт 4.7 оферты](https://zoomkit.ru/docs/offer.pdf)). Тариф проверки ссылок отдельно этим числом не подтверждён.
  • Network accessline 44
    ([пункт 4.7 оферты](https://zoomkit.ru/docs/offer.pdf)).
  • Network accessline 75
    Скилл находится в этом же репозитории: `plugins/zoomkit/skills/zoomkit/SKILL.md`. [Открытый исходный код и инструкция](https://github.com/artwist-polyakov/polyakov-claude-skills/tree/main/plugins/zoomkit/skills/zoomkit).
  • Network accessline 77
    [Открытый исходный код и инструкция](https://github.com/artwist-polyakov/polyakov-claude-skills/tree/main/plugins/zoomkit/skills/zoomkit).
  • Network accessline 97
    Передай контекст: рекламодатель, ID кампаний, задача, выбранные цели, ограничения бюджета/ставок и нужная частота. Подключение начни с понятного объяснения пользы и цены; регистрация доступна на [zoomkit.ru/register](https://zoomkit.ru/regi
  • Network accessline 98
    бюджета/ставок и нужная частота. Подключение начни с понятного объяснения пользы и цены; регистрация доступна на [zoomkit.ru/register](https://zoomkit.ru/register). Ключ сохраняется в `config/.env` самого ZoomKit и не передаётся в диалог.
  • Network accessline 99
    и цены; регистрация доступна на [zoomkit.ru/register](https://zoomkit.ru/register).

plugins/yandex-direct/skills/yandex-direct/references/ad_content.json

  • Network accessline 7
    "general_adv_rules": {       "title": "Общие положения. Требования к рекламно-информационным материалам",       "url": "https://yandex.ru/legal/general_adv_rules/",
  • Network accessline 8
    "title": "Общие положения. Требования к рекламно-информационным материалам",       "url": "https://yandex.ru/legal/general_adv_rules/",       "kind": "legal",
  • Network accessline 9
    "url": "https://yandex.ru/legal/general_adv_rules/",
  • Network accessline 16
    "direct_adv_rules": {       "title": "Требования к рекламным материалам",       "url": "https://yandex.ru/legal/direct_adv_rules/",
  • Network accessline 17
    "title": "Требования к рекламным материалам",       "url": "https://yandex.ru/legal/direct_adv_rules/",       "kind": "legal",
  • Network accessline 18
    "url": "https://yandex.ru/legal/direct_adv_rules/",
  • Network accessline 25
    "help_ad_rules": {       "title": "Как правильно оформить объявление",       "url": "https://yandex.ru/support/direct/ru/moderation/ad-rules",
  • Network accessline 26
    "title": "Как правильно оформить объявление",       "url": "https://yandex.ru/support/direct/ru/moderation/ad-rules",       "kind": "help",
  • Network accessline 27
    "url": "https://yandex.ru/support/direct/ru/moderation/ad-rules",
  • Network accessline 34
    "help_special_categories": {       "title": "Тематики продвижения",       "url": "https://yandex.ru/support/direct/ru/moderation/special-categories",
  • Network accessline 35
    "title": "Тематики продвижения",       "url": "https://yandex.ru/support/direct/ru/moderation/special-categories",       "kind": "help",
  • Network accessline 36
    "url": "https://yandex.ru/support/direct/ru/moderation/special-categories",
  • Network accessline 43
    "help_restricted_categories": {       "title": "Запрещенные товары, услуги, интернет-ресурсы и методы продвижения",       "url": "https://yandex.ru/support/direct/ru/moderation/restricted-categories",
  • Network accessline 44
    "title": "Запрещенные товары, услуги, интернет-ресурсы и методы продвижения",       "url": "https://yandex.ru/support/direct/ru/moderation/restricted-categories",       "kind": "help",
  • Network accessline 45
    "url": "https://yandex.ru/support/direct/ru/moderation/restricted-categories",
  • Network accessline 52
    "help_moderation_faq": {       "title": "Вопросы и ответы по модерации",       "url": "https://yandex.ru/support/direct/ru/troubleshooting/moderation",
  • Network accessline 53
    "title": "Вопросы и ответы по модерации",       "url": "https://yandex.ru/support/direct/ru/troubleshooting/moderation",       "kind": "help",
  • Network accessline 54
    "url": "https://yandex.ru/support/direct/ru/troubleshooting/moderation",
  • Network accessline 61
    "help_age_alerts": {       "title": "Предупреждения и возрастные ограничения в объявлениях",       "url": "https://yandex.ru/support/direct/ru/moderation/age-alerts",
  • Network accessline 62
    "title": "Предупреждения и возрастные ограничения в объявлениях",       "url": "https://yandex.ru/support/direct/ru/moderation/age-alerts",       "kind": "help",
  • Network accessline 63
    "url": "https://yandex.ru/support/direct/ru/moderation/age-alerts",
  • Network accessline 70
    "help_ad_labeling": {       "title": "Маркировка рекламы",       "url": "https://yandex.ru/support/direct/ru/technologies-and-services/ad-labelingl",
  • Network accessline 71
    "title": "Маркировка рекламы",       "url": "https://yandex.ru/support/direct/ru/technologies-and-services/ad-labelingl",       "kind": "help",
  • Network accessline 72
    "url": "https://yandex.ru/support/direct/ru/technologies-and-services/ad-labelingl",
  • Network accessline 79
    "adv_rules": {       "title": "Правила размещения объявлений на Яндексе",       "url": "https://yandex.ru/legal/adv_rules/",
  • Network accessline 80
    "title": "Правила размещения объявлений на Яндексе",       "url": "https://yandex.ru/legal/adv_rules/",       "kind": "legal",
  • Network accessline 81
    "url": "https://yandex.ru/legal/adv_rules/",
  • Network accessline 247
    "detector": "email_in_text",       "judged_by": "agent",       "note": "Та же строка источника, что и у номера телефона, и признак у неё куда точнее — но решает и он не всё: подстрока «login@example.ru» в адресе вида «https://login@example.
  • Network accessline 248
    "judged_by": "agent",       "note": "Та же строка источника, что и у номера телефона, и признак у неё куда точнее — но решает и он не всё: подстрока «login@example.ru» в адресе вида «https://login@example.ru/path» имеет ту же форму и почтой
  • Network accessline 249
    "note": "Та же строка источника, что и у номера телефона, и признак у неё куда точнее — но решает и он не всё: подстрока «login@example.ru» в адресе вида «https://login@example.ru/path» имеет ту же форму и почтой не является. Изъятие на это
  • Network accessline 671
    "documents_required": {       "count": 83,       "url": "https://yandex.ru/support/direct/ru/moderation/special-categories",
  • Network accessline 672
    "count": 83,       "url": "https://yandex.ru/support/direct/ru/moderation/special-categories",       "note": "Столько отдельных страниц тематик перечислял каталог на дату сверки; ссылок в нём вдвое больше — он повторяет перечень по темам и 
  • Network accessline 673
    "url": "https://yandex.ru/support/direct/ru/moderation/special-categories",
  • Network accessline 677
    "restricted": {       "count": 33,       "url": "https://yandex.ru/support/direct/ru/moderation/restricted-categories",
  • Network accessline 678
    "count": 33,       "url": "https://yandex.ru/support/direct/ru/moderation/restricted-categories",       "note": "Столько пунктов верхнего уровня перечисляла страница на ту же дату; у части пунктов есть вложенные уточнения, и они сюда не пос
  • Network accessline 679
    "url": "https://yandex.ru/support/direct/ru/moderation/restricted-categories",

plugins/yandex-direct/skills/yandex-direct/references/api_map.json

  • Network accessline 5
    {       "title": "Справочник API v5 (полная выгрузка)",       "url": "https://yandex.ru/dev/direct/doc/ru/llms-full.txt"
  • Network accessline 6
    "title": "Справочник API v5 (полная выгрузка)",       "url": "https://yandex.ru/dev/direct/doc/ru/llms-full.txt"     },
  • Network accessline 7
    "url": "https://yandex.ru/dev/direct/doc/ru/llms-full.txt"
  • Network accessline 9
    {       "title": "О справочнике",       "url": "https://yandex.ru/dev/direct/doc/ru/concepts/about"
  • Network accessline 10
    "title": "О справочнике",       "url": "https://yandex.ru/dev/direct/doc/ru/concepts/about"     },
  • Network accessline 11
    "url": "https://yandex.ru/dev/direct/doc/ru/concepts/about"
  • Network accessline 13
    {       "title": "Ограничения, баллы",       "url": "https://yandex.ru/dev/direct/doc/ru/concepts/units"
  • Network accessline 14
    "title": "Ограничения, баллы",       "url": "https://yandex.ru/dev/direct/doc/ru/concepts/units"     },
  • Network accessline 15
    "url": "https://yandex.ru/dev/direct/doc/ru/concepts/units"
  • Network accessline 17
    {       "title": "История изменений",       "url": "https://yandex.ru/dev/direct/doc/ru/changelog"
  • Network accessline 18
    "title": "История изменений",       "url": "https://yandex.ru/dev/direct/doc/ru/changelog"     },
  • Network accessline 19
    "url": "https://yandex.ru/dev/direct/doc/ru/changelog"
  • Network accessline 21
    {       "title": "Методы API версии 4 и Live 4",       "url": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/_AllMethods"
  • Network accessline 22
    "title": "Методы API версии 4 и Live 4",       "url": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/_AllMethods"     }
  • Network accessline 23
    "url": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/_AllMethods"
  • Network accessline 30
    },   "endpoints": {     "v501_json": "https://api.direct.yandex.com/json/v501/{service}",
  • Network accessline 31
    "endpoints": {     "v501_json": "https://api.direct.yandex.com/json/v501/{service}",     "v501_soap": "https://api.direct.yandex.com/v501/{service}",
  • Network accessline 32
    "v501_json": "https://api.direct.yandex.com/json/v501/{service}",
  • Network accessline 33
    "v501_soap": "https://api.direct.yandex.com/v501/{service}",
  • Network accessline 34
    "v501_wsdl": "https://api.direct.yandex.com/v501/{service}?wsdl",
  • Network accessline 35
    "v5_json": "https://api.direct.yandex.com/json/v5/{service}",
  • Network accessline 36
    "v4_json": "https://api.direct.yandex.ru/v4/json/",
  • Network accessline 37
    "live_v4_json": "https://api.direct.yandex.ru/live/v4/json/",
  • Network accessline 38
    "reports_json": "https://api.direct.yandex.com/json/v501/reports",
  • Network accessline 39
    "reports_xml": "https://api.direct.yandex.com/v501/reports",
  • Network accessline 40
    "reports_xsd": "https://api.direct.yandex.com/v501/reports.xsd",
  • Network accessline 41
    "sandbox_json": "https://api-sandbox.direct.yandex.com/json/v5/{service}",
  • Network accessline 42
    "sandbox_soap": "https://api-sandbox.direct.yandex.com/v5/{service}",
  • Network accessline 43
    "sandbox_wsdl": "https://api-sandbox.direct.yandex.com/v5/{service}?wsdl",
  • Network accessline 44
    "sandbox_v4_json": "https://api-sandbox.direct.yandex.ru/v4/json/"
  • Network accessline 47
    "documented": [       {         "url": "https://api-sandbox.direct.yandex.com/json/v5/{service}",
  • Network accessline 48
    {         "url": "https://api-sandbox.direct.yandex.com/json/v5/{service}",         "source": "https://yandex.ru/dev/direct/doc/en/concepts/sandbox",
  • Network accessline 49
    "url": "https://api-sandbox.direct.yandex.com/json/v5/{service}",
  • Network accessline 50
    "source": "https://yandex.ru/dev/direct/doc/en/concepts/sandbox",
  • Network accessline 52
    },       {         "url": "https://api-sandbox.direct.yandex.com/v5/{service}",
  • Network accessline 53
    {         "url": "https://api-sandbox.direct.yandex.com/v5/{service}",         "source": "https://yandex.ru/dev/direct/doc/en/concepts/sandbox",
  • Network accessline 54
    "url": "https://api-sandbox.direct.yandex.com/v5/{service}",
  • Network accessline 55
    "source": "https://yandex.ru/dev/direct/doc/en/concepts/sandbox",
  • Network accessline 57
    },       {         "url": "https://api-sandbox.direct.yandex.ru/v4/json/",
  • Network accessline 58
    {         "url": "https://api-sandbox.direct.yandex.ru/v4/json/",         "source": "https://yandex.ru/dev/direct/doc/dg-v4/ru/concepts/quick-start",
  • Network accessline 59
    "url": "https://api-sandbox.direct.yandex.ru/v4/json/",
  • Network accessline 60
    "source": "https://yandex.ru/dev/direct/doc/dg-v4/ru/concepts/quick-start",
  • Network accessline 64
    "observed_only": [       {         "url": "https://api-sandbox.direct.yandex.com/json/v501/{service}"
  • Network accessline 65
    {         "url": "https://api-sandbox.direct.yandex.com/json/v501/{service}"       },
  • Network accessline 66
    "url": "https://api-sandbox.direct.yandex.com/json/v501/{service}"
  • Network accessline 67
    },       {         "url": "https://api-sandbox.direct.yandex.ru/json/v5/{service}"
  • Network accessline 68
    {         "url": "https://api-sandbox.direct.yandex.ru/json/v5/{service}"       },
  • Network accessline 69
    "url": "https://api-sandbox.direct.yandex.ru/json/v5/{service}"
  • Network accessline 70
    },       {         "url": "https://api-sandbox.direct.yandex.ru/json/v501/{service}"
  • Network accessline 71
    {         "url": "https://api-sandbox.direct.yandex.ru/json/v501/{service}"       },
  • Network accessline 72
    "url": "https://api-sandbox.direct.yandex.ru/json/v501/{service}"
  • Network accessline 73
    },       {         "url": "https://api-sandbox.direct.yandex.com/v4/json/"
  • Network accessline 74
    {         "url": "https://api-sandbox.direct.yandex.com/v4/json/"       },
  • Network accessline 75
    "url": "https://api-sandbox.direct.yandex.com/v4/json/"
  • Network accessline 76
    },       {         "url": "https://api-sandbox.direct.yandex.com/live/v4/json/"
  • Network accessline 77
    {         "url": "https://api-sandbox.direct.yandex.com/live/v4/json/"       },
  • Network accessline 78
    "url": "https://api-sandbox.direct.yandex.com/live/v4/json/"
  • Network accessline 79
    },       {         "url": "https://api-sandbox.direct.yandex.ru/live/v4/json/"
  • Network accessline 80
    {         "url": "https://api-sandbox.direct.yandex.ru/live/v4/json/"       }
  • Network accessline 81
    "url": "https://api-sandbox.direct.yandex.ru/live/v4/json/"
  • Network accessline 82
    }     ],     "ru_page_v4": "https://yandex.ru/dev/direct/doc/dg-v4/ru/concepts/sandbox — русская страница песочницы есть, но адреса не приводит",
  • Network accessline 83
    ],     "ru_page_v4": "https://yandex.ru/dev/direct/doc/dg-v4/ru/concepts/sandbox — русская страница песочницы есть, но адреса не приводит",     "note": "Скилл использует настоящий API v501. Адреса песочницы сохранены как справочные; возможн
  • Network accessline 84
    "ru_page_v4": "https://yandex.ru/dev/direct/doc/dg-v4/ru/concepts/sandbox — русская страница песочницы есть, но адреса не приводит",
  • Network accessline 97
    "purpose": "Сервис предназначен для выполнения операций с расширениями к объявлениям. В настоящее время доступен один тип расширения — уточнение.",       "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/adexte
  • Network accessline 98
    "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/adextensions/adextensions",       "v501_note": null,
  • Network accessline 99
    "doc": "https://yandex.ru/dev/direct/doc/ru/adextensions/adextensions",
  • Network accessline 112
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/adextensions/add"
  • Network accessline 113
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/adextensions/add"         },
  • Network accessline 114
    "doc": "https://yandex.ru/dev/direct/doc/ru/adextensions/add"
  • Network accessline 126
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/adextensions/delete"
  • Network accessline 127
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/adextensions/delete"         },
  • Network accessline 128
    "doc": "https://yandex.ru/dev/direct/doc/ru/adextensions/delete"
  • Network accessline 140
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/adextensions/get"
  • Network accessline 141
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/adextensions/get"         }
  • Network accessline 142
    "doc": "https://yandex.ru/dev/direct/doc/ru/adextensions/get"
  • Network accessline 149
    "purpose": "Сервис предназначен для выполнения операций с группами объявлений.",       "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/adgroups/adgroups",
  • Network accessline 150
    "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/adgroups/adgroups",       "v501_note": "Для работы с группой в Единой перфоманс-кампании",
  • Network accessline 151
    "doc": "https://yandex.ru/dev/direct/doc/ru/adgroups/adgroups",
  • Network accessline 164
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/adgroups/add"
  • Network accessline 165
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/adgroups/add"         },
  • Network accessline 166
    "doc": "https://yandex.ru/dev/direct/doc/ru/adgroups/add"
  • Network accessline 178
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/adgroups/delete"
  • Network accessline 179
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/adgroups/delete"         },
  • Network accessline 180
    "doc": "https://yandex.ru/dev/direct/doc/ru/adgroups/delete"
  • Network accessline 192
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/adgroups/get"
  • Network accessline 193
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/adgroups/get"         },
  • Network accessline 194
    "doc": "https://yandex.ru/dev/direct/doc/ru/adgroups/get"
  • Network accessline 206
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/adgroups/update"
  • Network accessline 207
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/adgroups/update"         }
  • Network accessline 208
    "doc": "https://yandex.ru/dev/direct/doc/ru/adgroups/update"
  • Network accessline 215
    "purpose": "Сервис предназначен для выполнения операций с изображениями.",       "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/adimages/adimages",
  • Network accessline 216
    "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/adimages/adimages",       "v501_note": null,
  • Network accessline 217
    "doc": "https://yandex.ru/dev/direct/doc/ru/adimages/adimages",
  • Network accessline 230
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/adimages/add"
  • Network accessline 231
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/adimages/add"         },
  • Network accessline 232
    "doc": "https://yandex.ru/dev/direct/doc/ru/adimages/add"
  • Network accessline 244
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/adimages/delete"
  • Network accessline 245
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/adimages/delete"         },
  • Network accessline 246
    "doc": "https://yandex.ru/dev/direct/doc/ru/adimages/delete"
  • Network accessline 258
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/adimages/get"
  • Network accessline 259
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/adimages/get"         }
  • Network accessline 260
    "doc": "https://yandex.ru/dev/direct/doc/ru/adimages/get"
  • Network accessline 267
    "purpose": "Сервис предназначен для выполнения операций с объявлениями.",       "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/ads/ads",
  • Network accessline 268
    "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/ads/ads",       "v501_note": "Для работы с товарными объявлениями",
  • Network accessline 269
    "doc": "https://yandex.ru/dev/direct/doc/ru/ads/ads",
  • Network accessline 282
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/ads/add"
  • Network accessline 283
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/ads/add"         },
  • Network accessline 284
    "doc": "https://yandex.ru/dev/direct/doc/ru/ads/add"
  • Network accessline 296
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/ads/archive"
  • Network accessline 297
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/ads/archive"         },
  • Network accessline 298
    "doc": "https://yandex.ru/dev/direct/doc/ru/ads/archive"
  • Network accessline 310
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/ads/delete"
  • Network accessline 311
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/ads/delete"         },
  • Network accessline 312
    "doc": "https://yandex.ru/dev/direct/doc/ru/ads/delete"
  • Network accessline 324
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/ads/get"
  • Network accessline 325
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/ads/get"         },
  • Network accessline 326
    "doc": "https://yandex.ru/dev/direct/doc/ru/ads/get"
  • Network accessline 338
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/ads/moderate"
  • Network accessline 339
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/ads/moderate"         },
  • Network accessline 340
    "doc": "https://yandex.ru/dev/direct/doc/ru/ads/moderate"
  • Network accessline 352
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/ads/resume"
  • Network accessline 353
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/ads/resume"         },
  • Network accessline 354
    "doc": "https://yandex.ru/dev/direct/doc/ru/ads/resume"
  • Network accessline 366
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/ads/suspend"
  • Network accessline 367
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/ads/suspend"         },
  • Network accessline 368
    "doc": "https://yandex.ru/dev/direct/doc/ru/ads/suspend"
  • Network accessline 380
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/ads/unarchive"
  • Network accessline 381
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/ads/unarchive"         },
  • Network accessline 382
    "doc": "https://yandex.ru/dev/direct/doc/ru/ads/unarchive"
  • Network accessline 394
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/ads/update"
  • Network accessline 395
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/ads/update"         }
  • Network accessline 396
    "doc": "https://yandex.ru/dev/direct/doc/ru/ads/update"
  • Network accessline 403
    "purpose": "Сервис предназначен для выполнения операций с видео.",       "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/advideos/advideos",
  • Network accessline 404
    "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/advideos/advideos",       "v501_note": null,
  • Network accessline 405
    "doc": "https://yandex.ru/dev/direct/doc/ru/advideos/advideos",
  • Network accessline 414
    "v501_note": null,           "units": null,           "doc": "https://yandex.ru/dev/direct/doc/ru/advideos/add"
  • Network accessline 415
    "units": null,           "doc": "https://yandex.ru/dev/direct/doc/ru/advideos/add"         },
  • Network accessline 416
    "doc": "https://yandex.ru/dev/direct/doc/ru/advideos/add"
  • Network accessline 424
    "v501_note": null,           "units": null,           "doc": "https://yandex.ru/dev/direct/doc/ru/advideos/get"
  • Network accessline 425
    "units": null,           "doc": "https://yandex.ru/dev/direct/doc/ru/advideos/get"         }
  • Network accessline 426
    "doc": "https://yandex.ru/dev/direct/doc/ru/advideos/get"
  • Network accessline 433
    "purpose": "Сервис предназначен для агентств и позволяет управлять клиентами агентства.",       "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/agencyclients/agencyclients",
  • Network accessline 434
    "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/agencyclients/agencyclients",       "v501_note": null,
  • Network accessline 435
    "doc": "https://yandex.ru/dev/direct/doc/ru/agencyclients/agencyclients",
  • Network accessline 448
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/agencyclients/add"
  • Network accessline 449
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/agencyclients/add"         },
  • Network accessline 450
    "doc": "https://yandex.ru/dev/direct/doc/ru/agencyclients/add"
  • Network accessline 458
    "v501_note": null,           "units": null,           "doc": "https://yandex.ru/dev/direct/doc/ru/agencyclients/addPassportOrganization"
  • Network accessline 459
    "units": null,           "doc": "https://yandex.ru/dev/direct/doc/ru/agencyclients/addPassportOrganization"         },
  • Network accessline 460
    "doc": "https://yandex.ru/dev/direct/doc/ru/agencyclients/addPassportOrganization"
  • Network accessline 468
    "v501_note": null,           "units": null,           "doc": "https://yandex.ru/dev/direct/doc/ru/agencyclients/addPassportOrganizationMember"
  • Network accessline 469
    "units": null,           "doc": "https://yandex.ru/dev/direct/doc/ru/agencyclients/addPassportOrganizationMember"         },
  • Network accessline 470
    "doc": "https://yandex.ru/dev/direct/doc/ru/agencyclients/addPassportOrganizationMember"
  • Network accessline 482
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/agencyclients/get"
  • Network accessline 483
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/agencyclients/get"         },
  • Network accessline 484
    "doc": "https://yandex.ru/dev/direct/doc/ru/agencyclients/get"
  • Network accessline 496
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/agencyclients/update"
  • Network accessline 497
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/agencyclients/update"         }
  • Network accessline 498
    "doc": "https://yandex.ru/dev/direct/doc/ru/agencyclients/update"
  • Network accessline 505
    "purpose": "Сервис предназначен для выполнения операций с условиями нацеливания на аудиторию.",       "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/audiencetargets/audiencetargets",
  • Network accessline 506
    "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/audiencetargets/audiencetargets",       "v501_note": null,
  • Network accessline 507
    "doc": "https://yandex.ru/dev/direct/doc/ru/audiencetargets/audiencetargets",
  • Network accessline 520
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/audiencetargets/add"
  • Network accessline 521
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/audiencetargets/add"         },
  • Network accessline 522
    "doc": "https://yandex.ru/dev/direct/doc/ru/audiencetargets/add"
  • Network accessline 534
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/audiencetargets/delete"
  • Network accessline 535
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/audiencetargets/delete"         },
  • Network accessline 536
    "doc": "https://yandex.ru/dev/direct/doc/ru/audiencetargets/delete"
  • Network accessline 548
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/audiencetargets/get"
  • Network accessline 549
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/audiencetargets/get"         },
  • Network accessline 550
    "doc": "https://yandex.ru/dev/direct/doc/ru/audiencetargets/get"
  • Network accessline 562
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/audiencetargets/resume"
  • Network accessline 563
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/audiencetargets/resume"         },
  • Network accessline 564
    "doc": "https://yandex.ru/dev/direct/doc/ru/audiencetargets/resume"
  • Network accessline 576
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/audiencetargets/setBids"
  • Network accessline 577
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/audiencetargets/setBids"         },
  • Network accessline 578
    "doc": "https://yandex.ru/dev/direct/doc/ru/audiencetargets/setBids"
  • Network accessline 590
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/audiencetargets/suspend"
  • Network accessline 591
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/audiencetargets/suspend"         }
  • Network accessline 592
    "doc": "https://yandex.ru/dev/direct/doc/ru/audiencetargets/suspend"
  • Network accessline 599
    "purpose": "Сервис предназначен для назначения ставок ключевым фразам и автотаргетингам.",       "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/bids/bids",
  • Network accessline 600
    "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/bids/bids",       "v501_note": null,
  • Network accessline 601
    "doc": "https://yandex.ru/dev/direct/doc/ru/bids/bids",
  • Network accessline 614
    "per_object_note": "3 балла за каждые 2000 фраз"           },           "doc": "https://yandex.ru/dev/direct/doc/ru/bids/get"
  • Network accessline 615
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/bids/get"         },
  • Network accessline 616
    "doc": "https://yandex.ru/dev/direct/doc/ru/bids/get"
  • Network accessline 628
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/bids/set"
  • Network accessline 629
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/bids/set"         },
  • Network accessline 630
    "doc": "https://yandex.ru/dev/direct/doc/ru/bids/set"
  • Network accessline 642
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/bids/setAuto"
  • Network accessline 643
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/bids/setAuto"         }
  • Network accessline 644
    "doc": "https://yandex.ru/dev/direct/doc/ru/bids/setAuto"
  • Network accessline 651
    "purpose": "Сервис позволяет получить профили организаций бизнеса.",       "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/businesses/businesses",
  • Network accessline 652
    "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/businesses/businesses",       "v501_note": null,
  • Network accessline 653
    "doc": "https://yandex.ru/dev/direct/doc/ru/businesses/businesses",
  • Network accessline 666
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/businesses/get"
  • Network accessline 667
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/businesses/get"         }
  • Network accessline 668
    "doc": "https://yandex.ru/dev/direct/doc/ru/businesses/get"
  • Network accessline 675
    "purpose": "Сервис предназначен для управления корректировками ставок.",       "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/bidmodifiers/bidmodifiers",
  • Network accessline 676
    "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/bidmodifiers/bidmodifiers",       "v501_note": null,
  • Network accessline 677
    "doc": "https://yandex.ru/dev/direct/doc/ru/bidmodifiers/bidmodifiers",
  • Network accessline 690
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/bidmodifiers/add"
  • Network accessline 691
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/bidmodifiers/add"         },
  • Network accessline 692
    "doc": "https://yandex.ru/dev/direct/doc/ru/bidmodifiers/add"
  • Network accessline 704
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/bidmodifiers/delete"
  • Network accessline 705
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/bidmodifiers/delete"         },
  • Network accessline 706
    "doc": "https://yandex.ru/dev/direct/doc/ru/bidmodifiers/delete"
  • Network accessline 718
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/bidmodifiers/get"
  • Network accessline 719
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/bidmodifiers/get"         },
  • Network accessline 720
    "doc": "https://yandex.ru/dev/direct/doc/ru/bidmodifiers/get"
  • Network accessline 732
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/bidmodifiers/set"
  • Network accessline 733
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/bidmodifiers/set"         }
  • Network accessline 734
    "doc": "https://yandex.ru/dev/direct/doc/ru/bidmodifiers/set"
  • Network accessline 741
    "purpose": "Сервис предназначен для выполнения операций с кампаниями.",       "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/campaigns",
  • Network accessline 742
    "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/campaigns",       "v501_note": "Для работы с Единой перфоманс-кампанией",
  • Network accessline 743
    "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/campaigns",
  • Network accessline 756
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/add"
  • Network accessline 757
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/add"         },
  • Network accessline 758
    "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/add"
  • Network accessline 770
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/archive"
  • Network accessline 771
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/archive"         },
  • Network accessline 772
    "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/archive"
  • Network accessline 784
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/delete"
  • Network accessline 785
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/delete"         },
  • Network accessline 786
    "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/delete"
  • Network accessline 798
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/get"
  • Network accessline 799
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/get"         },
  • Network accessline 800
    "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/get"
  • Network accessline 812
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/resume"
  • Network accessline 813
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/resume"         },
  • Network accessline 814
    "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/resume"
  • Network accessline 826
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/suspend"
  • Network accessline 827
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/suspend"         },
  • Network accessline 828
    "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/suspend"
  • Network accessline 840
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/unarchive"
  • Network accessline 841
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/unarchive"         },
  • Network accessline 842
    "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/unarchive"
  • Network accessline 854
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/update"
  • Network accessline 855
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/update"         }
  • Network accessline 856
    "doc": "https://yandex.ru/dev/direct/doc/ru/campaigns/update"
  • Network accessline 863
    "purpose": "Сервис предназначен для проверки наличия изменений.",       "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/changes/changes",
  • Network accessline 864
    "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/changes/changes",       "v501_note": null,
  • Network accessline 865
    "doc": "https://yandex.ru/dev/direct/doc/ru/changes/changes",
  • Network accessline 878
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/changes/checkDictionaries"
  • Network accessline 879
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/changes/checkDictionaries"         },
  • Network accessline 880
    "doc": "https://yandex.ru/dev/direct/doc/ru/changes/checkDictionaries"
  • Network accessline 892
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/changes/checkCampaigns"
  • Network accessline 893
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/changes/checkCampaigns"         },
  • Network accessline 894
    "doc": "https://yandex.ru/dev/direct/doc/ru/changes/checkCampaigns"
  • Network accessline 906
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/changes/check"
  • Network accessline 907
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/changes/check"         }
  • Network accessline 908
    "doc": "https://yandex.ru/dev/direct/doc/ru/changes/check"
  • Network accessline 915
    "purpose": "Сервис предназначен для управления параметрами рекламодателя и настройками пользователя — представителя рекламодателя, а также для получения параметров агентства и настроек пользователя — представителя агентства.",       "docume
  • Network accessline 916
    "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/clients/clients",       "v501_note": null,
  • Network accessline 917
    "doc": "https://yandex.ru/dev/direct/doc/ru/clients/clients",
  • Network accessline 930
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/clients/get"
  • Network accessline 931
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/clients/get"         },
  • Network accessline 932
    "doc": "https://yandex.ru/dev/direct/doc/ru/clients/get"
  • Network accessline 944
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/clients/update"
  • Network accessline 945
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/clients/update"         }
  • Network accessline 946
    "doc": "https://yandex.ru/dev/direct/doc/ru/clients/update"
  • Network accessline 953
    "purpose": "Сервис предназначен для выполнения операций с креативами.",       "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/creatives/creatives",
  • Network accessline 954
    "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/creatives/creatives",       "v501_note": null,
  • Network accessline 955
    "doc": "https://yandex.ru/dev/direct/doc/ru/creatives/creatives",
  • Network accessline 964
    "v501_note": null,           "units": null,           "doc": "https://yandex.ru/dev/direct/doc/ru/creatives/add"
  • Network accessline 965
    "units": null,           "doc": "https://yandex.ru/dev/direct/doc/ru/creatives/add"         },
  • Network accessline 966
    "doc": "https://yandex.ru/dev/direct/doc/ru/creatives/add"
  • Network accessline 978
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/creatives/get"
  • Network accessline 979
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/creatives/get"         }
  • Network accessline 980
    "doc": "https://yandex.ru/dev/direct/doc/ru/creatives/get"
  • Network accessline 987
    "purpose": "Сервис предназначен для получения справочных данных: регионов, часовых поясов, курсов валют, станций метрополитена, ограничений на значения параметров и др.",       "documented_version": "v501",       "doc": "https://yandex.ru/d
  • Network accessline 988
    "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/dictionaries/dictionaries",       "v501_note": null,
  • Network accessline 989
    "doc": "https://yandex.ru/dev/direct/doc/ru/dictionaries/dictionaries",
  • Network accessline 1002
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/dictionaries/get"
  • Network accessline 1003
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/dictionaries/get"         },
  • Network accessline 1004
    "doc": "https://yandex.ru/dev/direct/doc/ru/dictionaries/get"
  • Network accessline 1012
    "v501_note": null,           "units": null,           "doc": "https://yandex.ru/dev/direct/doc/ru/dictionaries/getGeoRegions"
  • Network accessline 1013
    "units": null,           "doc": "https://yandex.ru/dev/direct/doc/ru/dictionaries/getGeoRegions"         }
  • Network accessline 1014
    "doc": "https://yandex.ru/dev/direct/doc/ru/dictionaries/getGeoRegions"
  • Network accessline 1021
    "purpose": "Сервис предназначен для выполнения операций с фидами.",       "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/feeds/feeds",
  • Network accessline 1022
    "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/feeds/feeds",       "v501_note": null,
  • Network accessline 1023
    "doc": "https://yandex.ru/dev/direct/doc/ru/feeds/feeds",
  • Network accessline 1036
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/feeds/add"
  • Network accessline 1037
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/feeds/add"         },
  • Network accessline 1038
    "doc": "https://yandex.ru/dev/direct/doc/ru/feeds/add"
  • Network accessline 1050
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/feeds/delete"
  • Network accessline 1051
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/feeds/delete"         },
  • Network accessline 1052
    "doc": "https://yandex.ru/dev/direct/doc/ru/feeds/delete"
  • Network accessline 1064
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/feeds/get"
  • Network accessline 1065
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/feeds/get"         },
  • Network accessline 1066
    "doc": "https://yandex.ru/dev/direct/doc/ru/feeds/get"
  • Network accessline 1078
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/feeds/update"
  • Network accessline 1079
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/feeds/update"         }
  • Network accessline 1080
    "doc": "https://yandex.ru/dev/direct/doc/ru/feeds/update"
  • Network accessline 1087
    "purpose": "Сервис предназначен для назначения ставок ключевым фразам и автотаргетингам и для получения данных, полезных при назначении ставок.",       "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/keywordb
  • Network accessline 1088
    "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/keywordbids/keywordbids",       "v501_note": null,
  • Network accessline 1089
    "doc": "https://yandex.ru/dev/direct/doc/ru/keywordbids/keywordbids",
  • Network accessline 1102
    "per_object_note": "3 балла за каждые 2000 фраз"           },           "doc": "https://yandex.ru/dev/direct/doc/ru/keywordbids/get"
  • Network accessline 1103
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/keywordbids/get"         },
  • Network accessline 1104
    "doc": "https://yandex.ru/dev/direct/doc/ru/keywordbids/get"
  • Network accessline 1116
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/keywordbids/set"
  • Network accessline 1117
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/keywordbids/set"         },
  • Network accessline 1118
    "doc": "https://yandex.ru/dev/direct/doc/ru/keywordbids/set"
  • Network accessline 1130
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/keywordbids/setAuto"
  • Network accessline 1131
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/keywordbids/setAuto"         }
  • Network accessline 1132
    "doc": "https://yandex.ru/dev/direct/doc/ru/keywordbids/setAuto"
  • Network accessline 1139
    "purpose": "Сервис предназначен для выполнения операций с ключевыми фразами и автотаргетингами.",       "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/keywords/keywords",
  • Network accessline 1140
    "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/keywords/keywords",       "v501_note": null,
  • Network accessline 1141
    "doc": "https://yandex.ru/dev/direct/doc/ru/keywords/keywords",
  • Network accessline 1154
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/keywords/add"
  • Network accessline 1155
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/keywords/add"         },
  • Network accessline 1156
    "doc": "https://yandex.ru/dev/direct/doc/ru/keywords/add"
  • Network accessline 1168
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/keywords/delete"
  • Network accessline 1169
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/keywords/delete"         },
  • Network accessline 1170
    "doc": "https://yandex.ru/dev/direct/doc/ru/keywords/delete"
  • Network accessline 1182
    "per_object_note": "3 балла за каждые 2000 фраз, если запрошен хотя бы один из параметров `Productivity`, `StatisticsSearch`, `StatisticsNetwork`. 1 балл за каждые 2000 фраз — в противном случае"           },           "doc": "https://yande
  • Network accessline 1183
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/keywords/get"         },
  • Network accessline 1184
    "doc": "https://yandex.ru/dev/direct/doc/ru/keywords/get"
  • Network accessline 1196
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/keywords/resume"
  • Network accessline 1197
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/keywords/resume"         },
  • Network accessline 1198
    "doc": "https://yandex.ru/dev/direct/doc/ru/keywords/resume"
  • Network accessline 1210
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/keywords/suspend"
  • Network accessline 1211
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/keywords/suspend"         },
  • Network accessline 1212
    "doc": "https://yandex.ru/dev/direct/doc/ru/keywords/suspend"
  • Network accessline 1224
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/keywords/update"
  • Network accessline 1225
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/keywords/update"         }
  • Network accessline 1226
    "doc": "https://yandex.ru/dev/direct/doc/ru/keywords/update"
  • Network accessline 1233
    "purpose": "Сервис предназначен для предварительной обработки и исследования ключевых фраз.",       "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/keywordsresearch/keywordsresearch",
  • Network accessline 1234
    "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/keywordsresearch/keywordsresearch",       "v501_note": null,
  • Network accessline 1235
    "doc": "https://yandex.ru/dev/direct/doc/ru/keywordsresearch/keywordsresearch",
  • Network accessline 1248
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/keywordsresearch/deduplicate"
  • Network accessline 1249
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/keywordsresearch/deduplicate"         },
  • Network accessline 1250
    "doc": "https://yandex.ru/dev/direct/doc/ru/keywordsresearch/deduplicate"
  • Network accessline 1262
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/keywordsresearch/hasSearchVolume"
  • Network accessline 1263
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/keywordsresearch/hasSearchVolume"         }
  • Network accessline 1264
    "doc": "https://yandex.ru/dev/direct/doc/ru/keywordsresearch/hasSearchVolume"
  • Network accessline 1271
    "purpose": "Сервис позволяет получить данные, введенные пользователями в формы на Турбо-страницах.",       "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/leads/leads",
  • Network accessline 1272
    "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/leads/leads",       "v501_note": null,
  • Network accessline 1273
    "doc": "https://yandex.ru/dev/direct/doc/ru/leads/leads",
  • Network accessline 1286
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/leads/get"
  • Network accessline 1287
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/leads/get"         }
  • Network accessline 1288
    "doc": "https://yandex.ru/dev/direct/doc/ru/leads/get"
  • Network accessline 1295
    "purpose": "Сервис предназначен для выполнения операций с наборами минус-фраз.",       "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/negativekeywordsharedsets/negativekeywordsharedsets",
  • Network accessline 1296
    "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/negativekeywordsharedsets/negativekeywordsharedsets",       "v501_note": null,
  • Network accessline 1297
    "doc": "https://yandex.ru/dev/direct/doc/ru/negativekeywordsharedsets/negativekeywordsharedsets",
  • Network accessline 1310
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/negativekeywordsharedsets/add"
  • Network accessline 1311
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/negativekeywordsharedsets/add"         },
  • Network accessline 1312
    "doc": "https://yandex.ru/dev/direct/doc/ru/negativekeywordsharedsets/add"
  • Network accessline 1324
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/negativekeywordsharedsets/delete"
  • Network accessline 1325
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/negativekeywordsharedsets/delete"         },
  • Network accessline 1326
    "doc": "https://yandex.ru/dev/direct/doc/ru/negativekeywordsharedsets/delete"
  • Network accessline 1338
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/negativekeywordsharedsets/get"
  • Network accessline 1339
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/negativekeywordsharedsets/get"         },
  • Network accessline 1340
    "doc": "https://yandex.ru/dev/direct/doc/ru/negativekeywordsharedsets/get"
  • Network accessline 1352
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/negativekeywordsharedsets/update"
  • Network accessline 1353
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/negativekeywordsharedsets/update"         }
  • Network accessline 1354
    "doc": "https://yandex.ru/dev/direct/doc/ru/negativekeywordsharedsets/update"
  • Network accessline 1361
    "purpose": "Сервис предназначен для выполнения операций с условиями ретаргетинга и подбора аудитории.",       "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/retargetinglists/retargetinglists",
  • Network accessline 1362
    "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/retargetinglists/retargetinglists",       "v501_note": null,
  • Network accessline 1363
    "doc": "https://yandex.ru/dev/direct/doc/ru/retargetinglists/retargetinglists",
  • Network accessline 1376
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/retargetinglists/add"
  • Network accessline 1377
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/retargetinglists/add"         },
  • Network accessline 1378
    "doc": "https://yandex.ru/dev/direct/doc/ru/retargetinglists/add"
  • Network accessline 1390
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/retargetinglists/delete"
  • Network accessline 1391
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/retargetinglists/delete"         },
  • Network accessline 1392
    "doc": "https://yandex.ru/dev/direct/doc/ru/retargetinglists/delete"
  • Network accessline 1404
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/retargetinglists/get"
  • Network accessline 1405
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/retargetinglists/get"         },
  • Network accessline 1406
    "doc": "https://yandex.ru/dev/direct/doc/ru/retargetinglists/get"
  • Network accessline 1418
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/retargetinglists/update"
  • Network accessline 1419
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/retargetinglists/update"         }
  • Network accessline 1420
    "doc": "https://yandex.ru/dev/direct/doc/ru/retargetinglists/update"
  • Network accessline 1427
    "purpose": "Сервис предназначен для выполнения операций с наборами быстрых ссылок.",       "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/sitelinks/sitelinks",
  • Network accessline 1428
    "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/sitelinks/sitelinks",       "v501_note": null,
  • Network accessline 1429
    "doc": "https://yandex.ru/dev/direct/doc/ru/sitelinks/sitelinks",
  • Network accessline 1442
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/sitelinks/add"
  • Network accessline 1443
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/sitelinks/add"         },
  • Network accessline 1444
    "doc": "https://yandex.ru/dev/direct/doc/ru/sitelinks/add"
  • Network accessline 1456
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/sitelinks/delete"
  • Network accessline 1457
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/sitelinks/delete"         },
  • Network accessline 1458
    "doc": "https://yandex.ru/dev/direct/doc/ru/sitelinks/delete"
  • Network accessline 1470
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/sitelinks/get"
  • Network accessline 1471
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/sitelinks/get"         }
  • Network accessline 1472
    "doc": "https://yandex.ru/dev/direct/doc/ru/sitelinks/get"
  • Network accessline 1479
    "purpose": "Сервис предназначен для выполнения операций с пакетными стратегиями.",       "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/strategies/strategies",
  • Network accessline 1480
    "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/strategies/strategies",       "v501_note": null,
  • Network accessline 1481
    "doc": "https://yandex.ru/dev/direct/doc/ru/strategies/strategies",
  • Network accessline 1490
    "v501_note": null,           "units": null,           "doc": "https://yandex.ru/dev/direct/doc/ru/strategies/add"
  • Network accessline 1491
    "units": null,           "doc": "https://yandex.ru/dev/direct/doc/ru/strategies/add"         },
  • Network accessline 1492
    "doc": "https://yandex.ru/dev/direct/doc/ru/strategies/add"
  • Network accessline 1500
    "v501_note": null,           "units": null,           "doc": "https://yandex.ru/dev/direct/doc/ru/strategies/archive"
  • Network accessline 1501
    "units": null,           "doc": "https://yandex.ru/dev/direct/doc/ru/strategies/archive"         },
  • Network accessline 1502
    "doc": "https://yandex.ru/dev/direct/doc/ru/strategies/archive"
  • Network accessline 1510
    "v501_note": null,           "units": null,           "doc": "https://yandex.ru/dev/direct/doc/ru/strategies/get"
  • Network accessline 1511
    "units": null,           "doc": "https://yandex.ru/dev/direct/doc/ru/strategies/get"         },
  • Network accessline 1512
    "doc": "https://yandex.ru/dev/direct/doc/ru/strategies/get"
  • Network accessline 1520
    "v501_note": null,           "units": null,           "doc": "https://yandex.ru/dev/direct/doc/ru/strategies/unarchive"
  • Network accessline 1521
    "units": null,           "doc": "https://yandex.ru/dev/direct/doc/ru/strategies/unarchive"         },
  • Network accessline 1522
    "doc": "https://yandex.ru/dev/direct/doc/ru/strategies/unarchive"
  • Network accessline 1530
    "v501_note": null,           "units": null,           "doc": "https://yandex.ru/dev/direct/doc/ru/strategies/update"
  • Network accessline 1531
    "units": null,           "doc": "https://yandex.ru/dev/direct/doc/ru/strategies/update"         }
  • Network accessline 1532
    "doc": "https://yandex.ru/dev/direct/doc/ru/strategies/update"
  • Network accessline 1539
    "purpose": "Сервис позволяет получить параметры Турбо-страниц.",       "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/turbopages/turbopages",
  • Network accessline 1540
    "documented_version": "v501",       "doc": "https://yandex.ru/dev/direct/doc/ru/turbopages/turbopages",       "v501_note": null,
  • Network accessline 1541
    "doc": "https://yandex.ru/dev/direct/doc/ru/turbopages/turbopages",
  • Network accessline 1554
    "per_object_note": null           },           "doc": "https://yandex.ru/dev/direct/doc/ru/turbopages/get"
  • Network accessline 1555
    },           "doc": "https://yandex.ru/dev/direct/doc/ru/turbopages/get"         }
  • Network accessline 1556
    "doc": "https://yandex.ru/dev/direct/doc/ru/turbopages/get"
  • Network accessline 1569
    ],       "endpoint_responds": true,       "wsdl": "https://api.direct.yandex.com/v501/dynamictextadtargets?wsdl",
  • Network accessline 1570
    "endpoint_responds": true,       "wsdl": "https://api.direct.yandex.com/v501/dynamictextadtargets?wsdl",       "purpose": "Условия нацеливания для динамических объявлений.",
  • Network accessline 1571
    "wsdl": "https://api.direct.yandex.com/v501/dynamictextadtargets?wsdl",
  • Network accessline 1572
    "purpose": "Условия нацеливания для динамических объявлений.",       "purpose_source": "https://yandex.ru/dev/direct/doc/ru/best-practice/launch-campaign",       "methods": [
  • Network accessline 1573
    "purpose_source": "https://yandex.ru/dev/direct/doc/ru/best-practice/launch-campaign",
  • Network accessline 1644
    ],       "endpoint_responds": true,       "wsdl": "https://api.direct.yandex.com/v501/smartadtargets?wsdl",
  • Network accessline 1645
    "endpoint_responds": true,       "wsdl": "https://api.direct.yandex.com/v501/smartadtargets?wsdl",       "purpose": "Фильтры — условия нацеливания для смарт-баннеров.",
  • Network accessline 1646
    "wsdl": "https://api.direct.yandex.com/v501/smartadtargets?wsdl",
  • Network accessline 1647
    "purpose": "Фильтры — условия нацеливания для смарт-баннеров.",       "purpose_source": "https://yandex.ru/dev/direct/doc/ru/best-practice/smart-ads",       "methods": [
  • Network accessline 1648
    "purpose_source": "https://yandex.ru/dev/direct/doc/ru/best-practice/smart-ads",
  • Network accessline 1729
    ],       "endpoint_responds": true,       "wsdl": "https://api.direct.yandex.com/v501/vcards?wsdl",
  • Network accessline 1730
    "endpoint_responds": true,       "wsdl": "https://api.direct.yandex.com/v501/vcards?wsdl",       "purpose": "Виртуальные визитки: контакты организации, показываемые вместе с объявлением.",
  • Network accessline 1731
    "wsdl": "https://api.direct.yandex.com/v501/vcards?wsdl",
  • Network accessline 1732
    "purpose": "Виртуальные визитки: контакты организации, показываемые вместе с объявлением.",       "purpose_source": "https://yandex.ru/dev/direct/doc/ru/concepts/contact-info",       "methods": [
  • Network accessline 1733
    "purpose_source": "https://yandex.ru/dev/direct/doc/ru/concepts/contact-info",
  • Network accessline 1771
    "purpose": "Статистика по аккаунту: единственный источник цифр, включая кампании Мастера кампаний.",     "documented_version": "v501",     "doc": "https://yandex.ru/dev/direct/doc/ru/reports",
  • Network accessline 1772
    "documented_version": "v501",     "doc": "https://yandex.ru/dev/direct/doc/ru/reports",     "calling_convention": "POST без поля `method` — телом запроса идёт сама спецификация отчёта `ReportDefinition`.",
  • Network accessline 1773
    "doc": "https://yandex.ru/dev/direct/doc/ru/reports",
  • Network accessline 1792
    },   "legacy_v4": {     "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/_AllMethods",
  • Network accessline 1793
    "legacy_v4": {     "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/_AllMethods",     "note": "Управление кампаниями, группами, объявлениями и ставками в версиях 4 и Live 4 отключено. Оставшееся делится надвое. Часть — то, к чему
  • Network accessline 1794
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/_AllMethods",
  • Network accessline 1795
    "note": "Управление кампаниями, группами, объявлениями и ставками в версиях 4 и Live 4 отключено. Оставшееся делится надвое. Часть — то, к чему справочник версии 5 сам отсылает: прогноз бюджета и подбор фраз, метки, общий счёт, финансовые о
  • Network accessline 1796
    "units_note": "У версии 4 отдельный суточный пул баллов. GetClientsUnits не заменяет заголовок Units версии 5; список платных методов у каждой версии свой.",     "transport_note": "Запрос четвёртой версии собран не так, как запрос версии 5,
  • Network accessline 1797
    "transport_note": "Запрос четвёртой версии собран не так, как запрос версии 5, и провенанс у утверждений разный. Документировано: токен уходит в теле запроса, полем token, рядом с method, param и locale (https://yandex.ru/dev/direct/doc/dg-
  • Network accessline 1809
    "v5_equivalent": null,             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/EnableSharedAccount"
  • Network accessline 1810
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/EnableSharedAccount"           },
  • Network accessline 1811
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/EnableSharedAccount"
  • Network accessline 1846
    }             ],             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/AccountManagement"
  • Network accessline 1847
    ],             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/AccountManagement"           }
  • Network accessline 1848
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/AccountManagement"
  • Network accessline 1863
    "v5_equivalent": null,             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/CreateInvoice"
  • Network accessline 1864
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/CreateInvoice"           },
  • Network accessline 1865
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/CreateInvoice"
  • Network accessline 1875
    "v5_equivalent": null,             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/PayCampaigns"
  • Network accessline 1876
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/PayCampaigns"           },
  • Network accessline 1877
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/PayCampaigns"
  • Network accessline 1887
    "v5_equivalent": null,             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/TransferMoney"
  • Network accessline 1888
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/TransferMoney"           },
  • Network accessline 1889
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/TransferMoney"
  • Network accessline 1898
    "v5_equivalent": null,             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetCreditLimits"
  • Network accessline 1899
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetCreditLimits"           }
  • Network accessline 1900
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetCreditLimits"
  • Network accessline 1915
    "v5_equivalent": null,             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/CreateNewForecast"
  • Network accessline 1916
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/CreateNewForecast"           },
  • Network accessline 1917
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/CreateNewForecast"
  • Network accessline 1927
    "v5_equivalent": null,             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetForecast"
  • Network accessline 1928
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetForecast"           },
  • Network accessline 1929
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetForecast"
  • Network accessline 1938
    "v5_equivalent": null,             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetForecastList"
  • Network accessline 1939
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetForecastList"           },
  • Network accessline 1940
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetForecastList"
  • Network accessline 1949
    "v5_equivalent": null,             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/DeleteForecastReport"
  • Network accessline 1950
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/DeleteForecastReport"           }
  • Network accessline 1951
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/DeleteForecastReport"
  • Network accessline 1965
    "v5_equivalent": null,             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetKeywordsSuggestion"
  • Network accessline 1966
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetKeywordsSuggestion"           },
  • Network accessline 1967
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetKeywordsSuggestion"
  • Network accessline 1976
    "v5_equivalent": null,             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/CreateNewWordstatReport"
  • Network accessline 1977
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/CreateNewWordstatReport"           },
  • Network accessline 1978
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/CreateNewWordstatReport"
  • Network accessline 1987
    "v5_equivalent": null,             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetWordstatReport"
  • Network accessline 1988
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetWordstatReport"           },
  • Network accessline 1989
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetWordstatReport"
  • Network accessline 1998
    "v5_equivalent": null,             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetWordstatReportList"
  • Network accessline 1999
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetWordstatReportList"           },
  • Network accessline 2000
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetWordstatReportList"
  • Network accessline 2009
    "v5_equivalent": null,             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/DeleteWordstatReport"
  • Network accessline 2010
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/DeleteWordstatReport"           }
  • Network accessline 2011
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/DeleteWordstatReport"
  • Network accessline 2025
    "v5_equivalent": null,             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/GetBannersTags"
  • Network accessline 2026
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/GetBannersTags"           },
  • Network accessline 2027
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/GetBannersTags"
  • Network accessline 2036
    "v5_equivalent": null,             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/UpdateBannersTags"
  • Network accessline 2037
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/UpdateBannersTags"           },
  • Network accessline 2038
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/UpdateBannersTags"
  • Network accessline 2047
    "v5_equivalent": null,             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/GetCampaignsTags"
  • Network accessline 2048
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/GetCampaignsTags"           },
  • Network accessline 2049
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/GetCampaignsTags"
  • Network accessline 2058
    "v5_equivalent": null,             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/UpdateCampaignsTags"
  • Network accessline 2059
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/UpdateCampaignsTags"           }
  • Network accessline 2060
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/UpdateCampaignsTags"
  • Network accessline 2074
    "v5_equivalent": null,             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/GetRetargetingGoals"
  • Network accessline 2075
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/GetRetargetingGoals"           }
  • Network accessline 2076
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/GetRetargetingGoals"
  • Network accessline 2091
    "v5_equivalent_note": "Замена неполная: метод возвращает остаток отдельного пула версии 4. Остаток версии 5 проверяется по заголовкам ответа и Clients.get.",             "operations": null,             "doc": "https://yandex.ru/dev/direct/d
  • Network accessline 2092
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetClientsUnits"           }
  • Network accessline 2093
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetClientsUnits"
  • Network accessline 2108
    "v5_equivalent": "Dictionaries",             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetRegions"
  • Network accessline 2109
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetRegions"           },
  • Network accessline 2110
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetRegions"
  • Network accessline 2120
    "v5_equivalent": null,             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetStatGoals"
  • Network accessline 2121
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetStatGoals"           },
  • Network accessline 2122
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetStatGoals"
  • Network accessline 2131
    "v5_equivalent": null,             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetRubrics"
  • Network accessline 2132
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetRubrics"           },
  • Network accessline 2133
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetRubrics"
  • Network accessline 2142
    "v5_equivalent": "Dictionaries",             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetTimeZones"
  • Network accessline 2143
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetTimeZones"           }
  • Network accessline 2144
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetTimeZones"
  • Network accessline 2158
    "v5_equivalent": null,             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetAvailableVersions"
  • Network accessline 2159
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetAvailableVersions"           },
  • Network accessline 2160
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetAvailableVersions"
  • Network accessline 2169
    "v5_equivalent": null,             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetVersion"
  • Network accessline 2170
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetVersion"           },
  • Network accessline 2171
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/GetVersion"
  • Network accessline 2180
    "v5_equivalent": null,             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/PingAPI"
  • Network accessline 2181
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/PingAPI"           },
  • Network accessline 2182
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/PingAPI"
  • Network accessline 2191
    "v5_equivalent": null,             "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/GetEventsLog"
  • Network accessline 2192
    "operations": null,             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/GetEventsLog"           }
  • Network accessline 2193
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/GetEventsLog"
  • Network accessline 2747
    }             ],             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/AdImage",
  • Network accessline 2748
    ],             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/AdImage",             "live_note": "В исходной проверке API метод вернул код 55 «Метод не существует». Не используйте его без повторного подтверждения поддержки. Описание
  • Network accessline 2749
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/AdImage",
  • Network accessline 2770
    }             ],             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/AdImageAssociation",
  • Network accessline 2771
    ],             "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/AdImageAssociation",             "live_note": "Отвечает иначе, чем соседний AdImage, и это разные вещи: код 509 «Метод недоступен в данной версии API», а не 55 «Метод не 
  • Network accessline 2772
    "doc": "https://yandex.ru/dev/direct/doc/dg-v4/ru/live/AdImageAssociation",
  • Network accessline 2819
    "id": "D-01",       "title": "Справочник публикует только адреса v501, но префикс v5 продолжает работать",       "docs": "Все страницы сервисов дают адрес `https://api.direct.yandex.com/json/v501/{сервис}`. Живой адрес версии 5 остался в сп
  • Network accessline 2820
    "title": "Справочник публикует только адреса v501, но префикс v5 продолжает работать",       "docs": "Все страницы сервисов дают адрес `https://api.direct.yandex.com/json/v501/{сервис}`. Живой адрес версии 5 остался в справочнике трижды, и 
  • Network accessline 2821
    "docs": "Все страницы сервисов дают адрес `https://api.direct.yandex.com/json/v501/{сервис}`. Живой адрес версии 5 остался в справочнике трижды, и все три раза — в примерах запроса к `Ads`: `POST /json/v5/ads/` дважды и `POST /v5/ads/` в SO

plugins/yandex-direct/skills/yandex-direct/references/hypotheses.md

  • Network accessline 186
    Не предлагайте передавать устаревшее поле или искать исчезнувшую настройку. Для анализа географии используйте доступные отчёты и настройку регионов. Источник: [обновление геотаргетинга в Директе](https://b2b.yandex.ru/adv/news/obnovlenie-ge
  • Network accessline 188
    Источник: [обновление геотаргетинга в Директе](https://b2b.yandex.ru/adv/news/obnovlenie-geotargetinga-v-direkte).

plugins/yandex-direct/skills/yandex-direct/references/limits.json

  • Network accessline 1804
    "client_restrictions_comment": "Читаются методом Clients.get; при получении параметров агентства массив не возвращается — лимиты запрашиваются по каждому клиенту отдельно.",   "sources": {     "errors_list": "https://yandex.ru/dev/direct/do
  • Network accessline 1805
    "sources": {     "errors_list": "https://yandex.ru/dev/direct/doc/ru/concepts/errors-list",     "units": "https://yandex.ru/dev/direct/doc/ru/concepts/units",
  • Network accessline 1806
    "errors_list": "https://yandex.ru/dev/direct/doc/ru/concepts/errors-list",
  • Network accessline 1807
    "units": "https://yandex.ru/dev/direct/doc/ru/concepts/units",
  • Network accessline 1808
    "paging": "https://yandex.ru/dev/direct/doc/ru/best-practice/get",
  • Network accessline 1809
    "clients_get": "https://yandex.ru/dev/direct/doc/ru/clients/get",
  • Network accessline 1810
    "technical_restrictions": "https://yandex.ru/support/direct/ru/moderation/technical-restrictions",
  • Network accessline 1811
    "text_and_title": "https://yandex.ru/support/direct/ru/efficiency/text-and-title"

plugins/yandex-direct/skills/yandex-direct/references/report_presets.json

  • Network accessline 4
    "reference": "references/REPORTS.md",   "endpoint": {     "json": "https://api.direct.yandex.com/json/v501/reports",
  • Network accessline 5
    "endpoint": {     "json": "https://api.direct.yandex.com/json/v501/reports",     "xml": "https://api.direct.yandex.com/v501/reports"
  • Network accessline 6
    "json": "https://api.direct.yandex.com/json/v501/reports",
  • Network accessline 7
    "xml": "https://api.direct.yandex.com/v501/reports"

plugins/yandex-direct/skills/yandex-direct/references/ui_deeplinks.json

  • Network accessline 2
    "version": "1",   "checked_at": "2026-08-24",   "source": "https://yandex.ru/support/direct/ru/",
  • Network accessline 3
    "checked_at": "2026-08-24",   "source": "https://yandex.ru/support/direct/ru/",   "about": "Карта действий и экранов Директа. confirmed — ссылка из справки, user_provided — формат от пользователя, navigation — переходы от известного экрана.
  • Network accessline 4
    "source": "https://yandex.ru/support/direct/ru/",
  • Network accessline 17
    },   "hosts": {     "direct": "https://direct.yandex.ru",
  • Network accessline 18
    "hosts": {     "direct": "https://direct.yandex.ru",     "direct_com": "https://direct.yandex.com",
  • Network accessline 19
    "direct": "https://direct.yandex.ru",
  • Network accessline 20
    "direct_com": "https://direct.yandex.com",
  • Network accessline 21
    "balance": "https://balance.yandex.ru",
  • Network accessline 22
    "metrika": "https://metrika.yandex.ru",
  • Network accessline 23
    "audience": "https://audience.yandex.ru",
  • Network accessline 24
    "wordstat": "https://wordstat.yandex.ru",
  • Network accessline 25
    "business": "https://yandex.ru/sprav",
  • Network accessline 26
    "passport": "https://passport.yandex.ru"
  • Network accessline 30
    "id": "cabinet_root",       "title": "Кабинет Директа",       "url": "https://direct.yandex.ru/",
  • Network accessline 31
    "title": "Кабинет Директа",       "url": "https://direct.yandex.ru/",       "confidence": "confirmed",
  • Network accessline 32
    "url": "https://direct.yandex.ru/",
  • Network accessline 33
    "confidence": "confirmed",       "interface": "both",       "source": "https://yandex.ru/support/direct/ru/troubleshooting/moderation"
  • Network accessline 34
    "interface": "both",       "source": "https://yandex.ru/support/direct/ru/troubleshooting/moderation"     },
  • Network accessline 35
    "source": "https://yandex.ru/support/direct/ru/troubleshooting/moderation"
  • Network accessline 38
    "id": "campaigns_list",       "title": "Список кампаний",       "url": "https://direct.yandex.ru/dna/grid/campaigns",
  • Network accessline 39
    "title": "Список кампаний",       "url": "https://direct.yandex.ru/dna/grid/campaigns",       "confidence": "confirmed",
  • Network accessline 40
    "url": "https://direct.yandex.ru/dna/grid/campaigns",
  • Network accessline 41
    "confidence": "confirmed",       "interface": "both",       "source": "https://yandex.ru/support/direct/ru/new-interface/guide",
  • Network accessline 42
    "interface": "both",       "source": "https://yandex.ru/support/direct/ru/new-interface/guide",       "note": "Шаблон открывает выбранный кабинет: последние 30 дней, кампании с оплатой за клики и показы, кроме архивных. Это параметры экрана
  • Network accessline 43
    "source": "https://yandex.ru/support/direct/ru/new-interface/guide",
  • Network accessline 44
    "note": "Шаблон открывает выбранный кабинет: последние 30 дней, кампании с оплатой за клики и показы, кроме архивных. Это параметры экрана, не настройки кампаний и не период анализа агента.",       "url_template": "https://direct.yandex.ru/
  • Network accessline 45
    "url_template": "https://direct.yandex.ru/dna/grid/campaigns?ulogin={login}&filter-reset=true&stat-preset=last30Days&dim-filter=CPC_AND_CPM&status-filter=ALL_EXCEPT_ARCHIVED",
  • Network accessline 49
    "id": "campaign_groups",       "title": "Группы выбранной кампании",       "url": "https://direct.yandex.ru/dna/grid/groups",
  • Network accessline 50
    "title": "Группы выбранной кампании",       "url": "https://direct.yandex.ru/dna/grid/groups",       "url_template": "https://direct.yandex.ru/dna/grid/groups?ulogin={login}&campaigns-ids={campaign_id}",
  • Network accessline 51
    "url": "https://direct.yandex.ru/dna/grid/groups",
  • Network accessline 52
    "url_template": "https://direct.yandex.ru/dna/grid/groups?ulogin={login}&campaigns-ids={campaign_id}",
  • Network accessline 59
    "id": "campaign_edit",       "title": "Настройки выбранной кампании",       "url": "https://direct.yandex.ru/dna/campaigns-edit",
  • Network accessline 60
    "title": "Настройки выбранной кампании",       "url": "https://direct.yandex.ru/dna/campaigns-edit",       "url_template": "https://direct.yandex.ru/dna/campaigns-edit?ulogin={login}&campaigns-ids={campaign_id}",
  • Network accessline 61
    "url": "https://direct.yandex.ru/dna/campaigns-edit",
  • Network accessline 62
    "url_template": "https://direct.yandex.ru/dna/campaigns-edit?ulogin={login}&campaigns-ids={campaign_id}",
  • Network accessline 69
    "id": "campaign_create",       "title": "Создание кампании",       "url": "https://direct.yandex.ru/dna/campaigns-edit/",
  • Network accessline 70
    "title": "Создание кампании",       "url": "https://direct.yandex.ru/dna/campaigns-edit/",       "confidence": "confirmed",
  • Network accessline 71
    "url": "https://direct.yandex.ru/dna/campaigns-edit/",
  • Network accessline 72
    "confidence": "confirmed",       "interface": "both",       "source": "https://yandex.ru/support/direct/ru/efficiency/messengers-ads",
  • Network accessline 73
    "interface": "both",       "source": "https://yandex.ru/support/direct/ru/efficiency/messengers-ads",       "params": [
  • Network accessline 74
    "source": "https://yandex.ru/support/direct/ru/efficiency/messengers-ads",
  • Network accessline 90
    }       ],       "note": "Полный подтверждённый пример: https://direct.yandex.ru/dna/campaigns-edit/?is-new=1&campaign-type=UNIFIED&default-placement-type=MESSENGERS"
  • Network accessline 91
    ],       "note": "Полный подтверждённый пример: https://direct.yandex.ru/dna/campaigns-edit/?is-new=1&campaign-type=UNIFIED&default-placement-type=MESSENGERS"     },
  • Network accessline 92
    "note": "Полный подтверждённый пример: https://direct.yandex.ru/dna/campaigns-edit/?is-new=1&campaign-type=UNIFIED&default-placement-type=MESSENGERS"
  • Network accessline 95
    "id": "recommendations",       "title": "Рекомендации",       "url": "https://direct.yandex.ru/dna/recommendations",
  • Network accessline 96
    "title": "Рекомендации",       "url": "https://direct.yandex.ru/dna/recommendations",       "confidence": "confirmed",
  • Network accessline 97
    "url": "https://direct.yandex.ru/dna/recommendations",
  • Network accessline 98
    "confidence": "confirmed",       "interface": "both",       "source": "https://yandex.ru/support/direct/ru/new-interface/recommendations"
  • Network accessline 99
    "interface": "both",       "source": "https://yandex.ru/support/direct/ru/new-interface/recommendations"     },
  • Network accessline 100
    "source": "https://yandex.ru/support/direct/ru/new-interface/recommendations"
  • Network accessline 103
    "id": "reports_library",       "title": "Библиотека отчётов",       "url": "https://direct.yandex.ru/dna/reports/library",
  • Network accessline 104
    "title": "Библиотека отчётов",       "url": "https://direct.yandex.ru/dna/reports/library",       "confidence": "confirmed",
  • Network accessline 105
    "url": "https://direct.yandex.ru/dna/reports/library",
  • Network accessline 106
    "confidence": "confirmed",       "interface": "direct_pro",       "source": "https://yandex.ru/support/direct/ru/statistics/library"
  • Network accessline 107
    "interface": "direct_pro",       "source": "https://yandex.ru/support/direct/ru/statistics/library"     },
  • Network accessline 108
    "source": "https://yandex.ru/support/direct/ru/statistics/library"
  • Network accessline 111
    "id": "copy_campaigns",       "title": "Копирование кампаний",       "url": "https://direct.yandex.ru/dna/copy-campaigns",
  • Network accessline 112
    "title": "Копирование кампаний",       "url": "https://direct.yandex.ru/dna/copy-campaigns",       "confidence": "confirmed",
  • Network accessline 113
    "url": "https://direct.yandex.ru/dna/copy-campaigns",
  • Network accessline 114
    "confidence": "confirmed",       "interface": "agency",       "source": "https://yandex.ru/support/direct/ru/agencies/interface-guide"
  • Network accessline 115
    "interface": "agency",       "source": "https://yandex.ru/support/direct/ru/agencies/interface-guide"     },
  • Network accessline 116
    "source": "https://yandex.ru/support/direct/ru/agencies/interface-guide"
  • Network accessline 119
    "id": "user_settings_account",       "title": "Настройки пользователя, вкладка «Аккаунт»",       "url": "https://direct.yandex.ru/dna/user-settings/account/",
  • Network accessline 120
    "title": "Настройки пользователя, вкладка «Аккаунт»",       "url": "https://direct.yandex.ru/dna/user-settings/account/",       "confidence": "confirmed",
  • Network accessline 121
    "url": "https://direct.yandex.ru/dna/user-settings/account/",
  • Network accessline 122
    "confidence": "confirmed",       "interface": "both",       "source": "https://yandex.ru/support/direct/ru/efficiency/enrich-ads-with-third-party-data",
  • Network accessline 123
    "interface": "both",       "source": "https://yandex.ru/support/direct/ru/efficiency/enrich-ads-with-third-party-data",       "note": "Здесь же — «Показывать метки», уведомления на телефон, счётчик Метрики для новых кампаний, «Дополнять объ
  • Network accessline 124
    "source": "https://yandex.ru/support/direct/ru/efficiency/enrich-ads-with-third-party-data",
  • Network accessline 128
    "id": "subclient_create",       "title": "Регистрация нового клиента агентства",       "url": "https://direct.yandex.ru/dna/sub-clients/create/",
  • Network accessline 129
    "title": "Регистрация нового клиента агентства",       "url": "https://direct.yandex.ru/dna/sub-clients/create/",       "confidence": "confirmed",
  • Network accessline 130
    "url": "https://direct.yandex.ru/dna/sub-clients/create/",
  • Network accessline 131
    "confidence": "confirmed",       "interface": "agency",       "source": "https://yandex.ru/support/direct/ru/agencies/manage-clients"
  • Network accessline 132
    "interface": "agency",       "source": "https://yandex.ru/support/direct/ru/agencies/manage-clients"     },
  • Network accessline 133
    "source": "https://yandex.ru/support/direct/ru/agencies/manage-clients"
  • Network accessline 136
    "id": "budget_forecast",       "title": "Прогноз бюджета",       "url": "https://direct.yandex.ru/registered/main.pl?cmd=advancedForecast",
  • Network accessline 137
    "title": "Прогноз бюджета",       "url": "https://direct.yandex.ru/registered/main.pl?cmd=advancedForecast",       "confidence": "confirmed",
  • Network accessline 138
    "url": "https://direct.yandex.ru/registered/main.pl?cmd=advancedForecast",
  • Network accessline 139
    "confidence": "confirmed",       "interface": "direct_pro",       "source": "https://yandex.ru/support/direct/ru/impressions/budget-estimation"
  • Network accessline 140
    "interface": "direct_pro",       "source": "https://yandex.ru/support/direct/ru/impressions/budget-estimation"     },
  • Network accessline 141
    "source": "https://yandex.ru/support/direct/ru/impressions/budget-estimation"
  • Network accessline 144
    "id": "api_settings",       "title": "Настройки API и пользовательское соглашение",       "url": "https://direct.yandex.ru/registered/main.pl?cmd=apiSettings&api_welcome=yes",
  • Network accessline 145
    "title": "Настройки API и пользовательское соглашение",       "url": "https://direct.yandex.ru/registered/main.pl?cmd=apiSettings&api_welcome=yes",       "confidence": "confirmed",
  • Network accessline 146
    "url": "https://direct.yandex.ru/registered/main.pl?cmd=apiSettings&api_welcome=yes",
  • Network accessline 147
    "confidence": "confirmed",       "interface": "direct_pro",       "source": "https://yandex.ru/support/direct/ru/alternative-interfaces/api",
  • Network accessline 148
    "interface": "direct_pro",       "source": "https://yandex.ru/support/direct/ru/alternative-interfaces/api",       "note": "Без принятия соглашения на этом экране API не работает — обязательный шаг настройки скилла."
  • Network accessline 149
    "source": "https://yandex.ru/support/direct/ru/alternative-interfaces/api",
  • Network accessline 153
    "id": "retargeting_conditions",       "title": "Условия ретаргетинга (старый интерфейс)",       "url": "https://direct.yandex.ru/registered/main.pl?cmd=showRetargetingCond",
  • Network accessline 154
    "title": "Условия ретаргетинга (старый интерфейс)",       "url": "https://direct.yandex.ru/registered/main.pl?cmd=showRetargetingCond",       "confidence": "confirmed",
  • Network accessline 155
    "url": "https://direct.yandex.ru/registered/main.pl?cmd=showRetargetingCond",
  • Network accessline 156
    "confidence": "confirmed",       "interface": "direct_pro",       "source": "https://yandex.ru/support/direct/ru/impression-criteria/retargeting-lists",
  • Network accessline 157
    "interface": "direct_pro",       "source": "https://yandex.ru/support/direct/ru/impression-criteria/retargeting-lists",       "note": "В актуальном интерфейсе те же условия живут в «Библиотека → Сегменты аудитории»."
  • Network accessline 158
    "source": "https://yandex.ru/support/direct/ru/impression-criteria/retargeting-lists",
  • Network accessline 162
    "id": "legacy_search_page",       "title": "Страница кампаний (старый интерфейс)",       "url": "https://direct.yandex.ru/registered/main.pl?cmd=showSearchPage",
  • Network accessline 163
    "title": "Страница кампаний (старый интерфейс)",       "url": "https://direct.yandex.ru/registered/main.pl?cmd=showSearchPage",       "confidence": "confirmed",
  • Network accessline 164
    "url": "https://direct.yandex.ru/registered/main.pl?cmd=showSearchPage",
  • Network accessline 165
    "confidence": "confirmed",       "interface": "both",       "source": "https://yandex.ru/support/direct/ru/troubleshooting/moderation"
  • Network accessline 166
    "interface": "both",       "source": "https://yandex.ru/support/direct/ru/troubleshooting/moderation"     },
  • Network accessline 167
    "source": "https://yandex.ru/support/direct/ru/troubleshooting/moderation"
  • Network accessline 170
    "id": "wordstat",       "title": "Вордстат — подбор слов",       "url": "https://wordstat.yandex.ru/",
  • Network accessline 171
    "title": "Вордстат — подбор слов",       "url": "https://wordstat.yandex.ru/",       "confidence": "confirmed",
  • Network accessline 172
    "url": "https://wordstat.yandex.ru/",
  • Network accessline 173
    "confidence": "confirmed",       "interface": "both",       "source": "https://yandex.ru/support/direct/ru/keywords/wordstat"
  • Network accessline 174
    "interface": "both",       "source": "https://yandex.ru/support/direct/ru/keywords/wordstat"     },
  • Network accessline 175
    "source": "https://yandex.ru/support/direct/ru/keywords/wordstat"
  • Network accessline 178
    "id": "balance_root",       "title": "Яндекс Баланс",       "url": "https://balance.yandex.ru/",
  • Network accessline 179
    "title": "Яндекс Баланс",       "url": "https://balance.yandex.ru/",       "confidence": "confirmed",
  • Network accessline 180
    "url": "https://balance.yandex.ru/",
  • Network accessline 181
    "confidence": "confirmed",       "interface": "both",       "source": "https://yandex.ru/support/direct/ru/payments/docs"
  • Network accessline 182
    "interface": "both",       "source": "https://yandex.ru/support/direct/ru/payments/docs"     },
  • Network accessline 183
    "source": "https://yandex.ru/support/direct/ru/payments/docs"
  • Network accessline 186
    "id": "balance_invoices",       "title": "Яндекс Баланс — счета",       "url": "https://balance.yandex.ru/invoices.xml?service_cc=PPC&ref_service_id=7",
  • Network accessline 187
    "title": "Яндекс Баланс — счета",       "url": "https://balance.yandex.ru/invoices.xml?service_cc=PPC&ref_service_id=7",       "confidence": "confirmed",
  • Network accessline 188
    "url": "https://balance.yandex.ru/invoices.xml?service_cc=PPC&ref_service_id=7",
  • Network accessline 189
    "confidence": "confirmed",       "interface": "both",       "source": "https://yandex.ru/support/direct/ru/payments/docs",
  • Network accessline 190
    "interface": "both",       "source": "https://yandex.ru/support/direct/ru/payments/docs",       "note": "Без параметров — https://balance.yandex.ru/invoices.xml — тот же список без фильтра по Директу."
  • Network accessline 191
    "source": "https://yandex.ru/support/direct/ru/payments/docs",
  • Network accessline 192
    "note": "Без параметров — https://balance.yandex.ru/invoices.xml — тот же список без фильтра по Директу."
  • Network accessline 195
    "id": "balance_documents",       "title": "Яндекс Баланс — документы",       "url": "https://balance.yandex.ru/docs.xml#/invoices",
  • Network accessline 196
    "title": "Яндекс Баланс — документы",       "url": "https://balance.yandex.ru/docs.xml#/invoices",       "confidence": "confirmed",
  • Network accessline 197
    "url": "https://balance.yandex.ru/docs.xml#/invoices",
  • Network accessline 198
    "confidence": "confirmed",       "interface": "both",       "source": "https://yandex.ru/support/direct/ru/payments/deferred-payment"
  • Network accessline 199
    "interface": "both",       "source": "https://yandex.ru/support/direct/ru/payments/deferred-payment"     },
  • Network accessline 200
    "source": "https://yandex.ru/support/direct/ru/payments/deferred-payment"
  • Network accessline 203
    "id": "balance_acts",       "title": "Яндекс Баланс — акты",       "url": "https://balance.yandex.ru/acts.xml",
  • Network accessline 204
    "title": "Яндекс Баланс — акты",       "url": "https://balance.yandex.ru/acts.xml",       "confidence": "confirmed",
  • Network accessline 205
    "url": "https://balance.yandex.ru/acts.xml",
  • Network accessline 206
    "confidence": "confirmed",       "interface": "both",       "source": "https://yandex.ru/support/direct/ru/payments/faq"
  • Network accessline 207
    "interface": "both",       "source": "https://yandex.ru/support/direct/ru/payments/faq"     },
  • Network accessline 208
    "source": "https://yandex.ru/support/direct/ru/payments/faq"
  • Network accessline 211
    "id": "balance_person_new",       "title": "Яндекс Баланс — добавить плательщика",       "url": "https://balance.yandex.ru/persons.xml#/new",
  • Network accessline 212
    "title": "Яндекс Баланс — добавить плательщика",       "url": "https://balance.yandex.ru/persons.xml#/new",       "confidence": "confirmed",
  • Network accessline 213
    "url": "https://balance.yandex.ru/persons.xml#/new",
  • Network accessline 214
    "confidence": "confirmed",       "interface": "both",       "source": "https://yandex.ru/support/direct/ru/agencies/account-transfer"
  • Network accessline 215
    "interface": "both",       "source": "https://yandex.ru/support/direct/ru/agencies/account-transfer"     },
  • Network accessline 216
    "source": "https://yandex.ru/support/direct/ru/agencies/account-transfer"
  • Network accessline 219
    "id": "metrika",       "title": "Яндекс Метрика",       "url": "https://metrika.yandex.ru/",
  • Network accessline 220
    "title": "Яндекс Метрика",       "url": "https://metrika.yandex.ru/",       "confidence": "confirmed",
  • Network accessline 221
    "url": "https://metrika.yandex.ru/",
  • Network accessline 222
    "confidence": "confirmed",       "interface": "both",       "source": "https://yandex.ru/support/direct/ru/statistics/metrika"
  • Network accessline 223
    "interface": "both",       "source": "https://yandex.ru/support/direct/ru/statistics/metrika"     },
  • Network accessline 224
    "source": "https://yandex.ru/support/direct/ru/statistics/metrika"
  • Network accessline 227
    "id": "metrika_counter_create",       "title": "Яндекс Метрика — создать счётчик",       "url": "https://metrika.yandex.ru/add/",
  • Network accessline 228
    "title": "Яндекс Метрика — создать счётчик",       "url": "https://metrika.yandex.ru/add/",       "confidence": "confirmed",
  • Network accessline 229
    "url": "https://metrika.yandex.ru/add/",
  • Network accessline 230
    "confidence": "confirmed",       "interface": "both",       "source": "https://yandex.ru/support/direct/ru/statistics/metrika"
  • Network accessline 231
    "interface": "both",       "source": "https://yandex.ru/support/direct/ru/statistics/metrika"     },
  • Network accessline 232
    "source": "https://yandex.ru/support/direct/ru/statistics/metrika"
  • Network accessline 235
    "id": "audience",       "title": "Яндекс Аудитории",       "url": "https://audience.yandex.ru",
  • Network accessline 236
    "title": "Яндекс Аудитории",       "url": "https://audience.yandex.ru",       "confidence": "confirmed",
  • Network accessline 237
    "url": "https://audience.yandex.ru",
  • Network accessline 238
    "confidence": "confirmed",       "interface": "both",       "source": "https://yandex.ru/support/direct/ru/technologies-and-services/audience-segments-in-direct"
  • Network accessline 239
    "interface": "both",       "source": "https://yandex.ru/support/direct/ru/technologies-and-services/audience-segments-in-direct"     },
  • Network accessline 240
    "source": "https://yandex.ru/support/direct/ru/technologies-and-services/audience-segments-in-direct"
  • Network accessline 243
    "id": "audience_pixels",       "title": "Яндекс Аудитории — пиксели",       "url": "https://audience.yandex.ru/pixels",
  • Network accessline 244
    "title": "Яндекс Аудитории — пиксели",       "url": "https://audience.yandex.ru/pixels",       "confidence": "confirmed",
  • Network accessline 245
    "url": "https://audience.yandex.ru/pixels",
  • Network accessline 246
    "confidence": "confirmed",       "interface": "both",       "source": "https://yandex.ru/support/direct/ru/products-cpm-campaign-frontpage/retargeting"
  • Network accessline 247
    "interface": "both",       "source": "https://yandex.ru/support/direct/ru/products-cpm-campaign-frontpage/retargeting"     },
  • Network accessline 248
    "source": "https://yandex.ru/support/direct/ru/products-cpm-campaign-frontpage/retargeting"
  • Network accessline 251
    "id": "business_profile",       "title": "Яндекс Бизнес — профиль организации",       "url": "https://yandex.ru/sprav",
  • Network accessline 252
    "title": "Яндекс Бизнес — профиль организации",       "url": "https://yandex.ru/sprav",       "confidence": "confirmed",
  • Network accessline 253
    "url": "https://yandex.ru/sprav",
  • Network accessline 254
    "confidence": "confirmed",       "interface": "both",       "source": "https://yandex.ru/support/direct/ru/efficiency/vcards"
  • Network accessline 255
    "interface": "both",       "source": "https://yandex.ru/support/direct/ru/efficiency/vcards"     },
  • Network accessline 256
    "source": "https://yandex.ru/support/direct/ru/efficiency/vcards"
  • Network accessline 259
    "id": "passport_profile",       "title": "Яндекс ID — профиль и привязанные карты",       "url": "https://passport.yandex.ru/profile",
  • Network accessline 260
    "title": "Яндекс ID — профиль и привязанные карты",       "url": "https://passport.yandex.ru/profile",       "confidence": "confirmed",
  • Network accessline 261
    "url": "https://passport.yandex.ru/profile",
  • Network accessline 262
    "confidence": "confirmed",       "interface": "both",       "source": "https://yandex.ru/support/direct/ru/payments/shared-account"
  • Network accessline 263
    "interface": "both",       "source": "https://yandex.ru/support/direct/ru/payments/shared-account"     },
  • Network accessline 264
    "source": "https://yandex.ru/support/direct/ru/payments/shared-account"
  • Network accessline 267
    "id": "agency_feedback_forms",       "title": "Формы обратной связи для агентств",       "url": "https://yandex.ru/partner-office/knowledge-base",
  • Network accessline 268
    "title": "Формы обратной связи для агентств",       "url": "https://yandex.ru/partner-office/knowledge-base",       "confidence": "confirmed",
  • Network accessline 269
    "url": "https://yandex.ru/partner-office/knowledge-base",
  • Network accessline 270
    "confidence": "confirmed",       "interface": "agency",       "source": "https://yandex.ru/support/direct/ru/troubleshooting/moderation"
  • Network accessline 271
    "interface": "agency",       "source": "https://yandex.ru/support/direct/ru/troubleshooting/moderation"     },
  • Network accessline 272
    "source": "https://yandex.ru/support/direct/ru/troubleshooting/moderation"
  • Network accessline 492
    "Создать кампанию"       ],       "help": "https://yandex.ru/support/direct/ru/campaign-master/about"
  • Network accessline 493
    ],       "help": "https://yandex.ru/support/direct/ru/campaign-master/about"     },
  • Network accessline 494
    "help": "https://yandex.ru/support/direct/ru/campaign-master/about"
  • Network accessline 504
    "Единая перфоманс-кампания"       ],       "help": "https://yandex.ru/support/direct/ru/unified-performance-campaign/create-campaign",
  • Network accessline 505
    ],       "help": "https://yandex.ru/support/direct/ru/unified-performance-campaign/create-campaign",       "alternative_screen": "campaign_create",
  • Network accessline 506
    "help": "https://yandex.ru/support/direct/ru/unified-performance-campaign/create-campaign",
  • Network accessline 520
    ],       "alternative_screen": "group_edit",       "help": "https://yandex.ru/support/direct/ru/impressions/bids-adjustment",
  • Network accessline 521
    "alternative_screen": "group_edit",       "help": "https://yandex.ru/support/direct/ru/impressions/bids-adjustment",       "note": "Корректировка по региону задаётся только на уровне кампании."
  • Network accessline 522
    "help": "https://yandex.ru/support/direct/ru/impressions/bids-adjustment",
  • Network accessline 534
    "Дождаться модерации текста и ссылки"       ],       "help": "https://yandex.ru/support/direct/ru/efficiency/promotion"
  • Network accessline 535
    ],       "help": "https://yandex.ru/support/direct/ru/efficiency/promotion"     },
  • Network accessline 536
    "help": "https://yandex.ru/support/direct/ru/efficiency/promotion"
  • Network accessline 547
    "Применить"       ],       "help": "https://yandex.ru/support/direct/ru/efficiency/promotion"
  • Network accessline 548
    ],       "help": "https://yandex.ru/support/direct/ru/efficiency/promotion"     },
  • Network accessline 549
    "help": "https://yandex.ru/support/direct/ru/efficiency/promotion"
  • Network accessline 559
    "Сверить с письмом на адрес регистрации"       ],       "help": "https://yandex.ru/support/direct/ru/troubleshooting/moderation"
  • Network accessline 560
    ],       "help": "https://yandex.ru/support/direct/ru/troubleshooting/moderation"     },
  • Network accessline 561
    "help": "https://yandex.ru/support/direct/ru/troubleshooting/moderation"
  • Network accessline 571
    "«…» рядом с кампанией → Отправить на модерацию"       ],       "help": "https://yandex.ru/support/direct/ru/troubleshooting/moderation",
  • Network accessline 572
    ],       "help": "https://yandex.ru/support/direct/ru/troubleshooting/moderation",       "note": "Пока новая версия на модерации, показывается старая. Если старую остановили вручную, показов не будет вовсе."
  • Network accessline 573
    "help": "https://yandex.ru/support/direct/ru/troubleshooting/moderation",
  • Network accessline 584
    "Заполнить форму отправки документов, указав номер кампании, тематику и организацию"       ],       "help": "https://yandex.ru/support/direct/ru/moderation/special-categories",
  • Network accessline 585
    ],       "help": "https://yandex.ru/support/direct/ru/moderation/special-categories",       "note": "Принятый пакет действует для всех кампаний аккаунта с той же тематикой и тем же доменом."
  • Network accessline 586
    "help": "https://yandex.ru/support/direct/ru/moderation/special-categories",
  • Network accessline 597
    "Либо написать в чат, Telegram, WhatsApp, МАКС или позвонить"       ],       "help": "https://yandex.ru/support/direct/ru/troubleshooting/error-ban",
  • Network accessline 598
    ],       "help": "https://yandex.ru/support/direct/ru/troubleshooting/error-ban",       "note": "Агентствам — формы обратной связи в партнёрском кабинете."
  • Network accessline 599
    "help": "https://yandex.ru/support/direct/ru/troubleshooting/error-ban",
  • Network accessline 611
    "Отправить скан через форму отправки документов"       ],       "help": "https://yandex.ru/support/direct/ru/moderation/letter-of-guarantee",
  • Network accessline 612
    ],       "help": "https://yandex.ru/support/direct/ru/moderation/letter-of-guarantee",       "note": "Указываются домены, а не адреса страниц. При редиректе — оба домена. Для физлица подпись заверяется нотариально."
  • Network accessline 613
    "help": "https://yandex.ru/support/direct/ru/moderation/letter-of-guarantee",
  • Network accessline 626
    "Пополнить счёт"       ],       "help": "https://yandex.ru/support/direct/ru/payments/payment-methods"
  • Network accessline 627
    ],       "help": "https://yandex.ru/support/direct/ru/payments/payment-methods"     },
  • Network accessline 628
    "help": "https://yandex.ru/support/direct/ru/payments/payment-methods"
  • Network accessline 641
    "Сохранить"       ],       "help": "https://yandex.ru/support/direct/ru/payments/shared-account",
  • Network accessline 642
    ],       "help": "https://yandex.ru/support/direct/ru/payments/shared-account",       "note": "Только прямые рекламодатели из России, расчёты в рублях, до 299 999 ₽ без НДС."
  • Network accessline 643
    "help": "https://yandex.ru/support/direct/ru/payments/shared-account",
  • Network accessline 655
    "Указать расход за календарную неделю"       ],       "help": "https://yandex.ru/support/direct/ru/payments/shared-account",
  • Network accessline 656
    ],       "help": "https://yandex.ru/support/direct/ru/payments/shared-account",       "note": "Общий лимит всех кампаний кабинета. Минимум, распределение расхода и последствия изменения суммы — в BUDGETS.md, раздел «Недельный бюджет кабинет
  • Network accessline 657
    "help": "https://yandex.ru/support/direct/ru/payments/shared-account",
  • Network accessline 669
    "Сохранить изменения"       ],       "help": "https://yandex.ru/support/direct/ru/payments/deferred-payment"
  • Network accessline 670
    ],       "help": "https://yandex.ru/support/direct/ru/payments/deferred-payment"     },
  • Network accessline 671
    "help": "https://yandex.ru/support/direct/ru/payments/deferred-payment"
  • Network accessline 683
    "Оплатить"       ],       "help": "https://yandex.ru/support/direct/ru/payments/deferred-payment",
  • Network accessline 684
    ],       "help": "https://yandex.ru/support/direct/ru/payments/deferred-payment",       "note": "Сумма, плательщик и способ оплаты должны совпадать со счётом. Обычное пополнение задолженность не гасит. Срок — 15 календарных дней."
  • Network accessline 685
    "help": "https://yandex.ru/support/direct/ru/payments/deferred-payment",
  • Network accessline 696
    "Сверить дату, сумму и номер платёжного поручения"       ],       "help": "https://yandex.ru/support/direct/ru/payments/search",
  • Network accessline 697
    ],       "help": "https://yandex.ru/support/direct/ru/payments/search",       "note": "Заявка на розыск платежа принимается не ранее чем через 2 рабочих дня; номер счёта указывается с буквенным префиксом («Б-» для России)."
  • Network accessline 698
    "help": "https://yandex.ru/support/direct/ru/payments/search",
  • Network accessline 709
    "Скачать документ или заказать повторную отправку оригиналов"       ],       "help": "https://yandex.ru/support/direct/ru/payments/docs",
  • Network accessline 710
    ],       "help": "https://yandex.ru/support/direct/ru/payments/docs",       "note": "Счёт на оплату лежит отдельно, в списке счетов (экран balance_invoices), и скачивается сразу после выставления. Акты, счета-фактуры и УПД — на странице док
  • Network accessline 711
    "help": "https://yandex.ru/support/direct/ru/payments/docs",
  • Network accessline 722
    "Открыть нужный счёт и скачать электронную копию"       ],       "help": "https://yandex.ru/support/direct/ru/payments/docs",
  • Network accessline 723
    ],       "help": "https://yandex.ru/support/direct/ru/payments/docs",       "note": "Электронная копия счёта доступна сразу после его выставления."
  • Network accessline 724
    "help": "https://yandex.ru/support/direct/ru/payments/docs",
  • Network accessline 736
    "Заказать"       ],       "help": "https://yandex.ru/support/direct/ru/payments/docs",
  • Network accessline 737
    ],       "help": "https://yandex.ru/support/direct/ru/payments/docs",       "note": "Формируется несколько часов; онлайн доступен только для плательщиков в ООО «ЯНДЕКС»."
  • Network accessline 738
    "help": "https://yandex.ru/support/direct/ru/payments/docs",
  • Network accessline 750
    "Приложить документы, если они требуются"       ],       "help": "https://yandex.ru/support/direct/ru/payments/refund",
  • Network accessline 751
    ],       "help": "https://yandex.ru/support/direct/ru/payments/refund",       "note": "Возврат по каждому счёту отдельно; бонусы не возвращаются, а аннулируются."
  • Network accessline 752
    "help": "https://yandex.ru/support/direct/ru/payments/refund",
  • Network accessline 765
    "Оплатить счёт в течение 30 дней"       ],       "help": "https://yandex.ru/support/direct/ru/payments/promocode"
  • Network accessline 766
    ],       "help": "https://yandex.ru/support/direct/ru/payments/promocode"     },
  • Network accessline 767
    "help": "https://yandex.ru/support/direct/ru/payments/promocode"
  • Network accessline 776
    "Бонусная программа"       ],       "help": "https://yandex.ru/support/direct/ru/payments/bonus"
  • Network accessline 777
    ],       "help": "https://yandex.ru/support/direct/ru/payments/bonus"     },
  • Network accessline 778
    "help": "https://yandex.ru/support/direct/ru/payments/bonus"
  • Network accessline 789
    "Сохранить"       ],       "help": "https://yandex.ru/support/direct/ru/technologies-and-services/ad-labelingl",
  • Network accessline 790
    ],       "help": "https://yandex.ru/support/direct/ru/technologies-and-services/ad-labelingl",       "note": "Без этих данных у клиентов агентств появляется статус «Показы остановлены из-за отсутствия данных для закона о маркировке». Опечат
  • Network accessline 791
    "help": "https://yandex.ru/support/direct/ru/technologies-and-services/ad-labelingl",
  • Network accessline 803
    "Добавить"       ],       "help": "https://yandex.ru/support/direct/ru/campaigns/representatives",
  • Network accessline 804
    ],       "help": "https://yandex.ru/support/direct/ru/campaigns/representatives",       "note": "Полный доступ выдаётся только логину, не зарегистрированному в Балансе. Добавляет только главный представитель."
  • Network accessline 805
    "help": "https://yandex.ru/support/direct/ru/campaigns/representatives",
  • Network accessline 818
    "Владелец подопечного аккаунта принимает приглашение в меню под своим логином"       ],       "help": "https://yandex.ru/support/direct/ru/campaigns/mcc"
  • Network accessline 819
    ],       "help": "https://yandex.ru/support/direct/ru/campaigns/mcc"     },
  • Network accessline 820
    "help": "https://yandex.ru/support/direct/ru/campaigns/mcc"
  • Network accessline 829
    "По всем кампаниям: Инструменты → История изменений → Подробнее"       ],       "help": "https://yandex.ru/support/direct/ru/campaigns/logs",
  • Network accessline 830
    ],       "help": "https://yandex.ru/support/direct/ru/campaigns/logs",       "note": "Автоматические остановки из-за нехватки денег или лимита бюджета в историю не попадают. Данные с 09.04.2018."
  • Network accessline 831
    "help": "https://yandex.ru/support/direct/ru/campaigns/logs",
  • Network accessline 842
    "Выбрать кампанию и формат файла"       ],       "help": "https://yandex.ru/support/direct/ru/alternative-interfaces/xls-interface",
  • Network accessline 843
    ],       "help": "https://yandex.ru/support/direct/ru/alternative-interfaces/xls-interface",       "note": "Расходует баллы аккаунта; неизрасходованные за сутки баллы сгорают."
  • Network accessline 844
    "help": "https://yandex.ru/support/direct/ru/alternative-interfaces/xls-interface",
  • Network accessline 854
    "Принять условия соглашения"       ],       "help": "https://yandex.ru/support/direct/ru/alternative-interfaces/api"
  • Network accessline 855
    ],       "help": "https://yandex.ru/support/direct/ru/alternative-interfaces/api"     },
  • Network accessline 856
    "help": "https://yandex.ru/support/direct/ru/alternative-interfaces/api"
  • Network accessline 868
    "При необходимости выгрузить в XLS"       ],       "help": "https://yandex.ru/support/direct/ru/impressions/budget-estimation"
  • Network accessline 869
    ],       "help": "https://yandex.ru/support/direct/ru/impressions/budget-estimation"     },
  • Network accessline 870
    "help": "https://yandex.ru/support/direct/ru/impressions/budget-estimation"
  • Network accessline 881
    "Добавить в минус-фразы, выбрав уровень «группа» или «кампания»"       ],       "help": "https://yandex.ru/support/direct/ru/statistics/library/search-queries"
  • Network accessline 882
    ],       "help": "https://yandex.ru/support/direct/ru/statistics/library/search-queries"     },
  • Network accessline 883
    "help": "https://yandex.ru/support/direct/ru/statistics/library/search-queries"
  • Network accessline 894
    "Сохранить"       ],       "help": "https://yandex.ru/support/direct/ru/statistics/library/platforms-report",
  • Network accessline 895
    ],       "help": "https://yandex.ru/support/direct/ru/statistics/library/platforms-report",       "note": "Альтернатива — параметры кампании → «Площадки, на которых запрещены показы»: до 1000 доменов для баннеров и до 100 доменов для видеоо
  • Network accessline 896
    "help": "https://yandex.ru/support/direct/ru/statistics/library/platforms-report",
  • Network accessline 908
    "Указать счётчик и ценность конверсий"       ],       "help": "https://yandex.ru/support/direct/ru/statistics/conversions",
  • Network accessline 909
    ],       "help": "https://yandex.ru/support/direct/ru/statistics/conversions",       "note": "Логину нужен доступ на редактирование счётчика Метрики."
  • Network accessline 910
    "help": "https://yandex.ru/support/direct/ru/statistics/conversions",
  • Network accessline 922
    "Указать процент выборки"       ],       "help": "https://yandex.ru/support/direct/ru/campaigns/experiments"
  • Network accessline 923
    ],       "help": "https://yandex.ru/support/direct/ru/campaigns/experiments"     },
  • Network accessline 924
    "help": "https://yandex.ru/support/direct/ru/campaigns/experiments"
  • Network accessline 935
    "При необходимости включить «Автоматически удалять UTM-метки»"       ],       "help": "https://yandex.ru/support/direct/ru/feeds/add",
  • Network accessline 936
    ],       "help": "https://yandex.ru/support/direct/ru/feeds/add",       "note": "До 50 фидов. По ссылке — до 512 МБ, робот обновляет раз в сутки; файлом — до 200 МБ."
  • Network accessline 937
    "help": "https://yandex.ru/support/direct/ru/feeds/add",
  • Network accessline 948
    "Ввести название и минус-фразы через запятую или дефис"       ],       "help": "https://yandex.ru/support/direct/ru/keywords/negative-keywords-library",
  • Network accessline 949
    ],       "help": "https://yandex.ru/support/direct/ru/keywords/negative-keywords-library",       "note": "До 30 наборов, 4096 символов в наборе, до 3 наборов на группу и на кампанию."
  • Network accessline 950
    "help": "https://yandex.ru/support/direct/ru/keywords/negative-keywords-library",
  • Network accessline 962
    "Настроить контент и сохранить"       ],       "help": "https://yandex.ru/support/direct/ru/efficiency/landing/about",
  • Network accessline 963
    ],       "help": "https://yandex.ru/support/direct/ru/efficiency/landing/about",       "note": "Путь зависит от интерфейса: экран landings_basic — для базового Директа, library — для Директ Про. Бесплатно, только для клиентов из России. Без
  • Network accessline 964
    "help": "https://yandex.ru/support/direct/ru/efficiency/landing/about",
  • Network accessline 976
    "Зарегистрировать нового клиента"       ],       "help": "https://yandex.ru/support/direct/ru/agencies/manage-clients",
  • Network accessline 977
    ],       "help": "https://yandex.ru/support/direct/ru/agencies/manage-clients",       "note": "Клиент создаётся как организация в Яндекс ID."
  • Network accessline 978
    "help": "https://yandex.ru/support/direct/ru/agencies/manage-clients",
  • Network accessline 990
    "Дождаться согласования второй стороной"       ],       "help": "https://yandex.ru/support/direct/ru/agencies/account-transfer",
  • Network accessline 991
    ],       "help": "https://yandex.ru/support/direct/ru/agencies/account-transfer",       "note": "Перенос выполняется только 1 числа следующего месяца, заявка подаётся не позднее чем за сутки."
  • Network accessline 992
    "help": "https://yandex.ru/support/direct/ru/agencies/account-transfer",
  • Network accessline 1003
    "Перейти в Директ Про"       ],       "help": "https://yandex.ru/support/direct/ru/interface-direct-pro",
  • Network accessline 1004
    ],       "help": "https://yandex.ru/support/direct/ru/interface-direct-pro",       "note": "Действие доступно только из базового Директа и необратимо: вернуться в базовый интерфейс после переключения нельзя. Пользователю Директ Про предлага
  • Network accessline 1005
    "help": "https://yandex.ru/support/direct/ru/interface-direct-pro",

plugins/yandex-direct/skills/yandex-direct/references/url_macros.md

  • Network accessline 49
    Схема разметки: [naming.md](naming.md). Источник: [динамические параметры Директа](https://yandex.ru/support/direct/ru/statistics/url-tags).

plugins/yandex-direct/skills/yandex-direct/scripts/account_budget.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/yandex-direct/skills/yandex-direct/scripts/accounts.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/yandex-direct/skills/yandex-direct/scripts/adgroups.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/yandex-direct/skills/yandex-direct/scripts/ads.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/yandex-direct/skills/yandex-direct/scripts/ads_generate.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/yandex-direct/skills/yandex-direct/scripts/ads_write.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/yandex-direct/skills/yandex-direct/scripts/audit_combinatorial.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/yandex-direct/skills/yandex-direct/scripts/bids.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/yandex-direct/skills/yandex-direct/scripts/cache.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/yandex-direct/skills/yandex-direct/scripts/campaign_dump.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/yandex-direct/skills/yandex-direct/scripts/campaign_write.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/yandex-direct/skills/yandex-direct/scripts/campaigns.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 148
    # Денежные поля стратегий и бюджетов. Перечень не угадан по названию, а собран # из схемы: `https://api.direct.yandex.com/v501/campaigns?wsdl`, структуры
  • Network accessline 149
    # из схемы: `https://api.direct.yandex.com/v501/campaigns?wsdl`, структуры

plugins/yandex-direct/skills/yandex-direct/scripts/cross_negative.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/yandex-direct/skills/yandex-direct/scripts/extensions.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/yandex-direct/skills/yandex-direct/scripts/feeds.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/yandex-direct/skills/yandex-direct/scripts/images.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/yandex-direct/skills/yandex-direct/scripts/keywords.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/yandex-direct/skills/yandex-direct/scripts/keywords_write.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 787
    Значение параметра само по себе человеку не говорит ничего: смысл у него     появляется в адресе, куда Директ его подставит. Незаполненный параметр     оставляет в адресе пустое место — из `https://site.ru/{param1}/` выходит
  • Network accessline 788
    появляется в адресе, куда Директ его подставит. Незаполненный параметр     оставляет в адресе пустое место — из `https://site.ru/{param1}/` выходит     `https://site.ru//`, ссылка выглядит правильной и ведёт не туда, — и видеть
  • Network accessline 789
    оставляет в адресе пустое место — из `https://site.ru/{param1}/` выходит
  • Network accessline 790
    `https://site.ru//`, ссылка выглядит правильной и ведёт не туда, — и видеть
  • Network accessline 870
    # Замечания движка идут той же строкой, что и адрес. Главное из             # них — незаполненный параметр: `https://site.ru/{param1}/`
  • Network accessline 871
    # них — незаполненный параметр: `https://site.ru/{param1}/`
  • Network accessline 872
    # превращается в `https://site.ru//`, и по одному только адресу

plugins/yandex-direct/skills/yandex-direct/scripts/lib/accounts.py

  • Executable scriptline 1
    Executable file
  • Network accessline 533
    note(f"В кэше разобрано {len(accounts.cabinets)} кабинетов из "                  f"{len(records)} — перечитываю список.")         accounts = cls.fetch(client, cache=store, warn=warn)
  • Network accessline 535
    accounts = cls.fetch(client, cache=store, warn=warn)
  • Network accessline 554
    @classmethod     def fetch(cls, client, *, cache=None, warn=None) -> "Accounts":
  • Network accessline 555
    def fetch(cls, client, *, cache=None, warn=None) -> "Accounts":

plugins/yandex-direct/skills/yandex-direct/scripts/lib/ad_extensions.py

  • Executable scriptline 1
    Executable file

plugins/yandex-direct/skills/yandex-direct/scripts/lib/cache.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 105
    [Credential-related source omitted]

plugins/yandex-direct/skills/yandex-direct/scripts/lib/combinatorial.py

  • Executable scriptline 1
    Executable file

plugins/yandex-direct/skills/yandex-direct/scripts/lib/config.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 11
    [Credential-related source omitted]
  • Possible obfuscationline 153
    # `<U+FEFF>YANDEX_DIRECT_TOKEN`, и «токен не задан» приходит на файл, где
  • Access to secretsline 201
    [Credential-related source omitted]
  • Network accessline 210
    Пробел и управляющий символ отвергаются здесь, а не при отправке: перенос     строки в заголовке http.client отклоняет сам, но общей ошибкой, из которой
  • Network accessline 211
    строки в заголовке http.client отклоняет сам, но общей ошибкой, из которой
  • Network accessline 223
    # http.client кодирует заголовки в latin-1, и кириллица падает
  • Access to secretsline 350
    [Credential-related source omitted]

plugins/yandex-direct/skills/yandex-direct/scripts/lib/constants.py

  • Executable scriptline 1
    Executable file

plugins/yandex-direct/skills/yandex-direct/scripts/lib/diff.py

  • Executable scriptline 1
    Executable file

plugins/yandex-direct/skills/yandex-direct/scripts/lib/direct.py

  • Executable scriptline 1
    Executable file
  • Network accessline 5
    import http.client
  • Network accessline 109
    def send(self, url: str, body: str, headers: dict):         request = urllib.request.Request(
  • Network accessline 110
    request = urllib.request.Request(
  • Network accessline 134
    try:                 raw = exc.read()             except (http.client.HTTPException, OSError) as broken:
  • Network accessline 136
    except (http.client.HTTPException, OSError) as broken:
  • Network accessline 147
    f"Директ не ответил за {self.timeout} с.", headers=received,             ) from None         except (urllib.error.URLError, http.client.HTTPException, OSError) as exc:
  • Network accessline 149
    except (urllib.error.URLError, http.client.HTTPException, OSError) as exc:

plugins/yandex-direct/skills/yandex-direct/scripts/lib/errors.py

  • Executable scriptline 1
    Executable file

plugins/yandex-direct/skills/yandex-direct/scripts/lib/extension_writes.py

  • Executable scriptline 1
    Executable file

plugins/yandex-direct/skills/yandex-direct/scripts/lib/feed_objects.py

  • Executable scriptline 1
    Executable file

plugins/yandex-direct/skills/yandex-direct/scripts/lib/incoming.py

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 14
    # с ней первый столбец зовётся `<U+FEFF>phrase`, разбор отказывает по незнакомому

plugins/yandex-direct/skills/yandex-direct/scripts/lib/money.py

  • Executable scriptline 1
    Executable file

plugins/yandex-direct/skills/yandex-direct/scripts/lib/objects.py

  • Executable scriptline 1
    Executable file

plugins/yandex-direct/skills/yandex-direct/scripts/lib/payload.py

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 22
    data = base64.b64decode(one, validate=True)

plugins/yandex-direct/skills/yandex-direct/scripts/lib/phrases.py

  • Executable scriptline 1
    Executable file

plugins/yandex-direct/skills/yandex-direct/scripts/lib/policy.py

  • Executable scriptline 1
    Executable file

plugins/yandex-direct/skills/yandex-direct/scripts/lib/preferences.py

  • Executable scriptline 1
    Executable file

plugins/yandex-direct/skills/yandex-direct/scripts/lib/preview_media.py

  • Executable scriptline 1
    Executable file
  • Network accessline 3
    import base64 import hashlib import http.client
  • Network accessline 4
    import hashlib import http.client import ipaddress
  • Network accessline 5
    import http.client import ipaddress import socket
  • Network accessline 69
    deadline = time.monotonic() + timeout     for family, socktype, protocol, _, target in resolved:         connection = socket.socket(family, socktype, protocol)
  • Network accessline 70
    for family, socktype, protocol, _, target in resolved:         connection = socket.socket(family, socktype, protocol)         try:
  • Network accessline 71
    connection = socket.socket(family, socktype, protocol)
  • Network accessline 98
    raise MediaError("Достигнут общий предел загрузки изображений: 50 МБ.")     parts = urlsplit(url)     connection = http.client.HTTPSConnection(parts.hostname, 443, timeout=TIMEOUT)
  • Network accessline 100
    connection = http.client.HTTPSConnection(parts.hostname, 443, timeout=TIMEOUT)
  • Network accessline 161
    except MediaError as error:         result = {"src": None, "error": str(error)}     except (OSError, ValueError, http.client.HTTPException):
  • Network accessline 162
    result = {"src": None, "error": str(error)}     except (OSError, ValueError, http.client.HTTPException):         result = {"src": None, "error": "Не удалось загрузить изображение: ошибка сети или адреса."}
  • Network accessline 163
    except (OSError, ValueError, http.client.HTTPException):

plugins/yandex-direct/skills/yandex-direct/scripts/lib/preview_source.py

  • Executable scriptline 1
    Executable file

plugins/yandex-direct/skills/yandex-direct/scripts/lib/protocol.py

  • Executable scriptline 1
    Executable file
  • Network accessline 178
    """`https://api.direct.yandex.com/json/v501/{сервис}/`."""
  • Network accessline 184
    def request(self, settings, *, service, method, params, account, use_operator_units):         key = service_key(service)         url = f"https://{settings.host}/json/{settings.version}/{key}/"
  • Network accessline 185
    key = service_key(service)         url = f"https://{settings.host}/json/{settings.version}/{key}/"         body = json.dumps(
  • Network accessline 186
    url = f"https://{settings.host}/json/{settings.version}/{key}/"
  • Network accessline 245
    """`https://api.direct.yandex.com/json/v501/reports` — TSV вместо JSON.
  • Network accessline 382
    """`https://api.direct.yandex.ru/live/v4/json/` и `/v4/json/`.
  • Network accessline 399
    def request(self, settings, *, service, method, params, account, use_operator_units):         url = f"https://{settings.host_v4}{self.path}"
  • Network accessline 400
    url = f"https://{settings.host_v4}{self.path}"

plugins/yandex-direct/skills/yandex-direct/scripts/lib/rendering.py

  • Executable scriptline 1
    Executable file

plugins/yandex-direct/skills/yandex-direct/scripts/lib/reports.py

  • Executable scriptline 1
    Executable file

plugins/yandex-direct/skills/yandex-direct/scripts/lib/responsive.py

  • Executable scriptline 1
    Executable file

plugins/yandex-direct/skills/yandex-direct/scripts/lib/retargeting_lists.py

  • Executable scriptline 1
    Executable file

plugins/yandex-direct/skills/yandex-direct/scripts/lib/templates.py

  • Executable scriptline 1
    Executable file
  • Network accessline 324
    Убираются **ограничители шаблонов**, а не все решётки подряд. Разница         видна на адресе: непарная решётка в нём — разделитель якоря, и         `https://site.ru/p#sec`, из которого её вычистили, ведёт на другую
  • Network accessline 325
    видна на адресе: непарная решётка в нём — разделитель якоря, и         `https://site.ru/p#sec`, из которого её вычистили, ведёт на другую         страницу. Своё же сообщение разбора говорит про непарную решётку в
  • Network accessline 326
    `https://site.ru/p#sec`, из которого её вычистили, ведёт на другую
  • Network accessline 618
    # принадлежат фразе, и «параметр не задан» — свойство пары «поле, фраза», а     # не поля. Незаполненный параметр в адресе оставляет пустое место — из     # `https://site.ru/{param1}/` получается `https://site.ru//`, и это ровно та
  • Network accessline 619
    # не поля. Незаполненный параметр в адресе оставляет пустое место — из     # `https://site.ru/{param1}/` получается `https://site.ru//`, и это ровно та     # ссылка, которая выглядит правильной и ведёт не туда.
  • Network accessline 620
    # `https://site.ru/{param1}/` получается `https://site.ru//`, и это ровно та

plugins/yandex-direct/skills/yandex-direct/scripts/lib/ui_links.py

  • Executable scriptline 1
    Executable file
  • Network accessline 18
    "stat-preset": "last30Days", "dim-filter": "CPC_AND_CPM",                        "status-filter": "ALL_EXCEPT_ARCHIVED"})     return f"https://direct.yandex.ru/dna/grid/campaigns?{query}"
  • Network accessline 20
    return f"https://direct.yandex.ru/dna/grid/campaigns?{query}"
  • Network accessline 29
    path = "campaigns-edit" if edit else "grid/groups"     query = urlencode({"ulogin": login, "campaigns-ids": campaign_id})     return f"https://direct.yandex.ru/dna/{path}?{query}"
  • Network accessline 31
    return f"https://direct.yandex.ru/dna/{path}?{query}"

plugins/yandex-direct/skills/yandex-direct/scripts/lib/writer.py

  • Executable scriptline 1
    Executable file
  • Network accessline 361
    if rule.get("requires_protocol_and_domain") and text and not _has_host(text):         said.append(             "нет протокола или домена: адрес начинается с `http://` либо "
  • Network accessline 362
    said.append(             "нет протокола или домена: адрес начинается с `http://` либо "             "`https://` и содержит домен")
  • Network accessline 363
    "нет протокола или домена: адрес начинается с `http://` либо "
  • Network accessline 364
    "`https://` и содержит домен")
  • Network accessline 1310
    return self.fetch(operation, operation.ids())
  • Network accessline 1312
    def fetch(self, operation: Operation, ids: list, *, attempted=None) -> dict:
  • Network accessline 1499
    continue             known = snapshots.get(operation) or {}             fresh = self.fetch(operation, operation.ids())
  • Network accessline 1500
    known = snapshots.get(operation) or {}             fresh = self.fetch(operation, operation.ids())             if operation.guard is not None:
  • Network accessline 1501
    fresh = self.fetch(operation, operation.ids())
  • Network accessline 1602
    try:             created = _created(operation, outcome) if operation.creating else {}             after = self.fetch(operation, list(created.values())
  • Network accessline 1603
    created = _created(operation, outcome) if operation.creating else {}             after = self.fetch(operation, list(created.values())                                if operation.creating
  • Network accessline 1604
    after = self.fetch(operation, list(created.values())
  • Network accessline 1696
    found = (self.lookup(operation, packet, attempted=began)                          if operation.creating                          else {key: [one] for key, one in self.fetch(
  • Network accessline 1697
    if operation.creating                          else {key: [one] for key, one in self.fetch(                              operation,
  • Network accessline 1698
    else {key: [one] for key, one in self.fetch(

plugins/yandex-direct/skills/yandex-direct/scripts/preview.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/yandex-direct/skills/yandex-direct/scripts/report.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 718
    def fetch(cache, client, reference, params, *, account, prefix, mode,
  • Network accessline 989
    entry, report, taxed = fetch(
  • Network accessline 1006
    earlier = build(reference, args, parser, campaign_id=campaign_id,                         chosen_period=second)         _, before, earlier_taxed = fetch(
  • Network accessline 1007
    chosen_period=second)         _, before, earlier_taxed = fetch(             cache, client, reference, earlier, account=login, prefix=prefix,
  • Network accessline 1008
    _, before, earlier_taxed = fetch(

plugins/yandex-direct/skills/yandex-direct/scripts/retargeting.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/yandex-direct/skills/yandex-direct/scripts/shopping.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/yandex-direct/skills/yandex-direct/scripts/tests/test_campaign_goals.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/yandex-direct/skills/yandex-direct/scripts/tests/test_campaign_placements.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/yandex-direct/skills/yandex-direct/scripts/tests/test_constants.py

  • Executable scriptline 1
    Executable file

plugins/yandex-direct/skills/yandex-direct/scripts/tests/test_extensions.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 42
    TitleSources={"Items": ["name"]}, TextSources={"Items": ["description"]})     else:         body["Href"] = "https://example.test/"
  • Network accessline 43
    else:         body["Href"] = "https://example.test/"         if kind == "RESPONSIVE_AD":
  • Network accessline 44
    body["Href"] = "https://example.test/"
  • Network accessline 69
    self.malformed_final_read = None         self.sitelinks = [{"Id": identifier, "Sitelinks": [             {"Title": title, "Href": f"https://example.test/{identifier}", "Description": "Описание"}]}
  • Network accessline 70
    self.sitelinks = [{"Id": identifier, "Sitelinks": [             {"Title": title, "Href": f"https://example.test/{identifier}", "Description": "Описание"}]}             for identifier, title in ((201, "Прежний раздел"), (202, "Новый раздел")
  • Network accessline 71
    {"Title": title, "Href": f"https://example.test/{identifier}", "Description": "Описание"}]}
  • Network accessline 212
    plan = report["binding_plan"][0]         self.assertEqual(plan["before"]["sitelinks"]["Sitelinks"][0]["Title"], "Прежний раздел")         self.assertEqual(plan["planned"]["sitelinks"]["Sitelinks"][0]["Href"], "https://example.test/202")
  • Network accessline 213
    self.assertEqual(plan["before"]["sitelinks"]["Sitelinks"][0]["Title"], "Прежний раздел")         self.assertEqual(plan["planned"]["sitelinks"]["Sitelinks"][0]["Href"], "https://example.test/202")         self.assertEqual(plan["before"]["cal
  • Network accessline 214
    self.assertEqual(plan["planned"]["sitelinks"]["Sitelinks"][0]["Href"], "https://example.test/202")

plugins/yandex-direct/skills/yandex-direct/scripts/tests/test_feeds.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 135
    self.context.enter_context(patch.object(writer, "AuditLog", partial(writer.AuditLog, root=self.root / "journal")))         self.context.enter_context(patch.object(writer.Writer, "_current_limits", lambda _: writer.Limits.load()))         se
  • Network accessline 136
    self.context.enter_context(patch.object(writer.Writer, "_current_limits", lambda _: writer.Limits.load()))         self.url = "https://example.test/catalog.xml"         self.item = {"Name": "Товары магазина", "BusinessType": "RETAIL", "Sour
  • Network accessline 137
    self.url = "https://example.test/catalog.xml"

plugins/yandex-direct/skills/yandex-direct/scripts/tests/test_payload.py

  • Executable scriptline 1
    Executable file

plugins/yandex-direct/skills/yandex-direct/scripts/tests/test_report_attribution.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/yandex-direct/skills/yandex-direct/scripts/tests/test_retargeting.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/yandex-direct/skills/yandex-direct/scripts/tests/test_shopping.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 54
    self.feeds = [{"Id": FEED, "Name": "Тестовый фид", "BusinessType": "RETAIL",                        "SourceType": "URL", "Status": "DONE",                        "UrlFeed": {"Url": "https://example.test/feed.xml", "RemoveUtmTags": "NO"},
  • Network accessline 55
    "SourceType": "URL", "Status": "DONE",                        "UrlFeed": {"Url": "https://example.test/feed.xml", "RemoveUtmTags": "NO"},                        "TitleAndTextSources": {"Items": ["name", "description"]}}]
  • Network accessline 56
    "UrlFeed": {"Url": "https://example.test/feed.xml", "RemoveUtmTags": "NO"},

plugins/yandex-direct/skills/yandex-direct/scripts/whoami.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 10
    import argparse import http.client
  • Network accessline 11
    import http.client
  • Network accessline 93
    url = f"https://{settings.host}/json/{settings.version}/{service}/"
  • Network accessline 108
    request = urllib.request.Request(url, data=body, headers=headers, method="POST")
  • Network accessline 117
    try:             raw = exc.read().decode("utf-8", "replace")         except (http.client.HTTPException, OSError) as broken:
  • Network accessline 119
    except (http.client.HTTPException, OSError) as broken:
  • Network accessline 131
    f"{settings.host} не ответил за {TIMEOUT} с. Повторите позже."         ) from None     except (urllib.error.URLError, http.client.HTTPException, OSError) as exc:
  • Network accessline 133
    except (urllib.error.URLError, http.client.HTTPException, OSError) as exc:

plugins/yandex-metrika/skills/yandex-metrika/.gitignore

  • Access to secretsline 1
    [Credential-related source omitted]

plugins/yandex-metrika/skills/yandex-metrika/config/README.md

  • Network accessline 5
    1. Перейдите на https://oauth.yandex.ru/client/new
  • Network accessline 15
    Подробнее: https://yandex.ru/dev/id/doc/ru/register-client
  • Network accessline 22
    https://oauth.yandex.ru/authorize?response_type=token&client_id=ВАШ_CLIENT_ID
  • Network accessline 27
    [Credential-related source omitted]
  • Access to secretsline 27
    [Credential-related source omitted]
  • Access to secretsline 30
    [Credential-related source omitted]
  • Access to secretsline 39
    [Credential-related source omitted]
  • Access to secretsline 40
    [Credential-related source omitted]
  • Network accessline 73
    - Metrika API: https://yandex.ru/dev/metrika/ru/
  • Network accessline 74
    - Reporting API: https://yandex.ru/dev/metrika/ru/stat/
  • Network accessline 75
    - OAuth: https://yandex.ru/dev/id/doc/ru/

plugins/yandex-metrika/skills/yandex-metrika/references/ACCESS.md

  • Network accessline 63
    Поэтому отсутствие результата у `get` означает именно отсутствие прямого разрешения. Справка: [доступ к счётчику](https://yandex.ru/support/metrica/ru/general/access)
  • Network accessline 64
    разрешения. Справка: [доступ к счётчику](https://yandex.ru/support/metrica/ru/general/access)
  • Network accessline 65
    и [список разрешений API](https://yandex.ru/dev/metrika/ru/management/openapi/grant/grants).

plugins/yandex-metrika/skills/yandex-metrika/references/SEGMENTS.md

  • Network accessline 18
    Последние два условия важно проверять прежде, чем повторно менять доступы: сегмент может быть доступен кабинету, но ещё не готов к использованию. Подробнее: [условия формирования сегментов аудитории](https://yandex.ru/support/direct/ru/impr
  • Network accessline 19
    сегмент может быть доступен кабинету, но ещё не готов к использованию. Подробнее: [условия формирования сегментов аудитории](https://yandex.ru/support/direct/ru/impression-criteria/retargeting-lists) и [сегмент Метрики для ретаргетинга](htt
  • Network accessline 20
    [условия формирования сегментов аудитории](https://yandex.ru/support/direct/ru/impression-criteria/retargeting-lists)
  • Network accessline 21
    и [сегмент Метрики для ретаргетинга](https://yandex.ru/support/metrica/ru/general/segmentation-retargeting).
  • Network accessline 61
    гарантирует их повторное вычисление внутри сохранённого выражения. Перед производственным использованием проверь переход сегмента через границу суток. См. [параметры периода отчёта](https://yandex.ru/dev/metrika/ru/stat/openapi/bytime)
  • Network accessline 62
    производственным использованием проверь переход сегмента через границу суток. См. [параметры периода отчёта](https://yandex.ru/dev/metrika/ru/stat/openapi/bytime) и [список группировок](https://yandex.ru/dev/metrika/ru/stat/attrandmetr/dim_
  • Network accessline 63
    См. [параметры периода отчёта](https://yandex.ru/dev/metrika/ru/stat/openapi/bytime)
  • Network accessline 64
    и [список группировок](https://yandex.ru/dev/metrika/ru/stat/attrandmetr/dim_all).
  • Network accessline 103
    Синтаксис и примеры: [сегментация в API отчётов](https://yandex.ru/dev/metrika/ru/stat/segmentation).
  • Network accessline 104
    Различия способов сохранения: [сегментация данных](https://yandex.ru/support/metrica/ru/general/segmentation).

plugins/yandex-metrika/skills/yandex-metrika/scripts/common.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 8
    [Credential-related source omitted]
  • Network accessline 11
    METRIKA_API="https://api-metrika.yandex.net"
  • Access to secretsline 20
    [Credential-related source omitted]
  • Access to secretsline 22
    [Credential-related source omitted]
  • Access to secretsline 24
    [Credential-related source omitted]
  • Access to secretsline 29
    [Credential-related source omitted]
  • Access to secretsline 30
    [Credential-related source omitted]
  • Access to secretsline 35
    [Credential-related source omitted]
  • Access to secretsline 38
    [Credential-related source omitted]
  • Access to secretsline 40
    [Credential-related source omitted]
  • Access to secretsline 43
    [Credential-related source omitted]
  • Network accessline 46
    # write_metrika_headers <file> [json] # The OAuth token must not appear in curl argv. The caller creates a private
  • Network accessline 47
    # The OAuth token must not appear in curl argv. The caller creates a private
  • Access to secretsline 53
    [Credential-related source omitted]
  • Network accessline 110
    _mg_path="$1"     shift     _mg_url="${METRIKA_API}${_mg_path}"
  • Network accessline 111
    shift     _mg_url="${METRIKA_API}${_mg_path}"     _mg_headers=$(mktemp "${METRIKA_TMPDIR}/metrika_headers.XXXXXX")
  • Network accessline 112
    _mg_url="${METRIKA_API}${_mg_path}"
  • Network accessline 117
    [Credential-related source omitted]
  • Network accessline 118
    -H "@$_mg_auth_headers" \         "$@" \         "$_mg_url") || {
  • Network accessline 119
    "$@" \         "$_mg_url") || {         rm -f "$_mg_headers" "$_mg_auth_headers"
  • Network accessline 120
    "$_mg_url") || {         rm -f "$_mg_headers" "$_mg_auth_headers"         echo "Error: curl failed for $_mg_url" >&2
  • Dangerous shell operationline 121
    rm -f "$_mg_headers" "$_mg_auth_headers"
  • Network accessline 121
    rm -f "$_mg_headers" "$_mg_auth_headers"         echo "Error: curl failed for $_mg_url" >&2         return 1
  • Network accessline 122
    echo "Error: curl failed for $_mg_url" >&2
  • Dangerous shell operationline 130
    rm -f "$_mg_headers" "$_mg_auth_headers"
  • Network accessline 147
    if [ -n "$_mg_status" ] && [ "$_mg_status" -ge 400 ] 2>/dev/null; then         rm -f "$_mg_headers" "$_mg_auth_headers"         echo "Error: HTTP $_mg_status from $_mg_url" >&2
  • Dangerous shell operationline 148
    rm -f "$_mg_headers" "$_mg_auth_headers"
  • Network accessline 148
    rm -f "$_mg_headers" "$_mg_auth_headers"         echo "Error: HTTP $_mg_status from $_mg_url" >&2         echo "$_mg_body" >&2
  • Network accessline 149
    echo "Error: HTTP $_mg_status from $_mg_url" >&2
  • Dangerous shell operationline 154
    rm -f "$_mg_headers" "$_mg_auth_headers"
  • Network accessline 162
    _mgc_output="$2"     shift 2     _mgc_url="${METRIKA_API}${_mgc_path}"
  • Network accessline 163
    shift 2     _mgc_url="${METRIKA_API}${_mgc_path}"     _mgc_headers=$(mktemp "${METRIKA_TMPDIR}/metrika_headers.XXXXXX")
  • Network accessline 164
    _mgc_url="${METRIKA_API}${_mgc_path}"
  • Network accessline 169
    [Credential-related source omitted]
  • Network accessline 171
    -o "$_mgc_output" \         "$@" \         "$_mgc_url" || {
  • Network accessline 172
    "$@" \         "$_mgc_url" || {         rm -f "$_mgc_headers" "$_mgc_auth_headers"
  • Network accessline 173
    "$_mgc_url" || {         rm -f "$_mgc_headers" "$_mgc_auth_headers"         echo "Error: curl failed for $_mgc_url" >&2
  • Dangerous shell operationline 174
    rm -f "$_mgc_headers" "$_mgc_auth_headers"
  • Network accessline 174
    rm -f "$_mgc_headers" "$_mgc_auth_headers"         echo "Error: curl failed for $_mgc_url" >&2         return 1
  • Network accessline 175
    echo "Error: curl failed for $_mgc_url" >&2
  • Dangerous shell operationline 182
    rm -f "$_mgc_headers" "$_mgc_auth_headers"
  • Dangerous shell operationline 197
    rm -f "$_mgc_headers" "$_mgc_auth_headers"
  • Dangerous shell operationline 203
    rm -f "$_mgc_headers" "$_mgc_auth_headers"
  • Dangerous shell operationline 220
    rm -f "$_mmg_response"
  • Dangerous shell operationline 232
    rm -f "$_mmg_response"
  • Dangerous shell operationline 236
    rm -f "$_mmg_response"
  • Network accessline 262
    _mmr_url="${METRIKA_API}${_mmr_path}"
  • Network accessline 272
    [Credential-related source omitted]
  • Network accessline 273
    [Credential-related source omitted]
  • Network accessline 275
    --data-binary "@$_mmr_body_file" \             "$@" \             "$_mmr_url") || {
  • Network accessline 276
    "$@" \             "$_mmr_url") || {             _mmr_curl_status=$?
  • Network accessline 277
    "$_mmr_url") || {
  • Network accessline 278
    _mmr_curl_status=$?             rm -f "$_mmr_headers" "$_mmr_auth_headers"             echo "Ошибка curl при запросе $_mmr_method $_mmr_url" >&2
  • Dangerous shell operationline 279
    rm -f "$_mmr_headers" "$_mmr_auth_headers"
  • Network accessline 279
    rm -f "$_mmr_headers" "$_mmr_auth_headers"             echo "Ошибка curl при запросе $_mmr_method $_mmr_url" >&2             if [ "$_mmr_method" != "GET" ]; then
  • Network accessline 280
    echo "Ошибка curl при запросе $_mmr_method $_mmr_url" >&2
  • Network accessline 285
    [Credential-related source omitted]
  • Network accessline 286
    [Credential-related source omitted]
  • Network accessline 287
    [Credential-related source omitted]
  • Network accessline 288
    -H "@$_mmr_auth_headers" \             "$@" \             "$_mmr_url") || {
  • Network accessline 289
    "$@" \             "$_mmr_url") || {             _mmr_curl_status=$?
  • Network accessline 290
    "$_mmr_url") || {
  • Network accessline 291
    _mmr_curl_status=$?             rm -f "$_mmr_headers" "$_mmr_auth_headers"             echo "Ошибка curl при запросе $_mmr_method $_mmr_url" >&2
  • Dangerous shell operationline 292
    rm -f "$_mmr_headers" "$_mmr_auth_headers"
  • Network accessline 292
    rm -f "$_mmr_headers" "$_mmr_auth_headers"             echo "Ошибка curl при запросе $_mmr_method $_mmr_url" >&2             if [ "$_mmr_method" != "GET" ]; then
  • Network accessline 293
    echo "Ошибка curl при запросе $_mmr_method $_mmr_url" >&2
  • Dangerous shell operationline 302
    rm -f "$_mmr_headers" "$_mmr_auth_headers"
  • Network accessline 317
    return 1         fi         echo "Ошибка HTTP $METRIKA_HTTP_STATUS: $_mmr_method $_mmr_url" >&2
  • Network accessline 318
    fi         echo "Ошибка HTTP $METRIKA_HTTP_STATUS: $_mmr_method $_mmr_url" >&2         printf '%s\n' "$_mmr_body" >&2
  • Network accessline 319
    echo "Ошибка HTTP $METRIKA_HTTP_STATUS: $_mmr_method $_mmr_url" >&2

plugins/yandex-metrika/skills/yandex-metrika/scripts/comparison.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 92
    trap 'rm -f "$TMPFILE"' EXIT

plugins/yandex-metrika/skills/yandex-metrika/scripts/conversions.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 132
    trap 'rm -rf "$CONV_TMPDIR"' EXIT
  • Dangerous shell operationline 195
    rm -f "$_cache_tmp"

plugins/yandex-metrika/skills/yandex-metrika/scripts/counter_info.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 39
    trap 'rm -f "$TMPFILE"' EXIT

plugins/yandex-metrika/skills/yandex-metrika/scripts/counters.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 43
    trap 'rm -f "$TMPFILE"' EXIT
  • Dangerous shell operationline 77
    rm -f "$_flat"

plugins/yandex-metrika/skills/yandex-metrika/scripts/direct_clients.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 55
    trap 'rm -f "$TMPFILE"' EXIT

plugins/yandex-metrika/skills/yandex-metrika/scripts/direct_costs.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 73
    rm -f "${METRIKA_TMPDIR}/metrika_logins_$$.txt"
  • Dangerous shell operationline 117
    trap 'rm -f "$TMPFILE"' EXIT

plugins/yandex-metrika/skills/yandex-metrika/scripts/ecommerce.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 80
    trap 'rm -f "$TMPFILE"' EXIT

plugins/yandex-metrika/skills/yandex-metrika/scripts/goals.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 47
    trap 'rm -f "$TMPFILE" "$CACHE_TSV_TMP"' EXIT

plugins/yandex-metrika/skills/yandex-metrika/scripts/grants.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 56
    trap 'rm -f "$TMP_BODY" "$TMP_RESPONSE" "$TMP_TSV"' EXIT

plugins/yandex-metrika/skills/yandex-metrika/scripts/management_json.py

  • Executable scriptline 1
    #!/usr/bin/env python3

plugins/yandex-metrika/skills/yandex-metrika/scripts/search_engines.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 53
    trap 'rm -f "$TMPFILE"' EXIT

plugins/yandex-metrika/skills/yandex-metrika/scripts/segments.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 53
    trap 'rm -f "$TMP_BODY" "$TMP_RESPONSE" "$TMP_TSV"' EXIT

plugins/yandex-metrika/skills/yandex-metrika/scripts/tests/test_conversions.py

  • Executable scriptline 1
    #!/usr/bin/env -S uv run --script
  • Network accessline 58
    [Credential-related source omitted]
  • Network accessline 59
    raise AssertionError("OAuth token must not be passed in curl argv")
  • Network accessline 62
    if argument == "-H" and args[index + 1].startswith("@")]     if not header_files:         raise AssertionError("curl must read private headers from a file")
  • Network accessline 63
    [Credential-related source omitted]
  • Network accessline 64
    raise AssertionError("curl must read private headers from a file")
  • Access to secretsline 90
    [Credential-related source omitted]
  • Access to secretsline 98
    [Credential-related source omitted]
  • Access to secretsline 105
    [Credential-related source omitted]
  • Access to secretsline 127
    [Credential-related source omitted]
  • Access to secretsline 161
    [Credential-related source omitted]
  • Access to secretsline 162
    [Credential-related source omitted]
  • Network accessline 174
    self.assertIsNotNone(executable, f"Required shell command is missing: {command}")             (bin_dir / command).symlink_to(executable)         curl = bin_dir / "curl"
  • Network accessline 175
    (bin_dir / command).symlink_to(executable)         curl = bin_dir / "curl"         curl.write_text(f"#!/bin/sh\nexec {shlex.quote(sys.executable)} "
  • Network accessline 176
    curl = bin_dir / "curl"
  • Network accessline 177
    curl.write_text(f"#!/bin/sh\nexec {shlex.quote(sys.executable)} "                         f"{shlex.quote(str(Path(__file__).resolve()))} --fake-curl \"$@\"\n")         curl.chmod(0o755)
  • Network accessline 178
    f"{shlex.quote(str(Path(__file__).resolve()))} --fake-curl \"$@\"\n")
  • Access to secretsline 180
    [Credential-related source omitted]

plugins/yandex-metrika/skills/yandex-metrika/scripts/tests/test_management.py

  • Executable scriptline 1
    #!/usr/bin/env -S uv run --script
  • Network accessline 23
    [Credential-related source omitted]
  • Network accessline 24
    [Credential-related source omitted]
  • Network accessline 25
    raise AssertionError("OAuth token must not be passed in curl argv")
  • Network accessline 28
    if argument == "-H" and args[index + 1].startswith("@")]     if not header_files:         raise AssertionError("curl must read private headers from a file")
  • Network accessline 29
    [Credential-related source omitted]
  • Network accessline 30
    raise AssertionError("curl must read private headers from a file")
  • Access to secretsline 62
    [Credential-related source omitted]
  • Access to secretsline 67
    [Credential-related source omitted]
  • Access to secretsline 69
    [Credential-related source omitted]
  • Access to secretsline 73
    [Credential-related source omitted]
  • Access to secretsline 87
    [Credential-related source omitted]
  • Access to secretsline 88
    [Credential-related source omitted]
  • Access to secretsline 109
    [Credential-related source omitted]
  • Access to secretsline 110
    [Credential-related source omitted]
  • Access to secretsline 151
    [Credential-related source omitted]
  • Access to secretsline 152
    [Credential-related source omitted]
  • Access to secretsline 177
    [Credential-related source omitted]
  • Access to secretsline 178
    [Credential-related source omitted]
  • Network accessline 190
    (bin_dir / command).symlink_to(executable)         (bin_dir / "python3").symlink_to(sys.executable)         curl = bin_dir / "curl"
  • Network accessline 191
    (bin_dir / "python3").symlink_to(sys.executable)         curl = bin_dir / "curl"         curl.write_text(f"#!/bin/sh\nexec {shlex.quote(sys.executable)} "
  • Network accessline 192
    curl = bin_dir / "curl"
  • Network accessline 193
    curl.write_text(f"#!/bin/sh\nexec {shlex.quote(sys.executable)} "                         f"{shlex.quote(str(Path(__file__).resolve()))} --fake-curl \"$@\"\n")         curl.chmod(0o755)
  • Network accessline 194
    f"{shlex.quote(str(Path(__file__).resolve()))} --fake-curl \"$@\"\n")
  • Access to secretsline 196
    [Credential-related source omitted]
  • Access to secretsline 472
    [Credential-related source omitted]

plugins/yandex-metrika/skills/yandex-metrika/scripts/traffic_summary.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 51
    trap 'rm -f "$TMPFILE"' EXIT

plugins/yandex-metrika/skills/yandex-metrika/scripts/utm_report.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 50
    trap 'rm -f "$TMPFILE"' EXIT

plugins/yandex-search-api/skills/yandex-search-api/.gitignore

  • Access to secretsline 3
    [Credential-related source omitted]

plugins/yandex-search-api/skills/yandex-search-api/SKILL.md

  • Access to secretsline 59
    [Credential-related source omitted]
  • Network accessline 255
    Актуальный прайс: https://aistudio.yandex.ru/docs/ru/search-api/pricing
  • Network accessline 256
    https://aistudio.yandex.ru/docs/ru/search-api/pricing
  • Network accessline 310
    1. Сэндвич-дымоходы купить в Москве — Леруа Мерлен              https://leroymerlin.ru/...
  • Network accessline 311
    https://leroymerlin.ru/...
  • Network accessline 314
    2. Дымоходы сэндвич — купить в интернет-магазине              https://...
  • Network accessline 315
    https://...

plugins/yandex-search-api/skills/yandex-search-api/config/.env.example

  • Access to secretsline 3
    [Credential-related source omitted]

plugins/yandex-search-api/skills/yandex-search-api/config/README.md

  • Network accessline 12
    1. Откройте https://console.yandex.cloud/
  • Access to secretsline 106
    [Credential-related source omitted]
  • Network accessline 123
    - Бесплатный тариф: есть (проверяйте актуальные лимиты) - Подробнее: https://yandex.cloud/ru/docs/search-api/pricing
  • Network accessline 124
    - Подробнее: https://yandex.cloud/ru/docs/search-api/pricing
  • Network accessline 171
    1. Откройте [консоль Yandex Cloud](https://console.yandex.cloud/), выберите каталог → Identity and Access Management → Сервисные аккаунты → нужный аккаунт → API-ключи.
  • Access to secretsline 178
    [Credential-related source omitted]
  • Access to secretsline 179
    [Credential-related source omitted]
  • Access to secretsline 182
    [Credential-related source omitted]
  • Access to secretsline 183
    [Credential-related source omitted]
  • Access to secretsline 184
    [Credential-related source omitted]

plugins/yandex-search-api/skills/yandex-search-api/references/SMART_SNIPPETS.md

  • Network accessline 6
    Официальная документация: [Получение инфоконтекстов](https://aistudio.yandex.ru/docs/ru/search-api/operations/smart-snippets),
  • Network accessline 7
    [Получение инфоконтекстов](https://aistudio.yandex.ru/docs/ru/search-api/operations/smart-snippets),
  • Network accessline 8
    [Текстовый поиск](https://aistudio.yandex.ru/docs/ru/search-api/concepts/web-search).
  • Network accessline 121
    "docs": [     {       "FullUrl": "https://yandex.cloud/",
  • Network accessline 122
    {       "FullUrl": "https://yandex.cloud/",       "rich_data": {
  • Network accessline 123
    "FullUrl": "https://yandex.cloud/",
  • Network accessline 126
    "DocumentTitle": "Yandex Cloud",         "Description": "Облачная платформа Yandex Cloud",         "FullUrl": "https://yandex.cloud/",
  • Network accessline 127
    "Description": "Облачная платформа Yandex Cloud",         "FullUrl": "https://yandex.cloud/",         "ForcedShortUrl": "yandex.cloud",
  • Network accessline 128
    "FullUrl": "https://yandex.cloud/",
  • Network accessline 239
    Актуальный прайс: [Правила тарификации Yandex Search API](https://aistudio.yandex.ru/docs/ru/search-api/pricing).
  • Network accessline 240
    [Правила тарификации Yandex Search API](https://aistudio.yandex.ru/docs/ru/search-api/pricing).

plugins/yandex-search-api/skills/yandex-search-api/scripts/common.sh

  • Executable scriptline 1
    #!/bin/sh
  • Network accessline 15
    export PYTHONUTF8=1 SEARCH_API_URL="https://searchapi.api.cloud.yandex.net"
  • Network accessline 16
    SEARCH_API_URL="https://searchapi.api.cloud.yandex.net"
  • Network accessline 17
    IAM_API_URL="https://iam.api.cloud.yandex.net/iam/v1/tokens"
  • Network accessline 18
    OPERATION_API_URL="https://operation.api.cloud.yandex.net/operations"
  • Network accessline 71
    check_curl() {     if ! command -v curl >/dev/null 2>&1; then
  • Network accessline 72
    if ! command -v curl >/dev/null 2>&1; then
  • Network accessline 73
    echo "Error: curl is required but not found." >&2
  • Access to secretsline 87
    [Credential-related source omitted]
  • Access to secretsline 88
    [Credential-related source omitted]
  • Access to secretsline 90
    [Credential-related source omitted]
  • Access to secretsline 111
    [Credential-related source omitted]
  • Access to secretsline 114
    [Credential-related source omitted]
  • Access to secretsline 121
    [Credential-related source omitted]
  • Access to secretsline 139
    [Credential-related source omitted]
  • Access to secretsline 140
    [Credential-related source omitted]
  • Access to secretsline 147
    [Credential-related source omitted]
  • Access to secretsline 151
    [Credential-related source omitted]
  • Network accessline 157
    # Print one complete Authorization header. Callers must pass it directly to # curl and must never log the result.
  • Network accessline 158
    # curl and must never log the result.
  • Access to secretsline 163
    [Credential-related source omitted]
  • Access to secretsline 164
    [Credential-related source omitted]
  • Access to secretsline 165
    [Credential-related source omitted]
  • Access to secretsline 168
    [Credential-related source omitted]
  • Access to secretsline 217
    [Credential-related source omitted]
  • Possible obfuscationline 234
    sys.stdout.buffer.write(base64.b64decode(data))
  • Network accessline 285
    # Build curl args via set -- to avoid word splitting on spaces in headers
  • Network accessline 286
    set -- curl -s -w '%{http_code}' -o "$_resp_file" -D "$_header_file" -X "$_method"
  • Dangerous shell operationline 300
    rm -rf "$_tmpdir_http" "$_hr_tmpdir"
  • Dangerous shell operationline 305
    rm -rf "$_tmpdir_http" "$_hr_tmpdir"
  • Dangerous shell operationline 314
    rm -rf "$_tmpdir_http" "$_hr_tmpdir"
  • Dangerous shell operationline 326
    rm -rf "$_tmpdir_http"
  • Dangerous shell operationline 331
    rm -rf "$_tmpdir_http" "$_hr_tmpdir"
  • Dangerous shell operationline 336
    rm -rf "$_hr_tmpdir"
  • Dangerous shell operationline 363
    rm -f "$CACHE_DIR/iam_token.json"
  • Access to secretsline 394
    [Credential-related source omitted]
  • Dangerous shell operationline 408
    rm -f "$_cache_file"
  • Access to secretsline 424
    [Credential-related source omitted]
  • Access to secretsline 425
    [Credential-related source omitted]
  • Access to secretsline 461
    [Credential-related source omitted]
  • Access to secretsline 470
    [Credential-related source omitted]
  • Access to secretsline 476
    [Credential-related source omitted]
  • Access to secretsline 498
    [Credential-related source omitted]
  • Access to secretsline 595
    [Credential-related source omitted]
  • Dangerous shell operationline 621
    rm -f "$CACHE_DIR/results/$1.md"
  • Access to secretsline 638
    [Credential-related source omitted]
  • Access to secretsline 644
    [Credential-related source omitted]
  • Access to secretsline 645
    [Credential-related source omitted]
  • Access to secretsline 685
    [Credential-related source omitted]
  • Access to secretsline 715
    [Credential-related source omitted]
  • Access to secretsline 718
    [Credential-related source omitted]
  • Access to secretsline 719
    [Credential-related source omitted]
  • Access to secretsline 720
    [Credential-related source omitted]
  • Access to secretsline 734
    [Credential-related source omitted]
  • Access to secretsline 737
    [Credential-related source omitted]

plugins/yandex-search-api/skills/yandex-search-api/scripts/iam_token_get.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 47
    trap 'rm -rf "$SECURE_TMP"' EXIT INT TERM
  • Access to secretsline 60
    [Credential-related source omitted]
  • Access to secretsline 61
    [Credential-related source omitted]
  • Network accessline 81
    payload = json.dumps({     "iss": sa_id,     "aud": "https://iam.api.cloud.yandex.net/iam/v1/tokens",
  • Network accessline 82
    "iss": sa_id,     "aud": "https://iam.api.cloud.yandex.net/iam/v1/tokens",     "iat": now,
  • Network accessline 83
    "aud": "https://iam.api.cloud.yandex.net/iam/v1/tokens",
  • Access to secretsline 156
    [Credential-related source omitted]
  • Access to secretsline 163
    [Credential-related source omitted]

plugins/yandex-search-api/skills/yandex-search-api/scripts/regions_tree.sh

  • Executable scriptline 1
    #!/bin/sh

plugins/yandex-search-api/skills/yandex-search-api/scripts/search_region.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 70
    [Credential-related source omitted]
  • Access to secretsline 71
    [Credential-related source omitted]

plugins/yandex-search-api/skills/yandex-search-api/scripts/tests/fixtures/broken_response.xml

  • Network accessline 6
    <group>           <doc id="Z1">             <url>https://example.com/a</url>
  • Network accessline 8
    <url>https://example.com/a</url>

plugins/yandex-search-api/skills/yandex-search-api/scripts/tests/fixtures/infocontext_live.json

  • Network accessline 2
    "docs": [     {       "FullUrl": "https://www.nalog.gov.ru/rn77/news/activities_fts/16001234/",
  • Network accessline 3
    {       "FullUrl": "https://www.nalog.gov.ru/rn77/news/activities_fts/16001234/",       "rich_data": {
  • Network accessline 4
    "FullUrl": "https://www.nalog.gov.ru/rn77/news/activities_fts/16001234/",
  • Network accessline 7
    "DocumentTitle": "Об изменениях в главе 26.2 НК РФ",         "Description": "ФНС России разъясняет порядок уплаты НДС на УСН",         "FullUrl": "https://www.nalog.gov.ru/rn77/news/activities_fts/16001234/",
  • Network accessline 8
    "Description": "ФНС России разъясняет порядок уплаты НДС на УСН",         "FullUrl": "https://www.nalog.gov.ru/rn77/news/activities_fts/16001234/",         "ForcedShortUrl": "nalog.gov.ru",
  • Network accessline 9
    "FullUrl": "https://www.nalog.gov.ru/rn77/news/activities_fts/16001234/",
  • Network accessline 17
    },     {       "FullUrl": "https://www.klerk.ru/buh/articles/600123/",
  • Network accessline 18
    {       "FullUrl": "https://www.klerk.ru/buh/articles/600123/",       "rich_data": {
  • Network accessline 19
    "FullUrl": "https://www.klerk.ru/buh/articles/600123/",
  • Network accessline 22
    "DocumentTitle": "НДС при УСН с 2026 года: таблица лимитов",         "Description": "",         "FullUrl": "https://www.klerk.ru/buh/articles/600123/",
  • Network accessline 23
    "Description": "",         "FullUrl": "https://www.klerk.ru/buh/articles/600123/",         "ForcedShortUrl": "klerk.ru",
  • Network accessline 24
    "FullUrl": "https://www.klerk.ru/buh/articles/600123/",
  • Network accessline 30
    },     {       "FullUrl": "https://its.1c.ru/db/answers/content/900123/",
  • Network accessline 31
    {       "FullUrl": "https://its.1c.ru/db/answers/content/900123/",       "rich_data": {
  • Network accessline 32
    "FullUrl": "https://its.1c.ru/db/answers/content/900123/",
  • Network accessline 35
    "DocumentTitle": "Ставки НДС для упрощенцев",         "Description": "Материал доступен по подписке",         "FullUrl": "https://its.1c.ru/db/answers/content/900123/",
  • Network accessline 36
    "Description": "Материал доступен по подписке",         "FullUrl": "https://its.1c.ru/db/answers/content/900123/",         "ForcedShortUrl": "its.1c.ru",
  • Network accessline 37
    "FullUrl": "https://its.1c.ru/db/answers/content/900123/",

plugins/yandex-search-api/skills/yandex-search-api/scripts/tests/fixtures/infocontext_response.json

  • Network accessline 4
    "Num": 1,       "DocumentTitle": "Yandex Cloud",       "FullUrl": "https://yandex.cloud/ru/docs",
  • Network accessline 5
    "DocumentTitle": "Yandex Cloud",       "FullUrl": "https://yandex.cloud/ru/docs",       "Description": "Облачная платформа Yandex Cloud",
  • Network accessline 6
    "FullUrl": "https://yandex.cloud/ru/docs",
  • Network accessline 11
    "Num": 2,       "DocumentTitle": "Документ без инфоконтекста",       "FullUrl": "https://nopack.example.org/b",
  • Network accessline 12
    "DocumentTitle": "Документ без инфоконтекста",       "FullUrl": "https://nopack.example.org/b",       "Description": "Описание есть, инфоконтекста нет",
  • Network accessline 13
    "FullUrl": "https://nopack.example.org/b",
  • Network accessline 18
    "Num": 3,       "DocumentTitle": "Compute Cloud",       "FullUrl": "https://split.example.net/c?utm=1",
  • Network accessline 19
    "DocumentTitle": "Compute Cloud",       "FullUrl": "https://split.example.net/c?utm=1",       "Description": "",
  • Network accessline 20
    "FullUrl": "https://split.example.net/c?utm=1",

plugins/yandex-search-api/skills/yandex-search-api/scripts/tests/fixtures/search_response.xml

  • Network accessline 12
    <doccount>1</doccount>           <doc id="Z1">             <url>https://example.com/a</url>
  • Network accessline 13
    <doc id="Z1">             <url>https://example.com/a</url>             <domain>example.com</domain>
  • Network accessline 14
    <url>https://example.com/a</url>
  • Network accessline 26
    <doccount>1</doccount>           <doc id="Z2">             <url>https://second.example.org/b</url>
  • Network accessline 27
    <doc id="Z2">             <url>https://second.example.org/b</url>             <domain>second.example.org</domain>
  • Network accessline 28
    <url>https://second.example.org/b</url>
  • Network accessline 39
    <doccount>1</doccount>           <doc id="Z3">             <url>https://third.example.net/c</url>
  • Network accessline 40
    <doc id="Z3">             <url>https://third.example.net/c</url>             <domain>third.example.net</domain>
  • Network accessline 41
    <url>https://third.example.net/c</url>

plugins/yandex-search-api/skills/yandex-search-api/scripts/tests/helpers.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 12
    [Credential-related source omitted]
  • Access to secretsline 23
    [Credential-related source omitted]
  • Access to secretsline 30
    [Credential-related source omitted]
  • Dangerous shell operationline 33
    [Credential-related source omitted]
  • Access to secretsline 33
    [Credential-related source omitted]

plugins/yandex-search-api/skills/yandex-search-api/scripts/tests/run.sh

  • Executable scriptline 1
    #!/bin/sh

plugins/yandex-search-api/skills/yandex-search-api/scripts/tests/test_api_key_auth.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 7
    [Credential-related source omitted]
  • Dangerous shell operationline 12
    trap 'rm -rf "$td"' EXIT INT TERM
  • Access to secretsline 20
    [Credential-related source omitted]
  • Access to secretsline 24
    [Credential-related source omitted]
  • Access to secretsline 25
    [Credential-related source omitted]
  • Network accessline 35
    cat > "$td/bin/curl" <<'EOF'
  • Network accessline 77
    . "$(dirname "$0")/common.sh" load_config auth_request POST 'https://searchapi.api.cloud.yandex.net/v2/web/search' '{}'
  • Network accessline 78
    load_config auth_request POST 'https://searchapi.api.cloud.yandex.net/v2/web/search' '{}' EOF
  • Network accessline 79
    auth_request POST 'https://searchapi.api.cloud.yandex.net/v2/web/search' '{}'
  • Dangerous shell operationline 114
    [Credential-related source omitted]
  • Access to secretsline 114
    [Credential-related source omitted]
  • Access to secretsline 119
    [Credential-related source omitted]
  • Access to secretsline 143
    [Credential-related source omitted]
  • Dangerous shell operationline 144
    rm -f "$IAM_MARKER" "$CURL_CAPTURE"
  • Dangerous shell operationline 169
    rm "$td/skill/cache/iam_token.json" "$CURL_CAPTURE"
  • Dangerous shell operationline 176
    rm "$IAM_MARKER" "$CURL_CAPTURE"

plugins/yandex-search-api/skills/yandex-search-api/scripts/tests/test_api_key_scripts.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 12
    trap 'rm -rf "$root"' EXIT INT TERM
  • Access to secretsline 23
    [Credential-related source omitted]
  • Access to secretsline 28
    [Credential-related source omitted]
  • Access to secretsline 29
    [Credential-related source omitted]
  • Network accessline 40
    import base64 xml = b'''<yandexsearch><response><results><grouping><group><doc> <url>https://example.com/</url><title>Example result</title>
  • Network accessline 41
    xml = b'''<yandexsearch><response><results><grouping><group><doc> <url>https://example.com/</url><title>Example result</title> <passages><passage>Example snippet</passage></passages>
  • Network accessline 42
    <url>https://example.com/</url><title>Example result</title>
  • Network accessline 49
    cat > "$td/bin/curl" <<'EOF'
  • Access to secretsline 132
    [Credential-related source omitted]
  • Access to secretsline 133
    [Credential-related source omitted]
  • Network accessline 153
    exit 1 } grep -Fq 'https://example.com/' "$result_file" || {
  • Network accessline 154
    } grep -Fq 'https://example.com/' "$result_file" || {     echo 'FAIL: parsed result does not contain the fake search document'
  • Network accessline 155
    grep -Fq 'https://example.com/' "$result_file" || {

plugins/yandex-search-api/skills/yandex-search-api/scripts/tests/test_build_search_body.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 10
    trap 'rm -rf "$TMP_DIR"' EXIT
  • Access to secretsline 30
    [Credential-related source omitted]
  • Access to secretsline 44
    [Credential-related source omitted]
  • Access to secretsline 46
    [Credential-related source omitted]
  • Access to secretsline 47
    [Credential-related source omitted]
  • Access to secretsline 62
    [Credential-related source omitted]

plugins/yandex-search-api/skills/yandex-search-api/scripts/tests/test_cache.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 10
    trap 'rm -rf "$TMP_DIR"' EXIT

plugins/yandex-search-api/skills/yandex-search-api/scripts/tests/test_cli.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 12
    trap 'rm -rf "$TMP_DIR"' EXIT

plugins/yandex-search-api/skills/yandex-search-api/scripts/tests/test_config.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 10
    trap 'rm -rf "$TMP_DIR"' EXIT

plugins/yandex-search-api/skills/yandex-search-api/scripts/tests/test_iam_token_get.sh

  • Executable scriptline 1
    #!/bin/sh
  • Network accessline 2
    # Issue and cache an IAM token with the real iam_token_get.sh, openssl and curl # stubbed. Every path contains a quote and a backslash: values pasted into
  • Dangerous shell operationline 12
    trap 'rm -rf "$root"' EXIT INT TERM
  • Network accessline 38
    cat > "$td/bin/curl" <<'EOF'

plugins/yandex-search-api/skills/yandex-search-api/scripts/tests/test_parse_response.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 10
    trap 'rm -rf "$TMP_DIR"' EXIT
  • Network accessline 29
    check "$TMP_DIR/xml.json" 'len(data) == 3' "expected 3 documents from XML" check "$TMP_DIR/xml.json" '[d["position"] for d in data] == [1, 2, 3]' "positions must be 1..3" check "$TMP_DIR/xml.json" 'data[0]["url"] == "https://example.com/a"'
  • Network accessline 30
    check "$TMP_DIR/xml.json" '[d["position"] for d in data] == [1, 2, 3]' "positions must be 1..3" check "$TMP_DIR/xml.json" 'data[0]["url"] == "https://example.com/a"' "url not parsed from XML" check "$TMP_DIR/xml.json" 'data[0]["domain"] == 
  • Network accessline 31
    check "$TMP_DIR/xml.json" 'data[0]["url"] == "https://example.com/a"' "url not parsed from XML"
  • Network accessline 46
    check "$TMP_DIR/ic.json" '[d["position"] for d in data] == [1, 2, 3]' "Num must become position" check "$TMP_DIR/ic.json" 'data[0]["title"] == "Yandex Cloud"' "DocumentTitle must become title" check "$TMP_DIR/ic.json" 'data[0]["url"] == "ht
  • Network accessline 47
    check "$TMP_DIR/ic.json" 'data[0]["title"] == "Yandex Cloud"' "DocumentTitle must become title" check "$TMP_DIR/ic.json" 'data[0]["url"] == "https://yandex.cloud/ru/docs"' \     "FullUrl must become url"
  • Network accessline 48
    check "$TMP_DIR/ic.json" 'data[0]["url"] == "https://yandex.cloud/ru/docs"' \
  • Network accessline 70
    printf '{"docs": [{"Num": "7", "DocumentTitle": "T", "FullUrl": "https://e.ru/", "info_context": "x"}]}' \

plugins/yandex-search-api/skills/yandex-search-api/scripts/tests/test_render.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 10
    trap 'rm -rf "$TMP_DIR"' EXIT
  • Network accessline 34
    grep -q 'Регион 225 · документов: 3 · с выдержками: 2' "$TMP_DIR/pack.md" || fail "pack header wrong" grep -q '^## 1\. Yandex Cloud$' "$TMP_DIR/pack.md" || fail "document heading missing" grep -q '^https://yandex.cloud/ru/docs$' "$TMP_DIR/p
  • Network accessline 35
    grep -q '^## 1\. Yandex Cloud$' "$TMP_DIR/pack.md" || fail "document heading missing" grep -q '^https://yandex.cloud/ru/docs$' "$TMP_DIR/pack.md" || fail "document url missing" grep -q 'более 100 сервисов' "$TMP_DIR/pack.md" || fail "infoco
  • Network accessline 36
    grep -q '^https://yandex.cloud/ru/docs$' "$TMP_DIR/pack.md" || fail "document url missing"
  • Network accessline 57
    render_results_table "$TMP_DIR/plain.json" "" "full" "купить дымоход" > "$TMP_DIR/plain.txt" grep -q 'символов' "$TMP_DIR/plain.txt" && fail "snippet table shown for a plain search" grep -q 'https://example.com/a' "$TMP_DIR/plain.txt" || fa
  • Network accessline 58
    grep -q 'символов' "$TMP_DIR/plain.txt" && fail "snippet table shown for a plain search" grep -q 'https://example.com/a' "$TMP_DIR/plain.txt" || fail "url must stay in stdout without snippets" grep -q 'Всего: 3, с выдержками: 0' "$TMP_DIR/p
  • Network accessline 59
    grep -q 'https://example.com/a' "$TMP_DIR/plain.txt" || fail "url must stay in stdout without snippets"
  • Network accessline 107
    OUT="$TMP_DIR/many.json" python3 -c ' import json, os docs = [{"position": i, "url": "https://e%d.ru/p" % i, "title": "T%d" % i,
  • Network accessline 108
    import json, os docs = [{"position": i, "url": "https://e%d.ru/p" % i, "title": "T%d" % i,          "snippet": "s" * 200, "domain": "e%d.ru" % i, "extract": ""}
  • Network accessline 109
    docs = [{"position": i, "url": "https://e%d.ru/p" % i, "title": "T%d" % i,
  • Access to secretsline 112
    [Credential-related source omitted]

plugins/yandex-search-api/skills/yandex-search-api/scripts/tests/test_search_region.sh

  • Executable scriptline 1
    #!/bin/sh

plugins/yandex-search-api/skills/yandex-search-api/scripts/web_search_async.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 116
    [Credential-related source omitted]
  • Access to secretsline 139
    [Credential-related source omitted]

plugins/yandex-search-api/skills/yandex-search-api/scripts/web_search_sync.sh

  • Executable scriptline 1
    #!/bin/sh

plugins/yandex-webmaster/skills/yandex-webmaster/.gitignore

  • Access to secretsline 1
    [Credential-related source omitted]

plugins/yandex-webmaster/skills/yandex-webmaster/SKILL.md

  • Network accessline 52
    `--host` и `hosts.sh --search` принимают полный кириллический домен    (например, `хорошие-данные.рф`) или URL сайта (`https://хорошие-данные.рф/`).
  • Network accessline 53
    (например, `хорошие-данные.рф`) или URL сайта (`https://хорошие-данные.рф/`).

plugins/yandex-webmaster/skills/yandex-webmaster/config/README.md

  • Network accessline 5
    1. Перейдите на https://oauth.yandex.ru/client/new
  • Network accessline 13
    Подробнее: https://yandex.ru/dev/id/doc/ru/register-client
  • Network accessline 20
    https://oauth.yandex.ru/authorize?response_type=token&client_id=ВАШ_CLIENT_ID
  • Network accessline 25
    [Credential-related source omitted]
  • Access to secretsline 25
    [Credential-related source omitted]
  • Access to secretsline 28
    [Credential-related source omitted]
  • Access to secretsline 33
    [Credential-related source omitted]
  • Network accessline 59
    Где взять: 1. Откройте https://webmaster.yandex.ru в обычном залогиненном Chrome.
  • Network accessline 60
    1. Откройте https://webmaster.yandex.ru в обычном залогиненном Chrome.
  • Network accessline 61
    2. DevTools (F12) → **Application** → **Cookies** → `https://yandex.ru`
  • Network accessline 73
    - Webmaster API: https://yandex.ru/dev/webmaster/doc/ru/
  • Network accessline 74
    - OAuth: https://yandex.ru/dev/id/doc/ru/

plugins/yandex-webmaster/skills/yandex-webmaster/references/ALICE_EFFICIENCY.md

  • Network accessline 9
    В [каталоге ресурсов Webmaster API](https://yandex.ru/dev/webmaster/doc/ru/concepts/getting-started)
  • Network accessline 15
    https://webmaster.yandex.ru/site/{host_id}/efficiency/alice/
  • Network accessline 103
    "queries": {     "GENERAL": [                              // топ-10 сайтов в нише       { "url": "https://www.ivd.ru", "favicon": "..." }
  • Network accessline 104
    "GENERAL": [                              // топ-10 сайтов в нише       { "url": "https://www.ivd.ru", "favicon": "..." }     ],
  • Network accessline 105
    { "url": "https://www.ivd.ru", "favicon": "..." }
  • Network accessline 111
    "urls": [             {               "url":   "https://metallik.ru/articles/...",
  • Network accessline 112
    {               "url":   "https://metallik.ru/articles/...",               "title": "Шибер для дымохода ...",
  • Network accessline 113
    "url":   "https://metallik.ru/articles/...",
  • Network accessline 114
    "title": "Шибер для дымохода ...",               "host":  "https://metallik.ru",               "favicon": "..."
  • Network accessline 115
    "host":  "https://metallik.ru",

plugins/yandex-webmaster/skills/yandex-webmaster/references/DOCTORS_SCHEDULE.md

  • Network accessline 23
    {   "Total": 150,   "Url": "https://example.com/api/slots?page=2",
  • Network accessline 24
    "Total": 150,   "Url": "https://example.com/api/slots?page=2",   "DoctorList": [
  • Network accessline 25
    "Url": "https://example.com/api/slots?page=2",

plugins/yandex-webmaster/skills/yandex-webmaster/references/FEEDS.md

  • Network accessline 31
    bash scripts/feeds.sh --host example.com --action add \     --url "https://example.com/feed.yml" \
  • Network accessline 32
    --url "https://example.com/feed.yml" \
  • Network accessline 50
    bash scripts/feeds.sh --host example.com --action change \     --url "https://example.com/feed.yml" \
  • Network accessline 51
    --url "https://example.com/feed.yml" \
  • Network accessline 67
    Полный список: [Справочник регионов](https://yandex.ru/dev/webmaster/doc/ru/reference/feeds-regions)

plugins/yandex-webmaster/skills/yandex-webmaster/references/RECRAWL.md

  • Network accessline 14
    bash scripts/recrawl.sh --host example.com --action submit --url "https://example.com/updated-page"

plugins/yandex-webmaster/skills/yandex-webmaster/references/SITEMAPS.md

  • Network accessline 31
    bash scripts/sitemaps.sh --host example.com --action add --url https://example.com/sitemap.xml

plugins/yandex-webmaster/skills/yandex-webmaster/references/SITE_MANAGEMENT.md

  • Network accessline 6
    bash scripts/add_site.sh --url https://example.com

plugins/yandex-webmaster/skills/yandex-webmaster/references/SITE_STATS.md

  • Network accessline 67
    bash scripts/important_urls.sh --host example.com --action history --url "https://example.com/page"

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/add_site.sh

  • Executable scriptline 1
    #!/bin/sh
  • Network accessline 20
    if [ -z "$URL" ]; then     echo "Error: --url <site_url> is required." >&2     echo "Example: bash scripts/add_site.sh --url https://example.com" >&2
  • Network accessline 21
    echo "Error: --url <site_url> is required." >&2     echo "Example: bash scripts/add_site.sh --url https://example.com" >&2     exit 1
  • Network accessline 22
    echo "Example: bash scripts/add_site.sh --url https://example.com" >&2
  • Dangerous shell operationline 29
    trap 'rm -f "$TMPFILE"' EXIT
  • Dangerous shell operationline 43
    rm -f "$CACHE_DIR/hosts.tsv" "$CACHE_DIR/hosts.json"

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/alice.sh

  • Executable scriptline 1
    #!/bin/sh

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/alice_efficiency.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 17
    import argparse import errno import http.client
  • Network accessline 18
    import errno import http.client import json
  • Network accessline 19
    import http.client
  • Access to secretsline 47
    [Credential-related source omitted]
  • Network accessline 62
    ALICE_URL_TEMPLATE = (     "https://webmaster.yandex.ru/site/{host_id}/efficiency/alice/"
  • Network accessline 63
    "https://webmaster.yandex.ru/site/{host_id}/efficiency/alice/"
  • Network accessline 115
    if isinstance(reason, ssl.SSLError):         return False     return isinstance(reason, (TimeoutError, ConnectionError, http.client.IncompleteRead)) or (
  • Network accessline 116
    return False     return isinstance(reason, (TimeoutError, ConnectionError, http.client.IncompleteRead)) or (         isinstance(reason, OSError) and reason.errno in {
  • Network accessline 117
    return isinstance(reason, (TimeoutError, ConnectionError, http.client.IncompleteRead)) or (
  • Network accessline 125
    def fetch_html(host_id: str, session_id: str, raw_path: str) -> str:     url = ALICE_URL_TEMPLATE.format(host_id=host_id)     req = urllib.request.Request(
  • Network accessline 126
    url = ALICE_URL_TEMPLATE.format(host_id=host_id)     req = urllib.request.Request(         url,
  • Network accessline 127
    req = urllib.request.Request(
  • Network accessline 147
    status = resp.code                 headers = resp.headers         except (urllib.error.URLError, OSError, http.client.HTTPException) as error:
  • Network accessline 148
    headers = resp.headers         except (urllib.error.URLError, OSError, http.client.HTTPException) as error:             reason = error.reason if isinstance(error, urllib.error.URLError) else error
  • Network accessline 149
    except (urllib.error.URLError, OSError, http.client.HTTPException) as error:
  • Network accessline 254
    if not args.session_id:         fail("SESSION_ID is required for fetch (set in config/.env)")
  • Network accessline 255
    fail("SESSION_ID is required for fetch (set in config/.env)")
  • Access to secretsline 404
    [Credential-related source omitted]

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/archive_export.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 28
    trap 'rm -f "$TMPFILE"' EXIT

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/common.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 8
    [Credential-related source omitted]
  • Network accessline 11
    WEBMASTER_API="https://api.webmaster.yandex.net"
  • Access to secretsline 19
    [Credential-related source omitted]
  • Access to secretsline 21
    [Credential-related source omitted]
  • Access to secretsline 24
    [Credential-related source omitted]
  • Access to secretsline 26
    [Credential-related source omitted]
  • Dangerous shell operationline 42
    trap 'rm -f "$_eui_tmp"' EXIT
  • Dangerous shell operationline 50
    rm -f "$_eui_tmp"
  • Dangerous shell operationline 56
    rm -f "$_eui_tmp"
  • Dangerous shell operationline 140
    rm -f "$_rhc_tmp"
  • Network accessline 148
    _wrg_path="$1"     shift     _wrg_url="${WEBMASTER_API}${_wrg_path}"
  • Network accessline 149
    shift     _wrg_url="${WEBMASTER_API}${_wrg_path}"     _wrg_headers="${WM_TMPDIR}/wm_headers_$$.txt"
  • Network accessline 150
    _wrg_url="${WEBMASTER_API}${_wrg_path}"
  • Network accessline 153
    [Credential-related source omitted]
  • Access to secretsline 153
    [Credential-related source omitted]
  • Network accessline 154
    [Credential-related source omitted]
  • Access to secretsline 154
    [Credential-related source omitted]
  • Network accessline 155
    "$@" \         "$_wrg_url") || {         rm -f "$_wrg_headers"
  • Network accessline 156
    "$_wrg_url") || {         rm -f "$_wrg_headers"         echo "Error: curl failed for $_wrg_url" >&2
  • Dangerous shell operationline 157
    rm -f "$_wrg_headers"
  • Network accessline 157
    rm -f "$_wrg_headers"         echo "Error: curl failed for $_wrg_url" >&2         return 1
  • Network accessline 158
    echo "Error: curl failed for $_wrg_url" >&2
  • Dangerous shell operationline 167
    rm -f "$_wrg_headers"
  • Dangerous shell operationline 183
    rm -f "$_wrg_headers"
  • Network accessline 187
    echo "Error: HTTP $_wrg_status — $_wrg_err_code: $_wrg_err_msg" >&2         else             echo "Error: HTTP $_wrg_status from $_wrg_url" >&2
  • Network accessline 188
    else             echo "Error: HTTP $_wrg_status from $_wrg_url" >&2             echo "$_wrg_body" >&2
  • Network accessline 189
    echo "Error: HTTP $_wrg_status from $_wrg_url" >&2
  • Dangerous shell operationline 195
    rm -f "$_wrg_headers"
  • Network accessline 202
    _wrp_path="$1"     _wrp_body_data="$2"     _wrp_url="${WEBMASTER_API}${_wrp_path}"
  • Network accessline 203
    _wrp_body_data="$2"     _wrp_url="${WEBMASTER_API}${_wrp_path}"     _wrp_headers="${WM_TMPDIR}/wm_headers_$$.txt"
  • Network accessline 204
    _wrp_url="${WEBMASTER_API}${_wrp_path}"
  • Network accessline 207
    [Credential-related source omitted]
  • Access to secretsline 207
    [Credential-related source omitted]
  • Access to secretsline 208
    [Credential-related source omitted]
  • Network accessline 209
    -H "Content-Type: application/json; charset=UTF-8" \         -d "$_wrp_body_data" \         "$_wrp_url") || {
  • Network accessline 210
    -d "$_wrp_body_data" \         "$_wrp_url") || {         rm -f "$_wrp_headers"
  • Network accessline 211
    "$_wrp_url") || {         rm -f "$_wrp_headers"         echo "Error: curl failed for $_wrp_url" >&2
  • Dangerous shell operationline 212
    rm -f "$_wrp_headers"
  • Network accessline 212
    rm -f "$_wrp_headers"         echo "Error: curl failed for $_wrp_url" >&2         return 1
  • Network accessline 213
    echo "Error: curl failed for $_wrp_url" >&2
  • Dangerous shell operationline 221
    rm -f "$_wrp_headers"
  • Dangerous shell operationline 236
    rm -f "$_wrp_headers"
  • Network accessline 240
    echo "Error: HTTP $_wrp_status — $_wrp_err_code: $_wrp_err_msg" >&2         else             echo "Error: HTTP $_wrp_status from $_wrp_url" >&2
  • Network accessline 241
    else             echo "Error: HTTP $_wrp_status from $_wrp_url" >&2             echo "$_wrp_resp" >&2
  • Network accessline 242
    echo "Error: HTTP $_wrp_status from $_wrp_url" >&2
  • Dangerous shell operationline 248
    rm -f "$_wrp_headers"
  • Dangerous shell operationline 315
    rm -f "$_cgt_file"
  • Network accessline 465
    # add_date_params — builds curl args for date_from/date_to

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/diagnostics.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 18
    trap 'rm -f "$TMPFILE"' EXIT

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/external_links.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 20
    trap 'rm -f "$TMPFILE"' EXIT

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/feeds.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 36
    trap 'rm -f "$TMPFILE"' EXIT
  • Dangerous shell operationline 54
    rm -f "$_list_tmp"
  • Network accessline 78
    # Reads feed definitions from stdin (JSON array)         # Example: echo '[{"url":"https://a.com/f.yml","type":"GOODS"},{"url":"https://b.com/f.yml","type":"REALTY","regionIds":[213]}]' | bash scripts/feeds.sh --host ... --action batch-add
  • Network accessline 79
    # Example: echo '[{"url":"https://a.com/f.yml","type":"GOODS"},{"url":"https://b.com/f.yml","type":"REALTY","regionIds":[213]}]' | bash scripts/feeds.sh --host ... --action batch-add

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/host_info.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 17
    trap 'rm -f "$TMPFILE" "${TMPFILE}_owners"' EXIT

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/hosts.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 37
    rm -f "$_tmp_display"
  • Dangerous shell operationline 48
    trap 'rm -f "$TMPFILE"' EXIT

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/important_urls.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 28
    trap 'rm -f "$TMPFILE"' EXIT

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/indexing.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 20
    trap 'rm -f "$TMPFILE"' EXIT
  • Dangerous shell operationline 57
    trap 'rm -f "$TMPFILE" "${TMPFILE}.flat" "$_t2" "$_t3" "$_t4" "$_t5" "$_to"' EXIT
  • Dangerous shell operationline 92
    rm -f "$_tdates"

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/insearch.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 20
    trap 'rm -f "$TMPFILE"' EXIT

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/internal_links.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 31
    trap 'rm -f "$TMPFILE"' EXIT
  • Dangerous shell operationline 93
    trap 'rm -f "$TMPFILE" "${TMPFILE}.flat" "$_tdbu" "$_tse" "$_tubr"' EXIT
  • Dangerous shell operationline 119
    rm -f "$_tdates"

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/popular_queries.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 30
    trap 'rm -f "$TMPFILE"' EXIT

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/queries_history.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 46
    trap 'rm -f "$TMPFILE" "${TMPFILE}.flat"' EXIT
  • Dangerous shell operationline 74
    trap 'rm -f "$TMPFILE" "${TMPFILE}.flat" "$_ts" "$_tc" "$_tp"' EXIT
  • Dangerous shell operationline 101
    rm -f "$_tdates"

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/query_analytics.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 53
    trap 'rm -f "$TMPFILE" "$TMPFILE2"' EXIT

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/recrawl.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 32
    trap 'rm -f "$TMPFILE"' EXIT
  • Dangerous shell operationline 96
    rm -f "$_list_tmp"

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/regions.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 27
    trap 'rm -f "$TMPFILE"' EXIT

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/search_events.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 20
    trap 'rm -f "$TMPFILE"' EXIT
  • Dangerous shell operationline 51
    trap 'rm -f "$TMPFILE" "${TMPFILE}.flat" "$_ta" "$_tr"' EXIT
  • Dangerous shell operationline 74
    rm -f "$_tdates"

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/search_export.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 36
    trap 'rm -f "$TMPFILE"' EXIT

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/sitemaps.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 31
    trap 'rm -f "$TMPFILE"' EXIT

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/sqi_history.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 19
    trap 'rm -f "$TMPFILE"' EXIT
  • Network accessline 32
    # Build curl args for dates

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/summary.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 17
    trap 'rm -f "$TMPFILE"' EXIT

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/tests/test_alice_efficiency.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 34
    ],     "queries": {         "GENERAL": [{"url": "https://competitor.test/"}],
  • Network accessline 35
    "queries": {         "GENERAL": [{"url": "https://competitor.test/"}],         "EXAMPLES": {
  • Network accessline 36
    "GENERAL": [{"url": "https://competitor.test/"}],
  • Network accessline 39
    "query": "купить металл",                 "urls": [{                     "host": "example.test", "url": "https://example.test/",
  • Network accessline 40
    "urls": [{                     "host": "example.test", "url": "https://example.test/",                     "title": "Металл",
  • Network accessline 41
    "host": "example.test", "url": "https://example.test/",
  • Network accessline 46
    "query": "доставка металла",                 "urls": [{                     "host": "competitor.test", "url": "https://competitor.test/",
  • Network accessline 47
    "urls": [{                     "host": "competitor.test", "url": "https://competitor.test/",                     "title": "Доставка",
  • Network accessline 48
    "host": "competitor.test", "url": "https://competitor.test/",
  • Network accessline 287
    sov = self.cache.with_name("sov.tsv").read_text(encoding="utf-8")         self.assertIn("2026-01-01\t2026-01-07\t0.1000\t10.00%", sov)         self.assertIn("40\thttps://competitor.test/", self.cache.with_name("competitors.tsv").read_text()
  • Network accessline 289
    self.assertIn("40\thttps://competitor.test/", self.cache.with_name("competitors.tsv").read_text())
  • Network accessline 292
    data = copy.deepcopy(SAMPLE)         item = data["queries"]["EXAMPLES"]["hasOwnExamples"][0]         item["query"] = "купить\tметалл\nс доставкой"
  • Network accessline 293
    item = data["queries"]["EXAMPLES"]["hasOwnExamples"][0]         item["query"] = "купить\tметалл\nс доставкой"         item["urls"][0]["title"] = "Первая\r\nстрока"
  • Network accessline 294
    item["query"] = "купить\tметалл\nс доставкой"
  • Network accessline 295
    item["urls"][0]["title"] = "Первая\r\nстрока"         item["urls"].append({"host": "second.test", "url": "https://second.test/", "title": None})         self.write_cache(data)
  • Network accessline 296
    item["urls"].append({"host": "second.test", "url": "https://second.test/", "title": None})
  • Network accessline 304
    self.assertEqual(len(lines), 3)         self.assertEqual(lines[1].split("\t"), [             "купить металл с доставкой", "1", "example.test", "https://example.test/", "Первая  строка",
  • Network accessline 305
    self.assertEqual(lines[1].split("\t"), [             "купить металл с доставкой", "1", "example.test", "https://example.test/", "Первая  строка",         ])
  • Network accessline 306
    "купить металл с доставкой", "1", "example.test", "https://example.test/", "Первая  строка",
  • Network accessline 307
    ])         self.assertEqual(lines[2].split("\t"), [             "купить металл с доставкой", "2", "second.test", "https://second.test/", "",
  • Network accessline 308
    self.assertEqual(lines[2].split("\t"), [             "купить металл с доставкой", "2", "second.test", "https://second.test/", "",         ])
  • Network accessline 309
    "купить металл с доставкой", "2", "second.test", "https://second.test/", "",
  • Access to secretsline 338
    [Credential-related source omitted]

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/tests/test_alice_network.py

  • Executable scriptline 1
    Executable file
  • Network accessline 31
    class Handler(BaseHTTPRequestHandler):             def do_GET(self):                 requests.append((self.path, self.headers))
  • Network accessline 32
    def do_GET(self):                 requests.append((self.path, self.headers))                 status, headers, body = responses.pop(0) if responses else (599, {}, b"")
  • Network accessline 33
    requests.append((self.path, self.headers))
  • Network accessline 54
    self.raw = Path(temporary.name) / "raw.html"         self.raw.write_text("previous response", encoding="utf-8")         address = f"http://127.0.0.1:{server.server_port}/{{host_id}}/"
  • Network accessline 55
    self.raw.write_text("previous response", encoding="utf-8")         address = f"http://127.0.0.1:{server.server_port}/{{host_id}}/"         patches = contextlib.ExitStack()
  • Network accessline 56
    address = f"http://127.0.0.1:{server.server_port}/{{host_id}}/"
  • Network accessline 67
    def fetch(self):
  • Network accessline 71
    stderr = io.StringIO()         with contextlib.redirect_stderr(stderr), self.assertRaises(SystemExit) as error:             self.fetch()
  • Network accessline 72
    with contextlib.redirect_stderr(stderr), self.assertRaises(SystemExit) as error:             self.fetch()         self.assertNotEqual(error.exception.code, 0)
  • Network accessline 73
    self.fetch()
  • Network accessline 82
    original = urllib.request.OpenerDirector.open         with mock.patch.object(urllib.request.OpenerDirector, "open", autospec=True, side_effect=original) as open_url:             self.assertEqual(self.fetch(), html)
  • Network accessline 83
    with mock.patch.object(urllib.request.OpenerDirector, "open", autospec=True, side_effect=original) as open_url:             self.assertEqual(self.fetch(), html)         self.assertEqual(open_url.call_args.kwargs["timeout"], 30)
  • Network accessline 84
    self.assertEqual(self.fetch(), html)
  • Network accessline 92
    for status in (429, 500, 502, 503, 504):             with self.subTest(status=status):                 self.requests.clear()
  • Network accessline 93
    with self.subTest(status=status):                 self.requests.clear()                 self.sleep.reset_mock()
  • Network accessline 94
    self.requests.clear()
  • Network accessline 95
    self.sleep.reset_mock()                 self.responses.extend([(status, {}, b"temporary"), (200, {}, b"complete")])                 self.assertEqual(self.fetch(), "complete")
  • Network accessline 96
    self.responses.extend([(status, {}, b"temporary"), (200, {}, b"complete")])                 self.assertEqual(self.fetch(), "complete")                 self.assertEqual(len(self.requests), 2)
  • Network accessline 97
    self.assertEqual(self.fetch(), "complete")
  • Network accessline 112
    self.sleep.reset_mock()                 self.responses.extend([(429, {"Retry-After": header}, b"wait"), (200, {}, b"ok")])                 self.assertEqual(self.fetch(), "ok")
  • Network accessline 113
    self.responses.extend([(429, {"Retry-After": header}, b"wait"), (200, {}, b"ok")])                 self.assertEqual(self.fetch(), "ok")                 self.sleep.assert_called_once()
  • Network accessline 114
    self.assertEqual(self.fetch(), "ok")
  • Network accessline 121
    for header in ("120", formatdate(time.time() + 120, usegmt=True)):             with self.subTest(header=header):                 self.requests.clear()
  • Network accessline 122
    with self.subTest(header=header):                 self.requests.clear()                 self.responses.append((429, {"Retry-After": header}, b"wait longer"))
  • Network accessline 123
    self.requests.clear()
  • Network accessline 131
    for status in (400, 401, 403, 404):             with self.subTest(status=status):                 self.requests.clear()
  • Network accessline 132
    with self.subTest(status=status):                 self.requests.clear()                 self.responses.append((status, {}, b"error page"))
  • Network accessline 133
    self.requests.clear()
  • Network accessline 140
    def test_redirect_is_saved_but_never_followed(self):         for location in ("https://passport.yandex.ru/auth", "/showcaptcha", "/somewhere-else"):
  • Network accessline 141
    for location in ("https://passport.yandex.ru/auth", "/showcaptcha", "/somewhere-else"):             with self.subTest(location=location):                 self.requests.clear()
  • Network accessline 142
    with self.subTest(location=location):                 self.requests.clear()                 self.responses.append((302, {"Location": location}, b"redirect page"))
  • Network accessline 143
    self.requests.clear()

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/tests/test_host_search.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 52
    (cache_dir / "user_id.txt").write_text("123", encoding="utf-8")         hosts = [             {"host_id": f"https:{domain}:443", "ascii_host_url": f"https://{domain}/", "verified": True}
  • Network accessline 53
    hosts = [             {"host_id": f"https:{domain}:443", "ascii_host_url": f"https://{domain}/", "verified": True}             for domain in [pair[1] for pair in DOMAINS] + ["example.com"]
  • Network accessline 54
    {"host_id": f"https:{domain}:443", "ascii_host_url": f"https://{domain}/", "verified": True}
  • Network accessline 82
    def test_ascii_search_stays_literal_without_python(self):         self.python.unlink()         for term in ("example.com", "exam", "HTTPS://Example.COM:443/", DOMAINS[0][1]):
  • Network accessline 83
    self.python.unlink()         for term in ("example.com", "exam", "HTTPS://Example.COM:443/", DOMAINS[0][1]):             with self.subTest(term=term):
  • Network accessline 84
    for term in ("example.com", "exam", "HTTPS://Example.COM:443/", DOMAINS[0][1]):
  • Network accessline 106
    unicode_domain, ascii_domain = DOMAINS[0]         urls = (             (f"https://{unicode_domain}/", f"https://{ascii_domain}/"),
  • Network accessline 107
    urls = (             (f"https://{unicode_domain}/", f"https://{ascii_domain}/"),             (f"https://{unicode_domain.upper()}:8443/path?q=1#part", f"https://{ascii_domain}:8443/path?q=1#part"),
  • Network accessline 108
    (f"https://{unicode_domain}/", f"https://{ascii_domain}/"),
  • Network accessline 109
    (f"https://{unicode_domain.upper()}:8443/path?q=1#part", f"https://{ascii_domain}:8443/path?q=1#part"),
  • Network accessline 119
    def test_resolve_host_accepts_unicode_domains_and_root_urls(self):         for unicode_domain, ascii_domain in DOMAINS:             for term in (unicode_domain, f"https://{unicode_domain}/", f"HTTPS://{unicode_domain.upper()}/", f"{unicode_
  • Network accessline 120
    for unicode_domain, ascii_domain in DOMAINS:             for term in (unicode_domain, f"https://{unicode_domain}/", f"HTTPS://{unicode_domain.upper()}/", f"{unicode_domain}/"):                 with self.subTest(term=term):
  • Network accessline 121
    for term in (unicode_domain, f"https://{unicode_domain}/", f"HTTPS://{unicode_domain.upper()}/", f"{unicode_domain}/"):
  • Network accessline 130
    for refresh in (False, True):                 with self.subTest(domain=unicode_domain, refresh=refresh):                     args = ["--search", f"https://{unicode_domain}/"]
  • Network accessline 131
    with self.subTest(domain=unicode_domain, refresh=refresh):                     args = ["--search", f"https://{unicode_domain}/"]                     if refresh:
  • Network accessline 132
    args = ["--search", f"https://{unicode_domain}/"]

plugins/yandex-webmaster/skills/yandex-webmaster/scripts/verify.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 30
    trap 'rm -f "$TMPFILE"' EXIT
  • Dangerous shell operationline 85
    rm -f "$CACHE_DIR/hosts.tsv" "$CACHE_DIR/hosts.json"

plugins/yandex-wordstat/skills/yandex-wordstat/.gitignore

  • Access to secretsline 2
    [Credential-related source omitted]

plugins/yandex-wordstat/skills/yandex-wordstat/SKILL.md

  • Network accessline 304
    Актуальные ограничения для Wordstat приведены в [документации Yandex Search API](https://aistudio.yandex.ru/ru/docs/search-api/concepts/limits).

plugins/yandex-wordstat/skills/yandex-wordstat/config/.env.example

  • Access to secretsline 1
    [Credential-related source omitted]
  • Access to secretsline 4
    [Credential-related source omitted]

plugins/yandex-wordstat/skills/yandex-wordstat/config/README.md

  • Network accessline 3
    Скилл поддерживает только Wordstat API в Yandex Cloud Search API v2: `https://searchapi.api.cloud.yandex.net/v2/wordstat`.
  • Network accessline 25
    1. Откройте [консоль Yandex Cloud](https://console.yandex.cloud/)
  • Network accessline 84
    Метод `dynamics` (`scripts/dynamics.sh`) поддерживает все [операторы поиска Wordstat](https://yandex.ru/support/direct/keywords/symbols-and-operators.html) **только при детализации `daily`**. При `weekly` и `monthly` доступен **только опера
  • Network accessline 86
    Это ограничение на стороне Yandex Cloud Search API — задокументировано в [официальной документации](https://aistudio.yandex.ru/docs/ru/search-api/operations/wordstat-getdynamics.html).
  • Access to secretsline 107
    [Credential-related source omitted]
  • Network accessline 141
    - [Документация Wordstat API](https://aistudio.yandex.ru/docs/ru/search-api/concepts/wordstat.html)
  • Network accessline 142
    - [Актуальные квоты и лимиты Wordstat](https://aistudio.yandex.ru/ru/docs/search-api/concepts/limits)
  • Network accessline 143
    - [Тарификация](https://yandex.cloud/ru/docs/search-api/pricing)
  • Network accessline 144
    - [Операторы поиска](https://yandex.ru/support/direct/keywords/symbols-and-operators.html)
  • Network accessline 152
    1. Откройте [консоль Yandex Cloud](https://console.yandex.cloud/), выберите каталог → Identity and Access Management → Сервисные аккаунты → нужный аккаунт → API-ключи.
  • Access to secretsline 159
    [Credential-related source omitted]
  • Access to secretsline 160
    [Credential-related source omitted]
  • Access to secretsline 163
    [Credential-related source omitted]
  • Access to secretsline 164
    [Credential-related source omitted]
  • Access to secretsline 165
    [Credential-related source omitted]

plugins/yandex-wordstat/skills/yandex-wordstat/references/MISSED_DEMAND.md

  • Network accessline 19
    https://direct.yandex.ru/dna/groups-edit?ulogin={login}&campaigns-ids={campaign_id}&groups-ids={group_id}
  • Network accessline 267
    Группа «Ретро-телефоны» (транзакционная): Редактировать: https://direct.yandex.ru/dna/groups-edit?ulogin={login}&campaigns-ids={campaign_id}&groups-ids={group_id}
  • Network accessline 268
    Редактировать: https://direct.yandex.ru/dna/groups-edit?ulogin={login}&campaigns-ids={campaign_id}&groups-ids={group_id}
  • Network accessline 309
    - **Длина query**: `query_length` из `build-query` относится только к базовой OR-схеме и не учитывает минус-фразы. Окончательный источник истины — длина `phrase` непосредственно перед запросом. - **OR-операторы**: если Wordstat API неожидан
  • Network accessline 310
    - **OR-операторы**: если Wordstat API неожиданно не поддерживает `(a|b)` синтаксис — fallback: запросить каждый вариант отдельно и суммировать (upper bound — пересечения дадут оверкаунт). - **Квота API**: при анализе множества групп следить
  • Network accessline 311
    - **Квота API**: при анализе множества групп следить за расходом и учитывать [актуальные квоты Wordstat](https://aistudio.yandex.ru/ru/docs/search-api/concepts/limits).

plugins/yandex-wordstat/skills/yandex-wordstat/scripts/common.sh

  • Executable scriptline 1
    #!/bin/sh
  • Network accessline 34
    WORDSTAT_CLOUD_API="https://searchapi.api.cloud.yandex.net/v2/wordstat"
  • Network accessline 35
    WORDSTAT_IAM_API="https://iam.api.cloud.yandex.net/iam/v1/tokens"
  • Network accessline 36
    WORDSTAT_README_URL="https://github.com/artwist-polyakov/polyakov-claude-skills/blob/main/plugins/yandex-wordstat/skills/yandex-wordstat/config/README.md"
  • Access to secretsline 42
    [Credential-related source omitted]
  • Network accessline 60
    printf '\n'         printf 'Likely the plugin config needs updating. See:\n'         printf '  %s\n\n' "$WORDSTAT_README_URL"
  • Network accessline 61
    printf 'Likely the plugin config needs updating. See:\n'         printf '  %s\n\n' "$WORDSTAT_README_URL"         printf 'Quick checks:\n'
  • Network accessline 62
    printf '  %s\n\n' "$WORDSTAT_README_URL"
  • Access to secretsline 65
    [Credential-related source omitted]
  • Access to secretsline 66
    [Credential-related source omitted]
  • Access to secretsline 108
    [Credential-related source omitted]
  • Access to secretsline 109
    [Credential-related source omitted]
  • Access to secretsline 111
    [Credential-related source omitted]
  • Access to secretsline 123
    [Credential-related source omitted]
  • Access to secretsline 129
    [Credential-related source omitted]
  • Access to secretsline 152
    [Credential-related source omitted]
  • Access to secretsline 156
    [Credential-related source omitted]
  • Access to secretsline 161
    [Credential-related source omitted]
  • Access to secretsline 177
    [Credential-related source omitted]
  • Access to secretsline 178
    [Credential-related source omitted]
  • Access to secretsline 185
    [Credential-related source omitted]
  • Access to secretsline 186
    [Credential-related source omitted]
  • Access to secretsline 187
    [Credential-related source omitted]
  • Access to secretsline 190
    [Credential-related source omitted]
  • Access to secretsline 191
    [Credential-related source omitted]
  • Network accessline 233
    echo ""     echo "=== Endpoints ==="     echo "  POST $WORDSTAT_CLOUD_API/topRequests"
  • Network accessline 234
    echo "=== Endpoints ==="     echo "  POST $WORDSTAT_CLOUD_API/topRequests"     echo "  POST $WORDSTAT_CLOUD_API/dynamics"
  • Network accessline 235
    echo "  POST $WORDSTAT_CLOUD_API/topRequests"
  • Network accessline 236
    echo "  POST $WORDSTAT_CLOUD_API/dynamics"
  • Network accessline 237
    echo "  POST $WORDSTAT_CLOUD_API/regions"
  • Network accessline 238
    echo ""     echo "=== API Limits ==="     echo "  See https://yandex.cloud/ru/docs/search-api/pricing for current limits and billing."
  • Network accessline 239
    echo "=== API Limits ==="     echo "  See https://yandex.cloud/ru/docs/search-api/pricing for current limits and billing." }
  • Network accessline 240
    echo "  See https://yandex.cloud/ru/docs/search-api/pricing for current limits and billing."
  • Access to secretsline 283
    [Credential-related source omitted]
  • Access to secretsline 309
    [Credential-related source omitted]
  • Access to secretsline 310
    [Credential-related source omitted]
  • Dangerous shell operationline 327
    trap "rm -rf '$_iti_tmp'" EXIT INT TERM
  • Access to secretsline 339
    [Credential-related source omitted]
  • Access to secretsline 340
    [Credential-related source omitted]
  • Network accessline 358
    payload = json.dumps({     "iss": sa_id,     "aud": "https://iam.api.cloud.yandex.net/iam/v1/tokens",
  • Network accessline 359
    "iss": sa_id,     "aud": "https://iam.api.cloud.yandex.net/iam/v1/tokens",     "iat": now,
  • Network accessline 360
    "aud": "https://iam.api.cloud.yandex.net/iam/v1/tokens",
  • Network accessline 389
    _resp=$(curl -s -X POST "$WORDSTAT_IAM_API" \
  • Dangerous shell operationline 433
    rm -rf "$_iti_tmp"
  • Access to secretsline 466
    [Credential-related source omitted]
  • Access to secretsline 467
    [Credential-related source omitted]
  • Access to secretsline 468
    [Credential-related source omitted]
  • Network accessline 575
    # ASCII escapes preserve Unicode through Windows Python stdout and curl arguments.
  • Access to secretsline 600
    [Credential-related source omitted]
  • Access to secretsline 602
    [Credential-related source omitted]
  • Dangerous shell operationline 666
    [ "$_nr_owns_tmp" = "1" ] && rm -f "$_nr_tmp"
  • Network accessline 697
    die_with_help \                     "Cloud Wordstat dynamics: at weekly/monthly granularity, only '+' operator is allowed. Found: $_ops" \                     "Either switch --period to daily, or remove these operators from --phrase. See: h
  • Network accessline 698
    "Cloud Wordstat dynamics: at weekly/monthly granularity, only '+' operator is allowed. Found: $_ops" \                     "Either switch --period to daily, or remove these operators from --phrase. See: https://aistudio.yandex.ru/docs/ru/se
  • Network accessline 699
    "Either switch --period to daily, or remove these operators from --phrase. See: https://aistudio.yandex.ru/docs/ru/search-api/operations/wordstat-getdynamics.html"
  • Access to secretsline 713
    [Credential-related source omitted]
  • Access to secretsline 714
    [Credential-related source omitted]
  • Network accessline 734
    _cr_tmp=$(_make_secure_tmpdir)         _cr_resp_file="$_cr_tmp/resp"         _status=$(curl -s -o "$_cr_resp_file" -w '%{http_code}' \
  • Network accessline 735
    _cr_resp_file="$_cr_tmp/resp"         _status=$(curl -s -o "$_cr_resp_file" -w '%{http_code}' \             -X POST "$WORDSTAT_CLOUD_API/$_method" \
  • Network accessline 736
    _status=$(curl -s -o "$_cr_resp_file" -w '%{http_code}' \
  • Network accessline 737
    -X POST "$WORDSTAT_CLOUD_API/$_method" \
  • Dangerous shell operationline 745
    rm -rf "$_cr_tmp"
  • Dangerous shell operationline 751
    rm -f "$WORDSTAT_CACHE_DIR/iam_token.json"
  • Dangerous shell operationline 754
    rm -rf "$_cr_tmp"
  • Dangerous shell operationline 758
    rm -rf "$_cr_tmp"
  • Access to secretsline 759
    [Credential-related source omitted]
  • Dangerous shell operationline 766
    rm -rf "$_cr_tmp"
  • Dangerous shell operationline 772
    rm -rf "$_cr_tmp"
  • Dangerous shell operationline 778
    rm -rf "$_cr_tmp"
  • Dangerous shell operationline 783
    rm -rf "$_cr_tmp"

plugins/yandex-wordstat/skills/yandex-wordstat/scripts/dynamics.sh

  • Executable scriptline 1
    #!/bin/bash

plugins/yandex-wordstat/skills/yandex-wordstat/scripts/missed_demand.py

  • Executable scriptline 1
    #!/usr/bin/env -S uv run --script

plugins/yandex-wordstat/skills/yandex-wordstat/scripts/query_total.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 49
    cleanup() { rm -f "$TMPFILE"; }

plugins/yandex-wordstat/skills/yandex-wordstat/scripts/quota.sh

  • Executable scriptline 1
    #!/bin/sh

plugins/yandex-wordstat/skills/yandex-wordstat/scripts/regions_stats.sh

  • Executable scriptline 1
    #!/bin/bash

plugins/yandex-wordstat/skills/yandex-wordstat/scripts/regions_tree.sh

  • Executable scriptline 1
    #!/bin/bash

plugins/yandex-wordstat/skills/yandex-wordstat/scripts/search_region.sh

  • Executable scriptline 1
    #!/bin/bash

plugins/yandex-wordstat/skills/yandex-wordstat/scripts/tests/helpers.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 6
    [Credential-related source omitted]

plugins/yandex-wordstat/skills/yandex-wordstat/scripts/tests/run.sh

  • Executable scriptline 1
    #!/bin/sh

plugins/yandex-wordstat/skills/yandex-wordstat/scripts/tests/test_api_key_auth.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 10
    rm -rf "$td"
  • Dangerous shell operationline 12
    trap 'rm -rf "$td"' EXIT INT TERM
  • Access to secretsline 15
    [Credential-related source omitted]
  • Network accessline 18
    cat > "$td/bin/curl" <<'EOF'
  • Access to secretsline 46
    [Credential-related source omitted]
  • Access to secretsline 47
    [Credential-related source omitted]
  • Access to secretsline 52
    [Credential-related source omitted]
  • Access to secretsline 63
    [Credential-related source omitted]
  • Access to secretsline 64
    [Credential-related source omitted]
  • Access to secretsline 75
    [Credential-related source omitted]
  • Access to secretsline 87
    [Credential-related source omitted]

plugins/yandex-wordstat/skills/yandex-wordstat/scripts/tests/test_cloud_phrase_length.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 12
    trap 'rm -rf "$TEST_TMP_DIR"' EXIT HUP INT TERM
  • Dangerous shell operationline 91
    rm -f "$_tcpl_iam_marker" "$_tcpl_transport_marker"
  • Network accessline 108
    fail "_cloud_request вызвал _iam_token_get для $_tcpl_method"     [ ! -e "$_tcpl_transport_marker" ] || \         fail "_cloud_request вызвал curl для $_tcpl_method"
  • Network accessline 109
    [ ! -e "$_tcpl_transport_marker" ] ||          fail "_cloud_request вызвал curl для $_tcpl_method"
  • Network accessline 110
    fail "_cloud_request вызвал curl для $_tcpl_method"

plugins/yandex-wordstat/skills/yandex-wordstat/scripts/tests/test_dynamics_preflight.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 28
    rm -f "$_err_file"
  • Dangerous shell operationline 32
    rm -f "$_err_file"

plugins/yandex-wordstat/skills/yandex-wordstat/scripts/tests/test_iam_tmpdir_cleanup.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 6
    # the time _iam_token_issue ran `rm -rf "$_tmp"` the variable no longer pointed
  • Network accessline 9
    # $TMPDIR/wordstat_XXXXXX/key.pem on disk forever. # # No network: openssl and curl are replaced by stubs on PATH.
  • Network accessline 11
    # No network: openssl and curl are replaced by stubs on PATH.
  • Dangerous shell operationline 24
    trap 'rm -rf "$SANDBOX"' EXIT INT TERM
  • Network accessline 58
    # --- stub curl --------------------------------------------------------------
  • Network accessline 59
    cat > "$BIN/curl" <<'STUB'
  • Access to secretsline 73
    [Credential-related source omitted]
  • Network accessline 108
    WORDSTAT_CLOUD_SA_KEY_PATH="$SANDBOX/sa_key.json" WORDSTAT_CLOUD_OPENSSL_BIN="$BIN/openssl" WORDSTAT_IAM_API="http://127.0.0.1:0/stubbed"
  • Network accessline 110
    WORDSTAT_IAM_API="http://127.0.0.1:0/stubbed"
  • Dangerous shell operationline 165
    rm -rf "$WORDSTAT_CACHE_DIR"
  • Network accessline 180
    # --- 6. error path: the trap must still clean up ---------------------------- # Make the IAM exchange fail (curl returns empty) -> die_with_help -> exit 1
  • Network accessline 181
    # Make the IAM exchange fail (curl returns empty) -> die_with_help -> exit 1
  • Network accessline 184
    cat > "$BIN/curl" <<'STUB'
  • Dangerous shell operationline 190
    rm -rf "$WORDSTAT_CACHE_DIR"

plugins/yandex-wordstat/skills/yandex-wordstat/scripts/tests/test_missed_demand_query.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 44
    [Credential-related source omitted]

plugins/yandex-wordstat/skills/yandex-wordstat/scripts/tests/test_normalize.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 39
    [Credential-related source omitted]
  • Access to secretsline 40
    [Credential-related source omitted]

plugins/yandex-wordstat/skills/yandex-wordstat/scripts/tests/test_selector.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 9
    trap 'rm -rf "$TEST_TMP_DIR"' EXIT HUP INT TERM
  • Access to secretsline 44
    [Credential-related source omitted]
  • Access to secretsline 47
    [Credential-related source omitted]
  • Access to secretsline 51
    [Credential-related source omitted]
  • Access to secretsline 116
    [Credential-related source omitted]
  • Access to secretsline 122
    [Credential-related source omitted]
  • Access to secretsline 128
    [Credential-related source omitted]
  • Access to secretsline 137
    [Credential-related source omitted]

plugins/yandex-wordstat/skills/yandex-wordstat/scripts/tests/test_translate.sh

  • Executable scriptline 1
    #!/bin/sh
  • Access to secretsline 24
    [Credential-related source omitted]
  • Access to secretsline 25
    [Credential-related source omitted]
  • Access to secretsline 73
    [Credential-related source omitted]

plugins/yandex-wordstat/skills/yandex-wordstat/scripts/top_requests.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 24
    cleanup() { rm -f "$TMPFILE"; }

plugins/zoomkit/skills/zoomkit/.gitignore

  • Access to secretsline 1
    [Credential-related source omitted]

plugins/zoomkit/skills/zoomkit/SKILL.md

  • Network accessline 37
    Цены меняются. Для вопроса о стоимости «сейчас» проверь встроенный блок тарифов на официальной странице `https://zoomkit.ru/help`; связанный с ним внешний документ используй только если он открывается. Если проверить сеть нельзя, явно назов
  • Network accessline 61
    Если конкретный кабинет Яндекс.Директа не находится по имени или комментарию, проверь полный сохранённый ответ `clients`, а не только сокращённую таблицу. Не утверждай, что кабинет не подключён, пока среди результатов `yandex.direct` есть а
  • Network accessline 75
    1. Объясни ограничение API и дай ссылку `https://zoomkit.ru/profile`.

plugins/zoomkit/skills/zoomkit/config/.env.example

  • Network accessline 1
    # Ключ доступа из https://zoomkit.ru/profile/api
  • Network accessline 4
    # Для другого адреса также нужен ZOOMKIT_ALLOW_CUSTOM_API_BASE=1 в окружении. ZOOMKIT_API_BASE_URL="https://zoomkit.ru/api/v1"
  • Network accessline 5
    ZOOMKIT_API_BASE_URL="https://zoomkit.ru/api/v1"

plugins/zoomkit/skills/zoomkit/config/README.md

  • Network accessline 11
    Подробное сравнение возможностей и расходов находится в [GETTING_STARTED.md](../references/GETTING_STARTED.md). Актуальные цены перед решением проверьте на https://zoomkit.ru/help.
  • Network accessline 24
    command -v curl command -v jq
  • Dangerous shell operationline 28
    На macOS `jq` можно установить командой `brew install jq`, в Debian/Ubuntu — `sudo apt-get install jq`. Без `jq` команды чтения сохранят полный JSON в `cache/`, но изменяющие команды с `--body` будут остановлены до отправки.
  • Network accessline 32
    Если аккаунта ещё нет, зарегистрируйтесь: https://zoomkit.ru/register. Если аккаунт уже есть, войдите: https://zoomkit.ru/login.
  • Network accessline 36
    Откройте профиль: https://zoomkit.ru/profile и пополните баланс. Для первого запуска можно начать с 500 руб.: при справочном тарифе 52 руб. в сутки за управление ставками одного кабинета этого хватит примерно на девять дней.
  • Network accessline 42
    1. Откройте раздел ключей API: https://zoomkit.ru/profile/api
  • Access to secretsline 52
    [Credential-related source omitted]
  • Access to secretsline 53
    [Credential-related source omitted]
  • Network accessline 59
    [Credential-related source omitted]
  • Network accessline 60
    ZOOMKIT_API_BASE_URL="https://zoomkit.ru/api/v1"
  • Network accessline 86
    - `401` — сохранённый ключ отозван, истёк или скопирован неверно. Войдите в существующую учётную запись, выпустите замену в https://zoomkit.ru/profile/api, обновите `ZOOMKIT_API_TOKEN` в том же `config/.env` и повторите `token`. Если ключ в
  • Network accessline 95
    Официальная спецификация: https://zoomkit.ru/docs/api-v1.yaml

plugins/zoomkit/skills/zoomkit/references/API_REFERENCE.md

  • Network accessline 3
    - Официальная спецификация: https://zoomkit.ru/docs/api-v1.yaml
  • Network accessline 5
    - Основной адрес: `https://zoomkit.ru/api/v1`

plugins/zoomkit/skills/zoomkit/references/AUDIT_WORKFLOWS.md

  • Network accessline 3
    Источники: [официальная спецификация ZoomKit API 1.9.0](https://zoomkit.ru/docs/api-v1.yaml) и [справка ZoomKit](https://zoomkit.ru/help). Используй этот справочник для проверок по кабинетам и кампаниям.
  • Network accessline 35
    Для ручного действия направь пользователя в интерфейс Яндекс.Директа ZoomKit: https://zoomkit.ru/yandex/tokens. Старый [официальный снимок](https://zoomkit.ru/common/help/sample7.png) показывает действие «Убрать ключ», но не подтверждает, ч
  • Network accessline 63
    - Если страница товара остаётся успешной, но товар исчезает, задай в интерфейсе устойчивую строку доступности и режим «ошибка при отсутствии». - Если страница содержит явное «нет в наличии», задай эту строку и режим «ошибка при наличии». - 
  • Network accessline 64
    - Если страница содержит явное «нет в наличии», задай эту строку и режим «ошибка при наличии». - Открой именно `settings_url`; текстовый блок `text_settings` через API доступен только на чтение. Запасной ручной путь по [официальной анимации
  • Network accessline 65
    - Открой именно `settings_url`; текстовый блок `text_settings` через API доступен только на чтение. Запасной ручной путь по [официальной анимации](https://zoomkit.ru/common/help/sample1.gif): «Яндекс.Директ» → список кампаний → «Изменить» и

plugins/zoomkit/skills/zoomkit/references/BILLING.md

  • Network accessline 3
    Источник: [официальная спецификация ZoomKit API 1.9.0](https://zoomkit.ru/docs/api-v1.yaml).
  • Network accessline 47
    Затем направь в профиль: https://zoomkit.ru/profile. Не пробуй недокументированные адреса. Если возможности профиля недостаточно, предложи обратиться в поддержку: support@zoomkit.ru.
  • Network accessline 49
    Оплата по публичной оферте производится безналично в рублях по предоплате; после оплаты сумма отражается на балансе ZoomKit. Пункт 4.7 оферты предусматривает добавление 6% к сумме пополнения на этапе оплаты, поэтому итог нужно проверить в п

plugins/zoomkit/skills/zoomkit/references/GETTING_STARTED.md

  • Network accessline 16
    Источники: [сайт ZoomKit](https://zoomkit.ru/) и [страница регистрации](https://zoomkit.ru/register).
  • Network accessline 20
    Справочный снимок тарифов проверен 6 сентября 2026 года по [открытой справке ZoomKit](https://zoomkit.ru/help):
  • Network accessline 33
    Пункт 4.7 [публичной оферты](https://zoomkit.ru/docs/offer.pdf) предусматривает добавление 6% к сумме пополнения на этапе оплаты. Предупреди об этом и предложи проверить итоговую сумму в профиле перед оплатой.
  • Network accessline 35
    Тарифы — изменяемые сведения. Перед ответом о цене «сейчас» открой встроенный блок цен на `https://zoomkit.ru/help`. Связанный с ним внешний документ используй только если он открывается; на дату проверки ссылка была недоступна, но сама стр
  • Network accessline 58
    3. Приведи один понятный расчёт, если известен объём кабинетов, каналов или сообществ. 4. Объясни условие, при котором автоматизация оправдает расход. 5. Дай ссылку на регистрацию: https://zoomkit.ru/register.
  • Network accessline 59
    4. Объясни условие, при котором автоматизация оправдает расход. 5. Дай ссылку на регистрацию: https://zoomkit.ru/register. 6. После регистрации предложи стартовое пополнение на 500 руб. в профиле: https://zoomkit.ru/profile. Уточни, что это
  • Network accessline 60
    5. Дай ссылку на регистрацию: https://zoomkit.ru/register.
  • Network accessline 61
    6. После регистрации предложи стартовое пополнение на 500 руб. в профиле: https://zoomkit.ru/profile. Уточни, что это пример, а не минимальная сумма, и напомни проверить добавляемые 6%.
  • Network accessline 62
    7. После пополнения направь за ключом: https://zoomkit.ru/profile/api.

plugins/zoomkit/skills/zoomkit/references/YANDEX_DIRECT.md

  • Network accessline 18
    Для ручного управления открой https://zoomkit.ru/yandex/tokens. В [официальном снимке интерфейса](https://zoomkit.ru/common/help/sample7.png) есть действие «Убрать ключ», но открытые материалы подтверждают только потерю доступа к связанным 
  • Network accessline 26
    1. Открой в личном кабинете ZoomKit страницу https://zoomkit.ru/yandex/direct.
  • Network accessline 62
    Названия и значение текстового поля задай вручную по `settings_url`. Если приходится идти через меню, [официальная анимация](https://zoomkit.ru/common/help/sample1.gif) показывает путь: «Яндекс.Директ» → список кампаний → выбрать кампанию и
  • Network accessline 64
    После ручной настройки строки переключатели автоматизации можно включить через API. Заготовка `assets/url-check-product-protection.example.json` явно задаёт весь набор условий автоприостановки: оставляет включёнными HTTP 4xx и строковое пра

plugins/zoomkit/skills/zoomkit/scripts/report-wait.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 106
    rm -f "$STATE_FILE"
  • Dangerous shell operationline 108
    rm -f "$PUBLISH_TMP"

plugins/zoomkit/skills/zoomkit/scripts/tests/fake_curl.sh

  • Executable scriptline 1
    #!/bin/sh
  • Network accessline 2
    # Подмена curl для автономных проверок zoomkit.sh.
  • Network accessline 78
    shift 2             ;;         http://*|https://*)
  • Network accessline 79
    ;;         http://*|https://*)             URL=$1
  • Network accessline 80
    http://*|https://*)

plugins/zoomkit/skills/zoomkit/scripts/tests/run.sh

  • Executable scriptline 1
    #!/bin/sh

plugins/zoomkit/skills/zoomkit/scripts/tests/test_cli.sh

  • Executable scriptline 1
    #!/bin/sh
  • Dangerous shell operationline 12
    trap 'rm -rf "$TEST_TMP"' 0
  • Access to secretsline 47
    [Credential-related source omitted]
  • Access to secretsline 48
    [Credential-related source omitted]
  • Network accessline 65
    ZOOMKIT_CONFIG_FILE="$TEST_TMP/config.env"      ZOOMKIT_CACHE_DIR="$TEST_TMP/cache"      ZOOMKIT_API_BASE_URL="https://api.example.test/v1"      ZOOMKIT_ALLOW_CUSTOM_API_BASE=1      ZOOMKIT_CURL_BIN="$FAKE_CURL"      MOCK_LOG="$TEST_TMP/cur
  • Network accessline 66
    ZOOMKIT_CACHE_DIR="$TEST_TMP/cache" \     ZOOMKIT_API_BASE_URL="https://api.example.test/v1" \     ZOOMKIT_ALLOW_CUSTOM_API_BASE=1 \
  • Network accessline 67
    ZOOMKIT_API_BASE_URL="https://api.example.test/v1" \
  • Dangerous shell operationline 78
    rm -f "$TEST_TMP/curl.log"
  • Network accessline 82
    assert_contains "$TEST_TMP/out" "--confirm"     [ ! -e "$TEST_TMP/curl.log" ] || fail "$_ztwg_name: заблокированное изменение дошло до curl" }
  • Dangerous shell operationline 90
    rm -f "$TEST_TMP/curl.log"
  • Network accessline 91
    [Credential-related source omitted]
  • Network accessline 92
    assert_contains "$TEST_TMP/out" "Метод: $_ztdr_method"     assert_contains "$TEST_TMP/out" "Адрес: https://api.example.test/v1$_ztdr_path"     [ ! -e "$TEST_TMP/curl.log" ] || fail "$*: --dry-run вызвал curl"
  • Network accessline 93
    assert_contains "$TEST_TMP/out" "Адрес: https://api.example.test/v1$_ztdr_path"     [ ! -e "$TEST_TMP/curl.log" ] || fail "$*: --dry-run вызвал curl" }
  • Dangerous shell operationline 98
    rm -f "$TEST_TMP/config.env" "$TEST_TMP/curl.log"
  • Network accessline 100
    fail "запрос проектов без ключа завершился успешно" fi assert_contains "$TEST_TMP/out" "https://zoomkit.ru/profile/api"
  • Network accessline 101
    fi assert_contains "$TEST_TMP/out" "https://zoomkit.ru/profile/api" assert_contains "$TEST_TMP/out" "ZoomKit помогает вести рекламу"
  • Network accessline 102
    assert_contains "$TEST_TMP/out" "https://zoomkit.ru/profile/api"
  • Network accessline 103
    assert_contains "$TEST_TMP/out" "ZoomKit помогает вести рекламу" assert_contains "$TEST_TMP/out" "50 руб./сутки + 2 руб./сутки" assert_contains "$TEST_TMP/out" "https://zoomkit.ru/register"
  • Network accessline 104
    assert_contains "$TEST_TMP/out" "50 руб./сутки + 2 руб./сутки" assert_contains "$TEST_TMP/out" "https://zoomkit.ru/register" assert_contains "$TEST_TMP/out" "можно начать с 500 руб."
  • Network accessline 105
    assert_contains "$TEST_TMP/out" "https://zoomkit.ru/register"
  • Access to secretsline 107
    [Credential-related source omitted]
  • Network accessline 108
    [Credential-related source omitted]
  • Access to secretsline 108
    [Credential-related source omitted]
  • Network accessline 109
    [Credential-related source omitted]
  • Access to secretsline 109
    [Credential-related source omitted]
  • Network accessline 110
    assert_before "$TEST_TMP/out" "https://zoomkit.ru/register" "можно начать с 500 руб."
  • Network accessline 111
    assert_before "$TEST_TMP/out" "можно начать с 500 руб." "https://zoomkit.ru/profile/api"
  • Network accessline 112
    [Credential-related source omitted]
  • Access to secretsline 112
    [Credential-related source omitted]
  • Access to secretsline 113
    [Credential-related source omitted]
  • Dangerous shell operationline 117
    rm -f "$TEST_TMP/curl.log"
  • Network accessline 124
    assert_contains "$TEST_TMP/out" "добавляемых при пополнении 6%" assert_contains "$TEST_TMP/out" "точный общий расход показывает команда balance" assert_contains "$TEST_TMP/out" "https://zoomkit.ru/help"
  • Network accessline 125
    assert_contains "$TEST_TMP/out" "точный общий расход показывает команда balance" assert_contains "$TEST_TMP/out" "https://zoomkit.ru/help" assert_contains "$TEST_TMP/out" "https://zoomkit.ru/register"
  • Network accessline 126
    assert_contains "$TEST_TMP/out" "https://zoomkit.ru/help"
  • Network accessline 127
    assert_contains "$TEST_TMP/out" "https://zoomkit.ru/register"
  • Access to secretsline 129
    [Credential-related source omitted]
  • Dangerous shell operationline 133
    rm -f "$TEST_TMP/curl.log"
  • Network accessline 134
    ZOOMKIT_CONFIG_FILE="$TEST_TMP/missing.env" sh "$ZOOMKIT_SCRIPT" billing-capabilities > "$TEST_TMP/out" 2>&1 assert_contains "$TEST_TMP/out" "недоступно:  создание счета" assert_contains "$TEST_TMP/out" "https://zoomkit.ru/profile"
  • Network accessline 135
    assert_contains "$TEST_TMP/out" "недоступно:  создание счета" assert_contains "$TEST_TMP/out" "https://zoomkit.ru/profile" [ ! -e "$TEST_TMP/curl.log" ] || fail "справка о возможностях вызвала curl"
  • Network accessline 136
    assert_contains "$TEST_TMP/out" "https://zoomkit.ru/profile"
  • Dangerous shell operationline 141
    rm -f "$TEST_TMP/curl.log"
  • Access to secretsline 147
    [Credential-related source omitted]
  • Access to secretsline 151
    [Credential-related source omitted]
  • Dangerous shell operationline 157
    rm -f "$TEST_TMP/curl.log"
  • Access to secretsline 159
    [Credential-related source omitted]
  • Access to secretsline 162
    [Credential-related source omitted]
  • Network accessline 166
    [Credential-related source omitted]
  • Network accessline 167
    [Credential-related source omitted]
  • Network accessline 168
    assert_contains "$TEST_TMP/curl.log" "URL=https://api.example.test/v1/token"
  • Access to secretsline 176
    [Credential-related source omitted]
  • Dangerous shell operationline 178
    rm -f "$TEST_TMP/curl.log"
  • Dangerous shell operationline 183
    rm -f "$TEST_TMP/curl.log"
  • Dangerous shell operationline 189
    rm -f "$TEST_TMP/curl.log"
  • Network accessline 203
    assert_contains "$TEST_TMP/out" "Строк таблицы: 3" assert_contains "$TEST_TMP/out" "В Яндекс.Директе без комментария: 1; из них porg-*: 1" assert_contains "$TEST_TMP/out" "https://zoomkit.ru/yandex/direct"
  • Network accessline 204
    assert_contains "$TEST_TMP/out" "В Яндекс.Директе без комментария: 1; из них porg-*: 1" assert_contains "$TEST_TMP/out" "https://zoomkit.ru/yandex/direct" assert_contains "$TEST_TMP/out" "Клиенты и дневной расход"
  • Network accessline 205
    assert_contains "$TEST_TMP/out" "https://zoomkit.ru/yandex/direct"
  • Dangerous shell operationline 227
    rm -f "$TEST_TMP/curl.log"
  • Dangerous shell operationline 235
    rm -f "$TEST_TMP/curl.log"
  • Dangerous shell operationline 243
    rm -f "$TEST_TMP/curl.log"
  • Network accessline 244
    [Credential-related source omitted]
  • Access to secretsline 244
    [Credential-related source omitted]
  • Network accessline 245
    [Credential-related source omitted]
  • Network accessline 246
    ZOOMKIT_API_BASE_URL="http://collector.example/v1" \
  • Dangerous shell operationline 257
    rm -f "$TEST_TMP/curl.log"
  • Network accessline 258
    [Credential-related source omitted]
  • Access to secretsline 258
    [Credential-related source omitted]
  • Network accessline 259
    [Credential-related source omitted]
  • Network accessline 260
    ZOOMKIT_API_BASE_URL="http://localhost:80@collector.example/v1" \
  • Network accessline 272
    [Credential-related source omitted]
  • Access to secretsline 272
    [Credential-related source omitted]
  • Network accessline 273
    [Credential-related source omitted]
  • Network accessline 274
    ZOOMKIT_API_BASE_URL="http://127.0.0.1:8765/v1" \
  • Network accessline 276
    ZOOMKIT_ALLOW_INSECURE_HTTP=1 \ sh "$ZOOMKIT_SCRIPT" token --dry-run > "$TEST_TMP/out" 2>&1 assert_contains "$TEST_TMP/out" "Адрес: http://127.0.0.1:8765/v1/token"
  • Network accessline 278
    assert_contains "$TEST_TMP/out" "Адрес: http://127.0.0.1:8765/v1/token"
  • Dangerous shell operationline 304
    rm -f "$TEST_TMP/curl.log"
  • Dangerous shell operationline 327
    rm -f "$TEST_TMP/curl.log"
  • Dangerous shell operationline 341
    rm -f "$TEST_TMP/curl.log"
  • Dangerous shell operationline 350
    rm -f "$TEST_TMP/curl.log"
  • Network accessline 423
    printf '%s\n' '{"campaign_id":56,"check_urls_enabled":true,"suspend_urls_enabled":true,"suspend_urls_if_301":false,"suspend_urls_if_302":false,"suspend_urls_if_303":false,"suspend_urls_if_307":false,"suspend_urls_if_400_499":true,"suspend_u
  • Network accessline 428
    assert_contains "$TEST_TMP/out" "Искомая строка: В корзину" assert_contains "$TEST_TMP/out" "Ошибка при отсутствии строки: true" assert_contains "$TEST_TMP/out" "https://zoomkit.ru/yandex/direct/56/url-check-settings"
  • Network accessline 429
    assert_contains "$TEST_TMP/out" "Ошибка при отсутствии строки: true" assert_contains "$TEST_TMP/out" "https://zoomkit.ru/yandex/direct/56/url-check-settings" assert_contains "$TEST_TMP/out" "Для аудита кабинета получите список командой camp
  • Network accessline 430
    assert_contains "$TEST_TMP/out" "https://zoomkit.ru/yandex/direct/56/url-check-settings"
  • Network accessline 433
    printf '%s\n' '{"id":91,"campaign_id":56,"complete":true,"sent":false,"status":"has_problems","groups":[{"adgroup_id":501,"problems":[{"type":"error","url":"https://shop.example/item","source_url":"https://shop.example/item?utm_source=yande
  • Network accessline 434
    [Credential-related source omitted]
  • Network accessline 435
    assert_contains "$TEST_TMP/out" "Состояние: has_problems" assert_contains "$TEST_TMP/out" "https://shop.example/item" assert_contains "$TEST_TMP/out" "HTTP 404"
  • Network accessline 436
    assert_contains "$TEST_TMP/out" "https://shop.example/item"
  • Network accessline 442
    [Credential-related source omitted]
  • Network accessline 443
    assert_contains "$TEST_TMP/curl.log" "METHOD=POST" assert_contains "$TEST_TMP/curl.log" "URL=https://api.example.test/v1/stats/reports" assert_contains "$TEST_TMP/curl.log" "CONTENT_TYPE=Content-Type: application/json"
  • Network accessline 444
    assert_contains "$TEST_TMP/curl.log" "URL=https://api.example.test/v1/stats/reports"
  • Dangerous shell operationline 456
    rm -f "$TEST_TMP/report-counter"
  • Dangerous shell operationline 472
    rm -f "$TEST_TMP/cache/report-12.json"
  • Network accessline 529
    [Credential-related source omitted]
  • Network accessline 530
    assert_contains "$TEST_TMP/out" "ключ ZoomKit API не найден или недействителен" assert_contains "$TEST_TMP/out" "https://zoomkit.ru/profile/api" assert_contains "$TEST_TMP/out" "Замените значение ZOOMKIT_API_TOKEN"
  • Network accessline 531
    assert_contains "$TEST_TMP/out" "https://zoomkit.ru/profile/api"
  • Network accessline 535
    fail "HTTP 401 ошибочно предлагает стартовое пополнение" fi if grep -F -- "https://zoomkit.ru/register" "$TEST_TMP/out" >/dev/null 2>&1; then
  • Network accessline 536
    fi if grep -F -- "https://zoomkit.ru/register" "$TEST_TMP/out" >/dev/null 2>&1; then     fail "HTTP 401 ошибочно предлагает повторную регистрацию"
  • Network accessline 537
    if grep -F -- "https://zoomkit.ru/register" "$TEST_TMP/out" >/dev/null 2>&1; then

plugins/zoomkit/skills/zoomkit/scripts/zoomkit.sh

  • Executable scriptline 1
    #!/bin/sh
  • Network accessline 8
    [Credential-related source omitted]
  • Access to secretsline 8
    [Credential-related source omitted]
  • Network accessline 9
    CACHE_DIR=${ZOOMKIT_CACHE_DIR:-"$SKILL_DIR/cache"} PROFILE_API_URL="https://zoomkit.ru/profile/api" PROFILE_URL="https://zoomkit.ru/profile"
  • Network accessline 10
    PROFILE_API_URL="https://zoomkit.ru/profile/api"
  • Network accessline 11
    PROFILE_URL="https://zoomkit.ru/profile"
  • Network accessline 12
    REGISTER_URL="https://zoomkit.ru/register"
  • Network accessline 13
    HELP_URL="https://zoomkit.ru/help"
  • Network accessline 14
    DEFAULT_API_BASE_URL="https://zoomkit.ru/api/v1"
  • Network accessline 68
    cat <<EOF Порядок подключения:   1. Если учётной записи ещё нет, зарегистрируйтесь: $REGISTER_URL
  • Network accessline 69
    Порядок подключения:   1. Если учётной записи ещё нет, зарегистрируйтесь: $REGISTER_URL      Если она уже есть, войдите: https://zoomkit.ru/login
  • Network accessline 70
    1. Если учётной записи ещё нет, зарегистрируйтесь: $REGISTER_URL
  • Network accessline 71
    Если она уже есть, войдите: https://zoomkit.ru/login
  • Network accessline 72
    2. Пополните баланс в профиле: $PROFILE_URL
  • Network accessline 73
    Для первого запуска можно начать с 500 руб. Это пример, а не заявленная      минимальная сумма. Перед оплатой проверьте итог с добавляемыми 6%.   3. После пополнения создайте ключ API: $PROFILE_API_URL
  • Network accessline 74
    минимальная сумма. Перед оплатой проверьте итог с добавляемыми 6%.   3. После пополнения создайте ключ API: $PROFILE_API_URL   4. Сохраните ключ в штатном постоянном файле навыка:
  • Network accessline 75
    3. После пополнения создайте ключ API: $PROFILE_API_URL
  • Access to secretsline 78
    [Credential-related source omitted]
  • Access to secretsline 79
    [Credential-related source omitted]
  • Access to secretsline 81
    [Credential-related source omitted]
  • Network accessline 90
    cat >&2 <<EOF Восстановление доступа:   1. Войдите в существующую учётную запись: https://zoomkit.ru/login
  • Network accessline 91
    Восстановление доступа:   1. Войдите в существующую учётную запись: https://zoomkit.ru/login   2. Откройте раздел ключей и выпустите замену недействительному ключу:
  • Network accessline 92
    1. Войдите в существующую учётную запись: https://zoomkit.ru/login
  • Network accessline 93
    2. Откройте раздел ключей и выпустите замену недействительному ключу:      $PROFILE_API_URL   3. Замените значение ZOOMKIT_API_TOKEN в постоянном файле навыка:
  • Network accessline 94
    $PROFILE_API_URL
  • Access to secretsline 96
    [Credential-related source omitted]
  • Access to secretsline 97
    [Credential-related source omitted]
  • Network accessline 136
    добавляемых при пополнении 6% по публичной оферте. После подключения точный общий расход показывает команда balance. Перед расчётом проверьте актуальные цены: $HELP_URL
  • Network accessline 138
    Перед расчётом проверьте актуальные цены: $HELP_URL
  • Network accessline 157
    Профиль для выставления и оплаты счетов: $PROFILE_URL
  • Access to secretsline 177
    [Credential-related source omitted]
  • Access to secretsline 178
    [Credential-related source omitted]
  • Network accessline 223
    ZOOMKIT_API_BASE_URL=${ZOOMKIT_API_BASE_URL:-$DEFAULT_API_BASE_URL}
  • Network accessline 232
    if [ "$ZOOMKIT_API_BASE_URL" != "$DEFAULT_API_BASE_URL" ] && [ "${ZOOMKIT_ALLOW_CUSTOM_API_BASE:-0}" != 1 ]; then
  • Network accessline 236
    case "$ZOOMKIT_API_BASE_URL" in         https://*) ;;
  • Network accessline 237
    https://*) ;;
  • Network accessline 238
    http://*)
  • Access to secretsline 259
    [Credential-related source omitted]
  • Access to secretsline 266
    [Credential-related source omitted]
  • Access to secretsline 267
    [Credential-related source omitted]
  • Network accessline 506
    "В Яндекс.Директе без комментария: \($without_comments | length); из них porg-*: \($agency_without_comments | length).",                     "Если нужный кабинет не найден, но он подключён, не угадывайте соответствие по техническому имени."
  • Network accessline 507
    "Если нужный кабинет не найден, но он подключён, не угадывайте соответствие по техническому имени.",                     "Откройте личный кабинет: https://zoomkit.ru/yandex/direct → «Клиенты и дневной расход» и заполните «Комментарий» для в
  • Network accessline 508
    "Откройте личный кабинет: https://zoomkit.ru/yandex/direct → «Клиенты и дневной расход» и заполните «Комментарий» для всех непонятных аккаунтов, особенно porg-*; затем повторите clients."
  • Network accessline 705
    invoice-create|invoices-create|payment-link|payment-link-create|invoice-download)         printf '%s\n' "Ошибка: официальный ZoomKit API 1.9.0 не поддерживает эту операцию." >&2         printf '%s\n' "Доступны только balance и invoices; выс
  • Network accessline 706
    printf '%s\n' "Ошибка: официальный ZoomKit API 1.9.0 не поддерживает эту операцию." >&2         printf '%s\n' "Доступны только balance и invoices; выставление и оплата выполняются в $PROFILE_URL" >&2         exit 4
  • Network accessline 707
    printf '%s\n' "Доступны только balance и invoices; выставление и оплата выполняются в $PROFILE_URL" >&2
  • Network accessline 968
    CURL_BIN=${ZOOMKIT_CURL_BIN:-curl} command -v "$CURL_BIN" >/dev/null 2>&1 || die "не найден curl" CURL_CONNECT_TIMEOUT=${ZOOMKIT_CURL_CONNECT_TIMEOUT:-10}
  • Network accessline 969
    command -v "$CURL_BIN" >/dev/null 2>&1 || die "не найден curl" CURL_CONNECT_TIMEOUT=${ZOOMKIT_CURL_CONNECT_TIMEOUT:-10} CURL_MAX_TIME=${ZOOMKIT_CURL_MAX_TIME:-120}
  • Dangerous shell operationline 988
    rm -f "$HEADERS_FILE" "$BODY_TMP" "$REQUEST_HEADERS_FILE"
  • Dangerous shell operationline 990
    rm -f "$OUTPUT_TMP"
  • Access to secretsline 1000
    [Credential-related source omitted]

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Declared and executed: 3 facts
Signal confidence: 497 facts

and 447 more

Only the first 500 facts are listed.

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexNativeManifest AGENTS.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md plugins/agent-deck/skills/agent-deck/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md plugins/agent-deck/skills/agent-deck/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md plugins/agent-deck/skills/agent-deck/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md plugins/agent-deck/skills/agent-deck/SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.