yandex-metrika Работа с Yandex Metrika Reporting API v1. Отчёты по трафику, конверсиям, UTM-меткам, поисковым системам. Config Требуется в . Инструкция: . Philosophy 1. Cache-first — конфигурационные данные (счётчики, цели, инфо) кешируются надолго. Отчёты кешируются по ключу counter+dates+params. Перед API-запросом всегда проверяем кеш. 2. Context window hygiene — stdout ограничен 30 строками. Полные данные в CSV/файл. Кеш доступен через grep/rg для поиска без загрузки в контекст. 3. Точные данные — accuracy=1 (без сэмплирования), фильтр isRobot по умолчанию. 4. Атрибуция — дефолт (последний…

\\n''{/g' \"$_flat\" | while IFS= read -r _line || [ -n \"$_line\" ]; do\n _id=$(echo \"$_line\" | grep -o '\"id\"[[:space:]]*:[[:space:]]*[0-9]*' | head -1 | sed 's/.*:[[:space:]]*//')\n _name=$(echo \"$_line\" | grep -o '\"name\"[[:space:]]*:[[:space:]]*\"[^\"]*\"' | head -1 | sed 's/.*:[[:space:]]*\"//;s/\"$//' | tr '\t\\n' ' ')\n _site=$(echo \"$_line\" | grep -o '\"site\"[[:space:]]*:[[:space:]]*\"[^\"]*\"' | head -1 | sed 's/.*:[[:space:]]*\"//;s/\"$//' | tr '\t\\n' ' ')\n\n if [ -n \"$_id\" ]; then\n printf '%s\\t%s\\t%s\\n' \"$_id\" \"$_name\" \"$_site\"\n fi\n done\n} > \"$CACHE_TSV\"\nrm -f \"$_flat\"\n\n# Output\necho \"ID\tName\tSite\"\nif [ -n \"$SEARCH\" ]; then\n grep -i \"$SEARCH\" \"$CACHE_TSV\" || echo \"(no matches for '$SEARCH')\"\nelse\n print_csv_head \"$CACHE_TSV\" 30\nfi\necho \"\"\necho \"Total counters: $(wc -l \u003c \"$CACHE_TSV\" | tr -d ' ')\"\necho \"Cached: $CACHE_TSV (use grep/rg to search)\"\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":2648,"content_sha256":"8e828f950ab58cf571a238f3bb0b9d0c81d8039a4a3f8c7d08ecc83c1c14ab8c"},{"filename":"scripts/direct_clients.sh","content":"#!/bin/sh\n# Get Yandex Direct client logins linked to a Metrika counter\n# Usage: direct_clients.sh --counter \u003cID> [--no-cache]\n#\n# Calls GET /management/v1/clients?counters=\u003ccounterId>\n# Saves chief_login to cache/counter_\u003cid>/direct_clients.json\n\nset -e\n\nSCRIPT_DIR=\"$(cd \"$(dirname \"$0\")\" && pwd)\"\n. \"$SCRIPT_DIR/common.sh\"\nload_config\n\nCOUNTER=\"\"\nNO_CACHE=\"\"\n\nwhile [ $# -gt 0 ]; do\n case \"$1\" in\n --counter) COUNTER=\"$2\"; shift 2 ;;\n --no-cache) NO_CACHE=\"1\"; shift ;;\n *) shift ;;\n esac\ndone\n\nif [ -z \"$COUNTER\" ]; then\n echo \"Error: --counter \u003cID> is required.\" >&2\n echo \"Usage: direct_clients.sh --counter \u003cID> [--no-cache]\" >&2\n exit 1\nfi\n\nCOUNTER_DIR=$(cache_dir_for_counter \"$COUNTER\")\nCACHE_JSON=\"$COUNTER_DIR/direct_clients.json\"\n\n# Try cache first\nif [ -z \"$NO_CACHE\" ] && [ -f \"$CACHE_JSON\" ] && [ -s \"$CACHE_JSON\" ]; then\n echo \"Direct clients for counter $COUNTER:\"\n # Extract logins from cache\n _all_accessible=$(grep -o '\"all_clients_accessible_to_user\"[[:space:]]*:[[:space:]]*[a-z]*' \"$CACHE_JSON\" | head -1 | sed 's/.*:[[:space:]]*//')\n grep -o '\"chief_login\"[[:space:]]*:[[:space:]]*\"[^\"]*\"' \"$CACHE_JSON\" | sed 's/.*\"chief_login\"[[:space:]]*:[[:space:]]*\"//;s/\"$//' | while IFS= read -r _login || [ -n \"$_login\" ]; do\n echo \" - $_login\"\n done\n if [ \"$_all_accessible\" = \"false\" ]; then\n echo \"\"\n echo \"WARNING: Not all Direct clients are accessible. Cost data may be incomplete.\"\n fi\n echo \"\"\n echo \"(cached: $CACHE_JSON)\"\n exit 0\nfi\n\n# Fetch from API\necho \"Fetching Direct clients for counter $COUNTER...\" >&2\n\nTMPFILE=\"${METRIKA_TMPDIR}/metrika_direct_clients_$.json\"\ntrap 'rm -f \"$TMPFILE\"' EXIT\n\nmetrika_mgmt_get \"/management/v1/clients\" \\\n --data-urlencode \"counters=$COUNTER\" > \"$TMPFILE\"\n\n# Save raw JSON\ncp \"$TMPFILE\" \"$CACHE_JSON\"\n\n# Output\necho \"Direct clients for counter $COUNTER:\"\n\n_all_accessible=$(grep -o '\"all_clients_accessible_to_user\"[[:space:]]*:[[:space:]]*[a-z]*' \"$CACHE_JSON\" | head -1 | sed 's/.*:[[:space:]]*//')\n\n_count=0\ngrep -o '\"chief_login\"[[:space:]]*:[[:space:]]*\"[^\"]*\"' \"$CACHE_JSON\" | sed 's/.*\"chief_login\"[[:space:]]*:[[:space:]]*\"//;s/\"$//' | while IFS= read -r _login || [ -n \"$_login\" ]; do\n echo \" - $_login\"\n _count=$(( _count + 1 ))\ndone\n\nif [ \"$_all_accessible\" = \"false\" ]; then\n echo \"\"\n echo \"WARNING: Not all Direct clients are accessible. Cost data may be incomplete.\"\nfi\n\necho \"\"\necho \"Cached: $CACHE_JSON\"\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":2498,"content_sha256":"953e9ce6e056f5e6094a84cedf962dbdb09a5f1b2cdd44fff1192ce198862954"},{"filename":"scripts/direct_costs.sh","content":"#!/bin/sh\n# Yandex Direct costs report: clicks, ad cost, visits by campaign/date\n# Usage: direct_costs.sh --counter \u003cID> --date1 YYYY-MM-DD [--date2 ...]\n# [--direct-client-logins \"login1,login2\"] [--limit N] [--csv path] [--no-cache]\n#\n# Requires direct_client_logins — auto-fetched from cache or via direct_clients.sh.\n# Override with --direct-client-logins if cache is empty or endpoint deprecated.\n# Uses ym:ad:* metrics (ad scope, not visit scope).\n# No --group support: ym:ad:date dimension gives daily granularity,\n# aggregate to week/month in CSV/Excel.\n\nset -e\n\nSCRIPT_DIR=\"$(cd \"$(dirname \"$0\")\" && pwd)\"\n. \"$SCRIPT_DIR/common.sh\"\nload_config\n\n# Parse --direct-client-logins before parse_common_params (which ignores unknown flags)\nDIRECT_LOGINS_OVERRIDE=\"\"\n_prev_dc=\"\"\nfor _arg in \"$@\"; do\n case \"$_prev_dc\" in\n --direct-client-logins) DIRECT_LOGINS_OVERRIDE=\"$_arg\"; _prev_dc=\"\"; continue ;;\n esac\n _prev_dc=\"$_arg\"\ndone\n\nparse_common_params \"$@\"\nrequire_counter\nrequire_dates\n\n# --- Get direct_client_logins ---\nCOUNTER_DIR=$(cache_dir_for_counter \"$COUNTER\")\n\nif [ -n \"$DIRECT_LOGINS_OVERRIDE\" ]; then\n DIRECT_LOGINS=\"$DIRECT_LOGINS_OVERRIDE\"\nelse\n _dc_cache=\"$COUNTER_DIR/direct_clients.json\"\n\n if [ ! -f \"$_dc_cache\" ] || [ ! -s \"$_dc_cache\" ]; then\n echo \"Direct clients cache not found. Fetching...\" >&2\n sh \"$SCRIPT_DIR/direct_clients.sh\" --counter \"$COUNTER\" >/dev/null || true\n fi\n\n if [ ! -f \"$_dc_cache\" ] || [ ! -s \"$_dc_cache\" ]; then\n echo \"Error: could not get Direct client logins for counter $COUNTER.\" >&2\n echo \"The /management/v1/clients endpoint may be unavailable.\" >&2\n echo \"Specify logins manually: --direct-client-logins \\\"login1,login2\\\"\" >&2\n exit 1\n fi\n\n # Extract comma-separated logins\n _logins_tmp=$(grep -o '\"chief_login\"[[:space:]]*:[[:space:]]*\"[^\"]*\"' \"$_dc_cache\" | sed 's/.*\"chief_login\"[[:space:]]*:[[:space:]]*\"//;s/\"$//')\n echo \"$_logins_tmp\" | while IFS= read -r _login || [ -n \"$_login\" ]; do\n if [ -n \"$_login\" ]; then\n printf '%s\\n' \"$_login\"\n fi\n done > \"${METRIKA_TMPDIR}/metrika_logins_$.txt\"\n\n # Build comma-separated string\n DIRECT_LOGINS=\"\"\n _first=1\n while IFS= read -r _login || [ -n \"$_login\" ]; do\n if [ -n \"$_login\" ]; then\n if [ \"$_first\" = \"1\" ]; then\n DIRECT_LOGINS=\"$_login\"\n _first=0\n else\n DIRECT_LOGINS=\"${DIRECT_LOGINS},${_login}\"\n fi\n fi\n done \u003c \"${METRIKA_TMPDIR}/metrika_logins_$.txt\"\n rm -f \"${METRIKA_TMPDIR}/metrika_logins_$.txt\"\n\n if [ -z \"$DIRECT_LOGINS\" ]; then\n echo \"Error: no Direct client logins found for counter $COUNTER.\" >&2\n echo \"This counter may not have linked Yandex Direct accounts.\" >&2\n echo \"Specify logins manually: --direct-client-logins \\\"login\\\"\" >&2\n exit 1\n fi\n\n # Check accessibility warning\n _all_accessible=$(grep -o '\"all_clients_accessible_to_user\"[[:space:]]*:[[:space:]]*[a-z]*' \"$_dc_cache\" | head -1 | sed 's/.*:[[:space:]]*//')\n if [ \"$_all_accessible\" = \"false\" ]; then\n echo \"WARNING: Not all Direct clients are accessible. Cost data may be incomplete.\" >&2\n fi\nfi\n\n# --- Build report ---\nMETRICS=\"ym:ad:clicks,ym:ad:RUBConvertedAdCost,ym:ad:visits\"\nDIMENSIONS=\"ym:ad:date,ym:ad:directOrder\"\n\n# Cache key\n_params_str=\"direct_costs_${COUNTER}_${DATE1}_${DATE2}_${DIRECT_LOGINS}_${LIMIT}\"\n_hash=$(cache_key \"$_params_str\")\nCACHE_FILE=\"$COUNTER_DIR/reports/direct_costs_${DATE1}_${DATE2}_${_hash}.csv\"\n\n# Skip cache if date2 is today\nif date_is_today \"$DATE2\"; then\n NO_CACHE=\"1\"\nfi\n\n# Check cache\nif [ -z \"$NO_CACHE\" ] && [ -f \"$CACHE_FILE\" ] && [ -s \"$CACHE_FILE\" ]; then\n echo \"Direct costs for counter $COUNTER ($DATE1 — $DATE2):\"\n print_csv_head \"$CACHE_FILE\" 30\n [ -n \"$CSV_OUT\" ] && cp \"$CACHE_FILE\" \"$CSV_OUT\" && echo \"Copied to: $CSV_OUT\"\n exit 0\nfi\n\n# Always use /stat/v1/data.csv (no bytime — ym:ad:date gives daily granularity)\nAPI_PATH=\"/stat/v1/data.csv\"\n\necho \"Fetching Direct costs for counter $COUNTER ($DATE1 — $DATE2)...\" >&2\n\nTMPFILE=\"${METRIKA_TMPDIR}/metrika_direct_costs_$.csv\"\ntrap 'rm -f \"$TMPFILE\"' EXIT\n\nmetrika_get_csv \"$API_PATH\" \"$TMPFILE\" \\\n --data-urlencode \"ids=$COUNTER\" \\\n --data-urlencode \"date1=$DATE1\" \\\n --data-urlencode \"date2=$DATE2\" \\\n --data-urlencode \"metrics=$METRICS\" \\\n --data-urlencode \"dimensions=$DIMENSIONS\" \\\n --data-urlencode \"direct_client_logins=$DIRECT_LOGINS\" \\\n --data-urlencode \"accuracy=1\" \\\n ${LIMIT:+--data-urlencode \"limit=$LIMIT\"}\n\ncp \"$TMPFILE\" \"$CACHE_FILE\"\n\necho \"Direct costs for counter $COUNTER ($DATE1 — $DATE2):\"\nprint_csv_head \"$CACHE_FILE\" 30\n\nif [ -n \"$CSV_OUT\" ]; then\n cp \"$CACHE_FILE\" \"$CSV_OUT\"\n echo \"Exported to: $CSV_OUT\"\nfi\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":4866,"content_sha256":"fe7be9dcca66c8eaab864d51b44bda7cb5a31ab3f7e67433c87fb03d6372701f"},{"filename":"scripts/ecommerce.sh","content":"#!/bin/sh\n# Ecommerce report: purchases, revenue, avg check\n# Usage: ecommerce.sh --counter \u003cID> --date1 YYYY-MM-DD [--date2 ...] [--group day|week|month]\n# [--device ...] [--source ...] [--attribution lastsign|last|first]\n# [--currency RUB|USD|EUR] [--limit N] [--csv path] [--no-cache]\n#\n# Currency: uses documented ecommerce\u003cCUR>ConvertedRevenue* metrics.\n# Default currency is read from counter info cache (currency_code field).\n# Override with --currency RUB|USD|EUR.\n\nset -e\n\nSCRIPT_DIR=\"$(cd \"$(dirname \"$0\")\" && pwd)\"\n. \"$SCRIPT_DIR/common.sh\"\nload_config\n\n# Parse --currency before parse_common_params (which ignores unknown flags)\nCURRENCY=\"\"\n_prev_ec=\"\"\nfor _arg in \"$@\"; do\n case \"$_prev_ec\" in\n --currency) CURRENCY=\"$_arg\"; _prev_ec=\"\"; continue ;;\n esac\n _prev_ec=\"$_arg\"\ndone\n\nparse_common_params \"$@\"\nrequire_counter\nrequire_dates\n\nATTRIBUTION=\"${ATTRIBUTION:-lastsign}\"\n\n# Auto-detect currency from counter info cache if not specified\nif [ -z \"$CURRENCY\" ]; then\n COUNTER_DIR=$(cache_dir_for_counter \"$COUNTER\")\n _info_cache=\"$COUNTER_DIR/info.json\"\n if [ -f \"$_info_cache\" ]; then\n CURRENCY=$(grep -o '\"currency_code\":\"[^\"]*\"' \"$_info_cache\" | head -1 | sed 's/.*\"currency_code\":\"//;s/\"//' || true)\n fi\nfi\n# Fallback to RUB if still empty\nCURRENCY=\"${CURRENCY:-RUB}\"\n\n# Build metrics using documented ecommerce\u003cCUR>ConvertedRevenue* names\n_rev=\"ym:s:ecommerce${CURRENCY}ConvertedRevenue\"\n_rev_per_purchase=\"ym:s:ecommerce${CURRENCY}ConvertedRevenuePerPurchase\"\n_rev_per_visit=\"ym:s:ecommerce${CURRENCY}ConvertedRevenuePerVisit\"\nMETRICS=\"ym:s:ecommercePurchases,${_rev},${_rev_per_purchase},${_rev_per_visit},ym:s:visits,ym:s:users\"\nDIMENSIONS=\"ym:s:${ATTRIBUTION}TrafficSource\"\n\n# Cache key\n_params_str=\"ecommerce_${COUNTER}_${DATE1}_${DATE2}_${GROUP}_${DEVICE}_${SOURCE}_${ATTRIBUTION}_${CURRENCY}_${LIMIT}\"\n_hash=$(cache_key \"$_params_str\")\nCOUNTER_DIR=$(cache_dir_for_counter \"$COUNTER\")\nCACHE_FILE=\"$COUNTER_DIR/reports/ecommerce_${DATE1}_${DATE2}_${_hash}.csv\"\n\n# Skip cache if date2 is today (data still accumulating)\nif date_is_today \"$DATE2\"; then\n NO_CACHE=\"1\"\nfi\n\n# Check cache\nif [ -z \"$NO_CACHE\" ] && [ -f \"$CACHE_FILE\" ] && [ -s \"$CACHE_FILE\" ]; then\n echo \"Ecommerce report for counter $COUNTER ($DATE1 — $DATE2):\"\n print_csv_head \"$CACHE_FILE\" 30\n [ -n \"$CSV_OUT\" ] && cp \"$CACHE_FILE\" \"$CSV_OUT\" && echo \"Copied to: $CSV_OUT\"\n exit 0\nfi\n\n# Build API path\nif [ -n \"$GROUP\" ]; then\n API_PATH=\"/stat/v1/data/bytime.csv\"\nelse\n API_PATH=\"/stat/v1/data.csv\"\nfi\n\necho \"Fetching ecommerce report for counter $COUNTER ($DATE1 — $DATE2)...\" >&2\n\nTMPFILE=\"${METRIKA_TMPDIR}/metrika_ecommerce_$.csv\"\ntrap 'rm -f \"$TMPFILE\"' EXIT\n\nmetrika_get_csv \"$API_PATH\" \"$TMPFILE\" \\\n --data-urlencode \"ids=$COUNTER\" \\\n --data-urlencode \"date1=$DATE1\" \\\n --data-urlencode \"date2=$DATE2\" \\\n --data-urlencode \"metrics=$METRICS\" \\\n --data-urlencode \"dimensions=$DIMENSIONS\" \\\n --data-urlencode \"accuracy=1\" \\\n --data-urlencode \"filters=$FILTERS\" \\\n ${GROUP:+--data-urlencode \"group=$GROUP\"} \\\n ${LIMIT:+--data-urlencode \"limit=$LIMIT\"}\n\ncp \"$TMPFILE\" \"$CACHE_FILE\"\n\necho \"Ecommerce report for counter $COUNTER ($DATE1 — $DATE2):\"\nprint_csv_head \"$CACHE_FILE\" 30\n\nif [ -n \"$CSV_OUT\" ]; then\n cp \"$CACHE_FILE\" \"$CSV_OUT\"\n echo \"Exported to: $CSV_OUT\"\nfi\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":3369,"content_sha256":"ec41bcec02d99d6362875e4608d5ab55277b0906404bbf5ae1d489b8139d312d"},{"filename":"scripts/goals.sh","content":"#!/bin/sh\n# List goals for a Yandex Metrika counter with cache + TSV index\n# Usage: goals.sh --counter \u003cID> [--no-cache]\n\nset -e\n\nSCRIPT_DIR=\"$(cd \"$(dirname \"$0\")\" && pwd)\"\n. \"$SCRIPT_DIR/common.sh\"\nload_config\n\nCOUNTER=\"\"\nNO_CACHE=\"\"\n\nwhile [ $# -gt 0 ]; do\n case \"$1\" in\n --counter) COUNTER=\"$2\"; shift 2 ;;\n --no-cache) NO_CACHE=\"1\"; shift ;;\n *) shift ;;\n esac\ndone\n\nif [ -z \"$COUNTER\" ]; then\n echo \"Error: --counter \u003cID> is required.\" >&2\n echo \"Usage: goals.sh --counter \u003cID> [--no-cache]\" >&2\n exit 1\nfi\n\nCOUNTER_DIR=$(cache_dir_for_counter \"$COUNTER\")\nCACHE_JSON=\"$COUNTER_DIR/goals.json\"\nCACHE_TSV=\"$COUNTER_DIR/goals.tsv\"\n\n# Try cache first\nif [ -z \"$NO_CACHE\" ] && [ -f \"$CACHE_TSV\" ] && [ -s \"$CACHE_TSV\" ]; then\n echo \"Goals for counter $COUNTER:\"\n echo \"ID\tName\tType\"\n cat \"$CACHE_TSV\"\n echo \"\"\n echo \"(cached: $CACHE_TSV)\"\n exit 0\nfi\n\n# Fetch from API\necho \"Fetching goals for counter $COUNTER...\" >&2\n\nTMPFILE=\"${METRIKA_TMPDIR}/metrika_goals_$.json\"\ntrap 'rm -f \"$TMPFILE\"' EXIT\n\nmetrika_mgmt_get \"/management/v1/counter/$COUNTER/goals\" > \"$TMPFILE\"\n\n# Save raw JSON\ncp \"$TMPFILE\" \"$CACHE_JSON\"\n\n# Generate TSV index: id\u003cTAB>name\u003cTAB>type\n{\n tr '{}' '\\n' \u003c \"$TMPFILE\" | while IFS= read -r _line; do\n _id=$(echo \"$_line\" | grep -o '\"id\"[[:space:]]*:[[:space:]]*[0-9]*' | head -1 | sed 's/.*:[[:space:]]*//')\n _name=$(echo \"$_line\" | grep -o '\"name\"[[:space:]]*:[[:space:]]*\"[^\"]*\"' | head -1 | sed 's/.*:[[:space:]]*\"//;s/\"$//' | tr '\t\\n' ' ')\n _type=$(echo \"$_line\" | grep -o '\"type\"[[:space:]]*:[[:space:]]*\"[^\"]*\"' | head -1 | sed 's/.*:[[:space:]]*\"//;s/\"$//')\n\n if [ -n \"$_id\" ] && [ -n \"$_name\" ]; then\n printf '%s\\t%s\\t%s\\n' \"$_id\" \"$_name\" \"$_type\"\n fi\n done\n} > \"$CACHE_TSV\"\n\n# Output\necho \"Goals for counter $COUNTER:\"\necho \"ID\tName\tType\"\ncat \"$CACHE_TSV\"\necho \"\"\n_total=$(wc -l \u003c \"$CACHE_TSV\" | tr -d ' ')\necho \"Total goals: $_total\"\necho \"Cached: $CACHE_TSV\"\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":2007,"content_sha256":"94b4faac11cda67fe5782b11107ba57c434f272854f8838e18400af128ee09be"},{"filename":"scripts/search_engines.sh","content":"#!/bin/sh\n# Search engine traffic report\n# Usage: search_engines.sh --counter \u003cID> --date1 YYYY-MM-DD [--date2 ...] [--group day|week|month]\n# [--device ...] [--attribution lastsign|last|first]\n# [--limit N] [--csv path] [--no-cache]\n\nset -e\n\nSCRIPT_DIR=\"$(cd \"$(dirname \"$0\")\" && pwd)\"\n. \"$SCRIPT_DIR/common.sh\"\nload_config\nparse_common_params \"$@\"\nrequire_counter\nrequire_dates\n\nATTRIBUTION=\"${ATTRIBUTION:-lastsign}\"\n\nMETRICS=\"ym:s:visits,ym:s:users,ym:s:bounceRate,ym:s:pageDepth,ym:s:avgVisitDurationSeconds\"\nDIMENSIONS=\"ym:s:${ATTRIBUTION}SourceEngine\"\n\n# Force filter: only organic traffic\n_se_filters=\"$FILTERS AND ym:s:${ATTRIBUTION}TrafficSource=='organic'\"\n\n# Cache key\n_params_str=\"search_${COUNTER}_${DATE1}_${DATE2}_${GROUP}_${DEVICE}_${ATTRIBUTION}_${LIMIT}\"\n_hash=$(cache_key \"$_params_str\")\nCOUNTER_DIR=$(cache_dir_for_counter \"$COUNTER\")\nCACHE_FILE=\"$COUNTER_DIR/reports/search_${DATE1}_${DATE2}_${_hash}.csv\"\n\n# Skip cache if date2 is today (data still accumulating)\nif date_is_today \"$DATE2\"; then\n NO_CACHE=\"1\"\nfi\n\n# Check cache\nif [ -z \"$NO_CACHE\" ] && [ -f \"$CACHE_FILE\" ] && [ -s \"$CACHE_FILE\" ]; then\n echo \"Search engines for counter $COUNTER ($DATE1 — $DATE2):\"\n print_csv_head \"$CACHE_FILE\" 30\n [ -n \"$CSV_OUT\" ] && cp \"$CACHE_FILE\" \"$CSV_OUT\" && echo \"Copied to: $CSV_OUT\"\n exit 0\nfi\n\n# Build API path\nif [ -n \"$GROUP\" ]; then\n API_PATH=\"/stat/v1/data/bytime.csv\"\nelse\n API_PATH=\"/stat/v1/data.csv\"\nfi\n\necho \"Fetching search engine report for counter $COUNTER ($DATE1 — $DATE2)...\" >&2\n\nTMPFILE=\"${METRIKA_TMPDIR}/metrika_search_$.csv\"\ntrap 'rm -f \"$TMPFILE\"' EXIT\n\nmetrika_get_csv \"$API_PATH\" \"$TMPFILE\" \\\n --data-urlencode \"ids=$COUNTER\" \\\n --data-urlencode \"date1=$DATE1\" \\\n --data-urlencode \"date2=$DATE2\" \\\n --data-urlencode \"metrics=$METRICS\" \\\n --data-urlencode \"dimensions=$DIMENSIONS\" \\\n --data-urlencode \"accuracy=1\" \\\n --data-urlencode \"filters=$_se_filters\" \\\n ${GROUP:+--data-urlencode \"group=$GROUP\"} \\\n ${LIMIT:+--data-urlencode \"limit=$LIMIT\"}\n\ncp \"$TMPFILE\" \"$CACHE_FILE\"\n\necho \"Search engines for counter $COUNTER ($DATE1 — $DATE2):\"\nprint_csv_head \"$CACHE_FILE\" 30\n\nif [ -n \"$CSV_OUT\" ]; then\n cp \"$CACHE_FILE\" \"$CSV_OUT\"\n echo \"Exported to: $CSV_OUT\"\nfi\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":2278,"content_sha256":"e2a533ac353079484f9503dfd8735de7fead649a4138b5e649d59852641ea2bd"},{"filename":"scripts/traffic_summary.sh","content":"#!/bin/sh\n# Traffic distribution by source\n# Usage: traffic_summary.sh --counter \u003cID> --date1 YYYY-MM-DD [--date2 ...] [--group day|week|month]\n# [--device desktop|mobile|tablet] [--source organic|ad|referral|direct]\n# [--attribution lastsign|last|first] [--limit N] [--csv path] [--no-cache]\n\nset -e\n\nSCRIPT_DIR=\"$(cd \"$(dirname \"$0\")\" && pwd)\"\n. \"$SCRIPT_DIR/common.sh\"\nload_config\nparse_common_params \"$@\"\nrequire_counter\nrequire_dates\n\nATTRIBUTION=\"${ATTRIBUTION:-lastsign}\"\n\nMETRICS=\"ym:s:visits,ym:s:users,ym:s:bounceRate,ym:s:pageDepth,ym:s:avgVisitDurationSeconds\"\nDIMENSIONS=\"ym:s:${ATTRIBUTION}TrafficSource\"\n\n# Cache key\n_params_str=\"traffic_${COUNTER}_${DATE1}_${DATE2}_${GROUP}_${DEVICE}_${SOURCE}_${ATTRIBUTION}_${LIMIT}\"\n_hash=$(cache_key \"$_params_str\")\nCOUNTER_DIR=$(cache_dir_for_counter \"$COUNTER\")\nCACHE_FILE=\"$COUNTER_DIR/reports/traffic_${DATE1}_${DATE2}_${_hash}.csv\"\n\n# Skip cache if date2 is today (data still accumulating)\nif date_is_today \"$DATE2\"; then\n NO_CACHE=\"1\"\nfi\n\n# Check cache\nif [ -z \"$NO_CACHE\" ] && [ -f \"$CACHE_FILE\" ] && [ -s \"$CACHE_FILE\" ]; then\n echo \"Traffic summary for counter $COUNTER ($DATE1 — $DATE2):\"\n print_csv_head \"$CACHE_FILE\" 30\n [ -n \"$CSV_OUT\" ] && cp \"$CACHE_FILE\" \"$CSV_OUT\" && echo \"Copied to: $CSV_OUT\"\n exit 0\nfi\n\n# Build API path\nif [ -n \"$GROUP\" ]; then\n API_PATH=\"/stat/v1/data/bytime.csv\"\nelse\n API_PATH=\"/stat/v1/data.csv\"\nfi\n\n# Fetch\necho \"Fetching traffic summary for counter $COUNTER ($DATE1 — $DATE2)...\" >&2\n\nTMPFILE=\"${METRIKA_TMPDIR}/metrika_traffic_$.csv\"\ntrap 'rm -f \"$TMPFILE\"' EXIT\n\nmetrika_get_csv \"$API_PATH\" \"$TMPFILE\" \\\n --data-urlencode \"ids=$COUNTER\" \\\n --data-urlencode \"date1=$DATE1\" \\\n --data-urlencode \"date2=$DATE2\" \\\n --data-urlencode \"metrics=$METRICS\" \\\n --data-urlencode \"dimensions=$DIMENSIONS\" \\\n --data-urlencode \"accuracy=1\" \\\n --data-urlencode \"filters=$FILTERS\" \\\n ${GROUP:+--data-urlencode \"group=$GROUP\"} \\\n ${LIMIT:+--data-urlencode \"limit=$LIMIT\"}\n\n# Cache result\ncp \"$TMPFILE\" \"$CACHE_FILE\"\n\n# Output\necho \"Traffic summary for counter $COUNTER ($DATE1 — $DATE2):\"\nprint_csv_head \"$CACHE_FILE\" 30\n\nif [ -n \"$CSV_OUT\" ]; then\n cp \"$CACHE_FILE\" \"$CSV_OUT\"\n echo \"Exported to: $CSV_OUT\"\nfi\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":2267,"content_sha256":"de91ecaacb2c3ee4f69059cc4e4012b3db95a6e9ea0243c732339fa5b3326971"},{"filename":"scripts/utm_report.sh","content":"#!/bin/sh\n# UTM breakdown report\n# Usage: utm_report.sh --counter \u003cID> --date1 YYYY-MM-DD [--date2 ...] [--group day|week|month]\n# [--device ...] [--source ...] [--attribution lastsign|last|first]\n# [--limit N] [--csv path] [--no-cache]\n\nset -e\n\nSCRIPT_DIR=\"$(cd \"$(dirname \"$0\")\" && pwd)\"\n. \"$SCRIPT_DIR/common.sh\"\nload_config\nparse_common_params \"$@\"\nrequire_counter\nrequire_dates\n\nATTRIBUTION=\"${ATTRIBUTION:-lastsign}\"\n\nMETRICS=\"ym:s:visits,ym:s:users,ym:s:bounceRate,ym:s:pageDepth,ym:s:avgVisitDurationSeconds\"\nDIMENSIONS=\"ym:s:${ATTRIBUTION}UTMSource,ym:s:${ATTRIBUTION}UTMMedium,ym:s:${ATTRIBUTION}UTMCampaign\"\n\n# Cache key\n_params_str=\"utm_${COUNTER}_${DATE1}_${DATE2}_${GROUP}_${DEVICE}_${SOURCE}_${ATTRIBUTION}_${LIMIT}\"\n_hash=$(cache_key \"$_params_str\")\nCOUNTER_DIR=$(cache_dir_for_counter \"$COUNTER\")\nCACHE_FILE=\"$COUNTER_DIR/reports/utm_${DATE1}_${DATE2}_${_hash}.csv\"\n\n# Skip cache if date2 is today (data still accumulating)\nif date_is_today \"$DATE2\"; then\n NO_CACHE=\"1\"\nfi\n\n# Check cache\nif [ -z \"$NO_CACHE\" ] && [ -f \"$CACHE_FILE\" ] && [ -s \"$CACHE_FILE\" ]; then\n echo \"UTM report for counter $COUNTER ($DATE1 — $DATE2):\"\n print_csv_head \"$CACHE_FILE\" 30\n [ -n \"$CSV_OUT\" ] && cp \"$CACHE_FILE\" \"$CSV_OUT\" && echo \"Copied to: $CSV_OUT\"\n exit 0\nfi\n\n# Build API path\nif [ -n \"$GROUP\" ]; then\n API_PATH=\"/stat/v1/data/bytime.csv\"\nelse\n API_PATH=\"/stat/v1/data.csv\"\nfi\n\necho \"Fetching UTM report for counter $COUNTER ($DATE1 — $DATE2)...\" >&2\n\nTMPFILE=\"${METRIKA_TMPDIR}/metrika_utm_$.csv\"\ntrap 'rm -f \"$TMPFILE\"' EXIT\n\nmetrika_get_csv \"$API_PATH\" \"$TMPFILE\" \\\n --data-urlencode \"ids=$COUNTER\" \\\n --data-urlencode \"date1=$DATE1\" \\\n --data-urlencode \"date2=$DATE2\" \\\n --data-urlencode \"metrics=$METRICS\" \\\n --data-urlencode \"dimensions=$DIMENSIONS\" \\\n --data-urlencode \"accuracy=1\" \\\n --data-urlencode \"filters=$FILTERS\" \\\n ${GROUP:+--data-urlencode \"group=$GROUP\"} \\\n ${LIMIT:+--data-urlencode \"limit=$LIMIT\"}\n\ncp \"$TMPFILE\" \"$CACHE_FILE\"\n\necho \"UTM report for counter $COUNTER ($DATE1 — $DATE2):\"\nprint_csv_head \"$CACHE_FILE\" 30\n\nif [ -n \"$CSV_OUT\" ]; then\n cp \"$CACHE_FILE\" \"$CSV_OUT\"\n echo \"Exported to: $CSV_OUT\"\nfi\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":2208,"content_sha256":"66b50519e3f1de11b1777da67fed1fb7c3171b45aa3d044de18e196b244b581a"}],"content_json":{"type":"doc","content":[{"type":"heading","attrs":{"level":1},"content":[{"text":"yandex-metrika","type":"text"}]},{"type":"paragraph","content":[{"text":"Работа с Yandex Metrika Reporting API v1. Отчёты по трафику, конверсиям, UTM-меткам, поисковым системам.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Config","type":"text"}]},{"type":"paragraph","content":[{"text":"Требуется ","type":"text"},{"text":"YANDEX_METRIKA_TOKEN","type":"text","marks":[{"type":"code_inline"}]},{"text":" в ","type":"text"},{"text":"config/.env","type":"text","marks":[{"type":"code_inline"}]},{"text":". Инструкция: ","type":"text"},{"text":"config/README.md","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Philosophy","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Cache-first","type":"text","marks":[{"type":"strong"}]},{"text":" — конфигурационные данные (счётчики, цели, инфо) кешируются надолго. Отчёты кешируются по ключу counter+dates+params. Перед API-запросом всегда проверяем кеш.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Context window hygiene","type":"text","marks":[{"type":"strong"}]},{"text":" — stdout ограничен 30 строками. Полные данные в CSV/файл. Кеш доступен через grep/rg для поиска без загрузки в контекст.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Точные данные","type":"text","marks":[{"type":"strong"}]},{"text":" — accuracy=1 (без сэмплирования), фильтр isRobot по умолчанию.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Атрибуция","type":"text","marks":[{"type":"strong"}]},{"text":" — дефолт ","type":"text"},{"text":"lastsign","type":"text","marks":[{"type":"code_inline"}]},{"text":" (последний значимый источник). Спрашиваем пользователя при первом запуске.","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Workflow","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"STOP! Перед любым анализом:","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Получи список счётчиков:","type":"text","marks":[{"type":"strong"}]}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"bash scripts/counters.sh","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Спроси пользователя","type":"text","marks":[{"type":"strong"}]},{"text":" (если счётчик не очевиден из контекста):","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":""},"content":[{"text":"\"О каком счётчике/сайте идёт речь?\nУкажите ID, название или домен.\"","type":"text"}]},{"type":"paragraph","content":[{"text":"Если пользователь назвал сайт/домен — ищи через ","type":"text"},{"text":"--search","type":"text","marks":[{"type":"code_inline"}]},{"text":":","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"bash scripts/counters.sh --search \"metallik\"","type":"text"}]},{"type":"paragraph","content":[{"text":"Это grep по TSV (id + name + site), поэтому находит и по домену.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Получи инфо о счётчике и его цели:","type":"text","marks":[{"type":"strong"}]}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"bash scripts/counter_info.sh --counter \u003cID>\nbash scripts/goals.sh --counter \u003cID>","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Спроси про конверсионные цели:","type":"text","marks":[{"type":"strong"}]}]},{"type":"code_block","attrs":{"wrap":false,"language":""},"content":[{"text":"\"Какие из этих целей являются конверсионными для вашего бизнеса?\n[список целей из goals.sh]\nСохраню выбранные для будущих отчётов.\"","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Сохрани конфигурацию","type":"text","marks":[{"type":"strong"}]},{"text":" в ","type":"text"},{"text":"cache/counter_\u003cid>/config.json","type":"text","marks":[{"type":"code_inline"}]},{"text":":","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"json"},"content":[{"text":"{\n \"attribution\": \"lastsign\",\n \"conversion_goals\": [\n {\"id\": 12345, \"name\": \"Заказ оформлен\"},\n {\"id\": 67890, \"name\": \"Заявка отправлена\"}\n ]\n}","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Запускай отчёты","type":"text","marks":[{"type":"strong"}]},{"text":" по задаче пользователя.","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Scripts","type":"text"}]},{"type":"paragraph","content":[{"text":"Общий паттерн вызова:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"bash scripts/\u003cscript>.sh --counter \u003cID> --date1 YYYY-MM-DD [--date2 ...] [--group month] [--csv path]","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Script","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Description","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Special params","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"counters.sh","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Список счётчиков","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"--search \"query\"","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"goals.sh","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Цели счётчика","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"—","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"counter_info.sh","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Метаданные счётчика","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"—","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"traffic_summary.sh","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Трафик по источникам","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"—","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"conversions.sh","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Достижение целей","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"--goals \"ID,ID\"","type":"text","marks":[{"type":"code_inline"}]},{"text":" / ","type":"text"},{"text":"--all-goals","type":"text","marks":[{"type":"code_inline"}]},{"text":"; по умолчанию из ","type":"text"},{"text":"config.json","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"utm_report.sh","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"UTM-разбивка","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"—","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"search_engines.sh","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Поисковые системы (organic)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"—","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"ecommerce.sh","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Покупки, выручка, средний чек","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"--currency RUB|USD|EUR","type":"text","marks":[{"type":"code_inline"}]},{"text":"; авто из counter_info","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"direct_clients.sh","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Логины Директа","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"—","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"direct_costs.sh","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Расходы Директа (","type":"text"},{"text":"ym:ad:*","type":"text","marks":[{"type":"code_inline"}]},{"text":")","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"--direct-client-logins \"login\"","type":"text","marks":[{"type":"code_inline"}]},{"text":"; нет ","type":"text"},{"text":"--group","type":"text","marks":[{"type":"code_inline"}]},{"text":"/","type":"text"},{"text":"--device","type":"text","marks":[{"type":"code_inline"}]},{"text":"/","type":"text"},{"text":"--source","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"comparison.sh","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Сравнение двух периодов","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"--date1a/--date2a/--date1b/--date2b","type":"text","marks":[{"type":"code_inline"}]},{"text":"; ","type":"text"},{"text":"--dimension","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"--metrics","type":"text","marks":[{"type":"code_inline"}]}]}]}]}]},{"type":"paragraph","content":[{"text":"Не все скрипты поддерживают все общие параметры — см. ","type":"text"},{"text":"Special params","type":"text","marks":[{"type":"strong"}]},{"text":".","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Общие параметры отчётных скриптов","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Param","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Required","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Default","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Values","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"--counter","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"yes","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"-","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"ID счётчика","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"--date1","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"yes","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"-","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"YYYY-MM-DD","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"--date2","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"no","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"today","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"YYYY-MM-DD","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"--group","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"no","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"-","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"day, week, month","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"--device","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"no","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"all","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"desktop, mobile, tablet","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"--source","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"no","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"all","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"organic, ad, referral, direct, social","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"--attribution","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"no","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"lastsign","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"lastsign, last, first","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"--limit","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"no","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"API default","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"число строк","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"--csv","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"no","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"-","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"путь для экспорта","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"--no-cache","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"no","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"-","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"пропустить кеш","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Кеш-стратегия","type":"text"}]},{"type":"paragraph","content":[{"text":"Кеш хранится в ","type":"text"},{"text":"cache/","type":"text","marks":[{"type":"code_inline"}]},{"text":":","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"counters.json","type":"text","marks":[{"type":"code_inline"}]},{"text":" + ","type":"text"},{"text":"counters.tsv","type":"text","marks":[{"type":"code_inline"}]},{"text":" — все счётчики","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"counter_\u003cid>/info.json","type":"text","marks":[{"type":"code_inline"}]},{"text":" — метаданные (permanent)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"counter_\u003cid>/goals.json","type":"text","marks":[{"type":"code_inline"}]},{"text":" + ","type":"text"},{"text":"goals.tsv","type":"text","marks":[{"type":"code_inline"}]},{"text":" — цели","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"counter_\u003cid>/config.json","type":"text","marks":[{"type":"code_inline"}]},{"text":" — атрибуция, конверсионные цели","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"counter_\u003cid>/direct_clients.json","type":"text","marks":[{"type":"code_inline"}]},{"text":" — логины Директа","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"counter_\u003cid>/reports/*.csv","type":"text","marks":[{"type":"code_inline"}]},{"text":" — результаты отчётов","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"Для поиска по кешу: ","type":"text"},{"text":"grep \"text\" cache/counters.tsv","type":"text","marks":[{"type":"code_inline"}]},{"text":" или ","type":"text"},{"text":"rg \"text\" cache/","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Расширенные сценарии","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Популярные поисковые запросы","type":"text","marks":[{"type":"link","attrs":{"href":"references/SEARCH_QUERIES.md","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Произвольные отчёты и JSON-запросы","type":"text","marks":[{"type":"link","attrs":{"href":"references/CUSTOM_REPORTS.md","title":null}}]},{"text":" (drilldown, metrika_get и др.)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Справочник dimensions/metrics","type":"text","marks":[{"type":"link","attrs":{"href":"references/API_REFERENCE.md","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Сравнение периодов год-к-году","type":"text","marks":[{"type":"link","attrs":{"href":"references/PERIOD_COMPARISON.md","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Расходы Директа и PnL","type":"text","marks":[{"type":"link","attrs":{"href":"references/DIRECT_COSTS.md","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Ограничения API","type":"text","marks":[{"type":"link","attrs":{"href":"references/API_REFERENCE.md#known-api-limitations","title":null}}]},{"text":" (bytime, scope mixing, drilldown CSV)","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Лимиты API","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Reporting API","type":"text","marks":[{"type":"strong"}]},{"text":": ~200 запросов / 5 минут (при превышении — ждите ~5 минут)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Скрипты автоматически обрабатывают 429 (Retry-After ≤ 60s → retry, иначе fail с сообщением)","type":"text"}]}]}]},{"type":"hr","attrs":{"markup":"---"}}]},"metadata":{"date":"2026-06-05","name":"yandex-metrika","author":"@skillopedia","source":{"stars":146,"repo_name":"polyakov-claude-skills","origin_url":"https://github.com/artwist-polyakov/polyakov-claude-skills/blob/HEAD/plugins/yandex-metrika/skills/yandex-metrika/SKILL.md","repo_owner":"artwist-polyakov","body_sha256":"f43c001be982bbd294e4168082eac1ac0546c0b9741bacaf537f1b0dbbcb98f7","cluster_key":"290c81f520acc85e5aeccac948dd31abc41aa724f9e7d02a2ffdff2e0f4fe8fb","clean_bundle":{"format":"clean-skill-bundle-v1","source":"artwist-polyakov/polyakov-claude-skills/plugins/yandex-metrika/skills/yandex-metrika/SKILL.md","attachments":[{"id":"117b72fa-b940-5a8a-b297-384355455af8","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/117b72fa-b940-5a8a-b297-384355455af8/attachment","path":".gitignore","size":36,"sha256":"e93c204639c07258a2f1d0e7680464e4c3aab79d6f7d0a4713ca593fc2e77ade","contentType":"text/plain; charset=utf-8"},{"id":"824efd84-9ca7-5ba8-8419-837c06a5b15a","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/824efd84-9ca7-5ba8-8419-837c06a5b15a/attachment","path":"cache/.gitkeep","size":0,"sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","contentType":"text/plain; charset=utf-8"},{"id":"89a3720a-e6cf-5141-bea0-c142a79969da","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/89a3720a-e6cf-5141-bea0-c142a79969da/attachment.example","path":"config/.env.example","size":43,"sha256":"4af032f8384872db62ac3f0e3965af2c5f623fa89d68afb054c17c595ccbfcb1","contentType":"text/plain; charset=utf-8"},{"id":"449fcb6a-1c2e-5573-b746-69e3f5c2113b","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/449fcb6a-1c2e-5573-b746-69e3f5c2113b/attachment.md","path":"config/README.md","size":1772,"sha256":"f3ef700463063e4d449e03f85ad5cd71872c1eec6cd2bf545da483d09ee5d1f0","contentType":"text/markdown; charset=utf-8"},{"id":"8d28dcd0-4853-59fc-9c1b-e7913d03c69f","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/8d28dcd0-4853-59fc-9c1b-e7913d03c69f/attachment.md","path":"references/API_REFERENCE.md","size":6217,"sha256":"3036f01c1f95893ac2af45a42774e56455033158a8a485f862b87b015442adfa","contentType":"text/markdown; charset=utf-8"},{"id":"ced679e0-51af-536c-873e-bb9e15b6c568","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/ced679e0-51af-536c-873e-bb9e15b6c568/attachment.md","path":"references/CUSTOM_REPORTS.md","size":2984,"sha256":"19a58c5e5a3083fe6dfdf05cb20d18013c0cfd0b3768dfd920d49eaee47a3553","contentType":"text/markdown; charset=utf-8"},{"id":"d16871b7-eb01-5545-a129-d610b2e86262","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/d16871b7-eb01-5545-a129-d610b2e86262/attachment.md","path":"references/DIRECT_COSTS.md","size":5459,"sha256":"a24ad90ccfc62ddfef2d46516ed1253c2d20b71d2575f727340c5ceceb8c1232","contentType":"text/markdown; charset=utf-8"},{"id":"280b433c-12ed-50a9-ac16-3ce43dc091f3","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/280b433c-12ed-50a9-ac16-3ce43dc091f3/attachment.md","path":"references/PERIOD_COMPARISON.md","size":2592,"sha256":"c337a1991c4827dec7fedd5cbc61da4684c75d4eed7a980e3729bcb78c0a18ab","contentType":"text/markdown; charset=utf-8"},{"id":"f788f0d0-5b1b-5fdd-88bb-6a597638e68e","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/f788f0d0-5b1b-5fdd-88bb-6a597638e68e/attachment.md","path":"references/SEARCH_QUERIES.md","size":2067,"sha256":"b542765d78f8c9a14f51b8f711dc20e505fb0ac83f0e6616b533bb0a49364b0c","contentType":"text/markdown; charset=utf-8"},{"id":"ded51d55-2129-5abd-ac59-5abbf223fb83","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/ded51d55-2129-5abd-ac59-5abbf223fb83/attachment.sh","path":"scripts/common.sh","size":9622,"sha256":"b2453d2fdc99a734097466d21871f0a9635961094967cd815743f02b600d4dfe","contentType":"application/x-sh; charset=utf-8"},{"id":"215b04fc-e940-585f-b3c5-8aaf2e00b457","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/215b04fc-e940-585f-b3c5-8aaf2e00b457/attachment.sh","path":"scripts/comparison.sh","size":3774,"sha256":"b3c482c6ba66fd65c982e6111cf6fdf34b160636652548a8895ae731bc05fdc6","contentType":"application/x-sh; charset=utf-8"},{"id":"6161752e-20fd-5c79-979e-363bd05122d2","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/6161752e-20fd-5c79-979e-363bd05122d2/attachment.sh","path":"scripts/conversions.sh","size":4240,"sha256":"acd6a96547e4090657270f6f7c9438f573be109c8ffb163ef8c4bd686b2e7646","contentType":"application/x-sh; charset=utf-8"},{"id":"3a9d8b31-5301-5ea8-9aae-e3137747a13b","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/3a9d8b31-5301-5ea8-9aae-e3137747a13b/attachment.sh","path":"scripts/counter_info.sh","size":2360,"sha256":"9dfadb6c600c8101ab2ae25b1a9f716349f009ac1af5f3a0449d2c82c38e9590","contentType":"application/x-sh; charset=utf-8"},{"id":"3afa8b74-a561-58cb-bd01-18ea6a1fde41","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/3afa8b74-a561-58cb-bd01-18ea6a1fde41/attachment.sh","path":"scripts/counters.sh","size":2648,"sha256":"8e828f950ab58cf571a238f3bb0b9d0c81d8039a4a3f8c7d08ecc83c1c14ab8c","contentType":"application/x-sh; charset=utf-8"},{"id":"c0a209be-1ff4-5177-95d6-481a96924eef","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/c0a209be-1ff4-5177-95d6-481a96924eef/attachment.sh","path":"scripts/direct_clients.sh","size":2498,"sha256":"953e9ce6e056f5e6094a84cedf962dbdb09a5f1b2cdd44fff1192ce198862954","contentType":"application/x-sh; charset=utf-8"},{"id":"0b47b819-2118-53fe-ab36-f27605b539f5","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/0b47b819-2118-53fe-ab36-f27605b539f5/attachment.sh","path":"scripts/direct_costs.sh","size":4866,"sha256":"fe7be9dcca66c8eaab864d51b44bda7cb5a31ab3f7e67433c87fb03d6372701f","contentType":"application/x-sh; charset=utf-8"},{"id":"00a1d276-844d-53bc-91a9-54a3a4a5c32e","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/00a1d276-844d-53bc-91a9-54a3a4a5c32e/attachment.sh","path":"scripts/ecommerce.sh","size":3369,"sha256":"ec41bcec02d99d6362875e4608d5ab55277b0906404bbf5ae1d489b8139d312d","contentType":"application/x-sh; charset=utf-8"},{"id":"6081414b-ddf1-5a88-ae7e-11a74fa3cc44","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/6081414b-ddf1-5a88-ae7e-11a74fa3cc44/attachment.sh","path":"scripts/goals.sh","size":2007,"sha256":"94b4faac11cda67fe5782b11107ba57c434f272854f8838e18400af128ee09be","contentType":"application/x-sh; charset=utf-8"},{"id":"b72cee4e-724a-5489-b8a2-b7a5e060098b","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/b72cee4e-724a-5489-b8a2-b7a5e060098b/attachment.sh","path":"scripts/search_engines.sh","size":2278,"sha256":"e2a533ac353079484f9503dfd8735de7fead649a4138b5e649d59852641ea2bd","contentType":"application/x-sh; charset=utf-8"},{"id":"077ef132-7ec6-560e-8e44-ae2585c6000b","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/077ef132-7ec6-560e-8e44-ae2585c6000b/attachment.sh","path":"scripts/traffic_summary.sh","size":2267,"sha256":"de91ecaacb2c3ee4f69059cc4e4012b3db95a6e9ea0243c732339fa5b3326971","contentType":"application/x-sh; charset=utf-8"},{"id":"a729c553-edfc-5aab-8c21-41ad58869950","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/a729c553-edfc-5aab-8c21-41ad58869950/attachment.sh","path":"scripts/utm_report.sh","size":2208,"sha256":"66b50519e3f1de11b1777da67fed1fb7c3171b45aa3d044de18e196b244b581a","contentType":"application/x-sh; charset=utf-8"}],"bundle_sha256":"e291fb0829c1df56467972ce627feacc0ee05eb747209c87251e1daf55e4f086","attachment_count":21,"text_attachments":18,"attachment_storage":"skillopedia-attachments-v1","binary_attachments":3,"excluded_attachments":[]},"cluster_size":1,"skill_md_path":"plugins/yandex-metrika/skills/yandex-metrika/SKILL.md","import_metadata":{"date":"2026-06-05","author":"@skillopedia","version":"v1","category":"data-analytics","category_label":"Data"},"exact_dupes_collapsed_into_this":0},"version":"v1","category":"data-analytics","import_tag":"clean-skills-v1","description":"Аналитика Yandex Metrika: трафик, конверсии, UTM, поисковые системы.\nCache-first подход для гигиены контекстного окна.\nTriggers: яндекс метрика, yandex metrika, metrika analytics,\nметрика трафик, метрика конверсии, метрика отчёт.\n"}},"renderedAt":1782981766929}

yandex-metrika Работа с Yandex Metrika Reporting API v1. Отчёты по трафику, конверсиям, UTM-меткам, поисковым системам. Config Требуется в . Инструкция: . Philosophy 1. Cache-first — конфигурационные данные (счётчики, цели, инфо) кешируются надолго. Отчёты кешируются по ключу counter+dates+params. Перед API-запросом всегда проверяем кеш. 2. Context window hygiene — stdout ограничен 30 строками. Полные данные в CSV/файл. Кеш доступен через grep/rg для поиска без загрузки в контекст. 3. Точные данные — accuracy=1 (без сэмплирования), фильтр isRobot по умолчанию. 4. Атрибуция — дефолт (последний…