Informações necessárias para operar o software
Para garantir a operação do sistema de pesquisa inteligente Searchbooster.io, você precisa executar a seguinte sequência de etapas:
- cadastre-se no link
- criar um novo projeto e dar-lhe um nome (instrução)
- adicionar um feed contendo informações do produto ao projeto (consulte os requisitos de feed na página abaixo)
- instale o código JS do widget (tutorial) no site de destino ou implemente a integração da API
- após a indexação do conteúdo do feed, o sistema começará a funcionar e um período de teste de 14 dias será ativado
- durante o período de teste, os funcionários do serviço entrarão em contato com você e o ajudarão a escolher uma tarifa, emitir uma fatura, após o pagamento da qual ativarão a tarifa apropriada.
O esquema geral do projeto é descrito aqui.
Documentação da API no formato OpenAPI (swagger)
Screencast descrevendo os principais métodos de API
Exemplo de YML recomendado
Quanto mais campos preenchidos, melhor.
<yml_catalog date="2020-08-04 02:00"> <shop> <name>Loja</name> <company>Loja</company> <url>https://site.ru/</url> <brands> <brand url="http://site.ru/brand/1">Lego</brand> <brand url="http://site.ru/brand/2">Lukoil</brand> <brand url="http://site.ru/brand/3">BMW</brand> </brands> <categories> <category url="http://site.ru/cat/1" id="1">Esportes e recreação</category> <category url="http://site.ru/cat/2" id="2" parentId="1">Simuladores e Fitness</category> <category url="http://site.ru/cat/3" id="3" parentId="2">Simuladores</category> <category url="http://site.ru/cat/4" id="4" parentId="3">Tênis elípticos</category> </categories> <offers> <offer type="vendor.model" available="true" id="1"> <url>https://site.ru/product/1</url> <price>665890.00</price> <oldprice>1399.00</oldprice> <currencyId>RUR</currencyId> <categoryId>4</categoryId> <picture>https://site.ru/images/1.png</picture> <typePrefix>Treinador elíptico</typePrefix> <vendor>Matrix</vendor> <model>A3X 2012</model> <description>Descrição</description> <sales_notes>A montagem é gratuita.</sales_notes> <manufacturer_warranty>true</manufacturer_warranty> <offerCode>SKU-produto</offerCode> <snippet>rótulo do produto</snippet> <label>rótulo-promoção do produto</label> <param name="popularity">3</param> <param name="Peso do pacote" unit="kg">221</param> <param name="Comprimento" unit="m">1.8</param> <param name="Largura" unit="m">0,7</param> <param name="Altura" unit="m">1,7</param> <pickup>false</pickup> <store>false</store> <region id="msk"> <available>true</available> <price>9999</price> </region> <region id="spb"> <available>false</available> <price>11200</price> </region> </offer> </offers> </shop> </yml_catalog>
Você pode encontrar recomendações oficiais do Yandex aqui: https://yandex.ru/support/marketplace/catalog/yml-requirements.html
Todos os parâmetros de id não devem começar do zero.
Observe: vários parâmetros, por exemplo, a propriedade url do elemento category, não fazem parte do formato oficial do Yandex Market, no entanto, se você passar, expandiremos os recursos de pesquisa. Além disso, nem todos os parâmetros precisam ser preenchidos, por exemplo, tag url, a seção de brands — podemos usar YML também sem eles, mas a presença de tais campos melhora posteriormente o desempenho da pesquisa.
Também importante é o parâmetro chamado “populatiry” no exemplo. Neste parâmetro, você deve especificar o peso condicional do produto que será utilizado na classificação da emissão. Esse parâmetro é opcional, mas pode melhorar significativamente o desempenho da pesquisa personalizando os resultados dos produtos para você.
A regionalidade é implementada usando a tag region. Tal região pode ser cidades, distritos ou alguns polígonos condicionais. Dentro da região, você pode configurar casos especiais de propriedades do produto.
Como enviar SKU do produto?
SKU do produto deve ser transmitido por meio de uma tag <offerCode> – transferência de SKU do produto.
Há também uma forma alternativa de transferir SKU via <param name=”Артикул”>
Como exibir um rótulo arbitrário de produto e um snippet arbitrário?
Suporte implementado para tags snippet e label.
Com a ajuda do primeiro, você pode enviar um snippet e, com a ajuda do segundo, um rótulo arbitrário
Formato simplificado de transferência do produto
A maneira mais fácil de fazer o checkout de um produto específico da sua loja. Também podemos utilizar tal formato, mas para maior eficiência, recomendamos o uso do modelo localizado acima.
<offer id="9012"> <name>Treinador Elíptico Matrix A3X 2012</name> <url>https://site.ru/product/1</url> <price>665890.00</price> <currencyId>RUR</currencyId> <categoryId>4</categoryId> <picture>https://site.ru/images/1.png</picture> </offer>
Mecanismo callback para a chamada de eventos do usuário
Nosso widget suporta o acionamento de eventos personalizados ao pesquisar ou usar sugestões de pesquisa.
!function(e, t, n, o, r) { e[r] = e[r] || function() { (e[r].a = e[r].a || []).push(arguments) }, e[r].h = o, e[r].n = r, e[r].i = 1 * new Date, s = t.createElement(n), a = t.getElementsByTagName(n)[0], s.async = 1, s.src = o, a.parentNode.insertBefore(s, a) }(window, document, "script", "https://cdn2.searchbooster.net/scripts/v2/init.js", "searchbooster"), searchbooster({ theme: "v2", apiUrl: "//api4.searchbooster.io", apiKey: "...", initialized: function(e) { e.on('search', function(query) { if (query.query.query.length) { gtag('config', 'UA-123-1', { 'page_path': '/poisk/rezultaty/?q=' + encodeURIComponent(query.query.query) }) } }) e.on('completions', function(query) { if (query.query.query.length) { console.log(query.query.query); } }); e.CombinedSearchInput.mount("header #SearchInput input") } });
Conversão de resultados de pesquisa
Em alguns casos, no lado do site, você precisa modificar ainda mais os resultados da pesquisa. Por exemplo, isso é conveniente ao colocar código em sites diferentes. Abaixo está um exemplo de inicialização
! function(e, t, n, c, o) { e[o] = e[o] || function() { (e[o].a = e[o].a || []).push(arguments) }, e[o].h = c, e[o].n = o, e[o].i = 1 * new Date, s = t.createElement(n), a = t.getElementsByTagName(n)[0], s.async = 1, s.src = c, a.parentNode.insertBefore(s, a) }(window, document, "script", "https://cdn2.searchbooster.net/scripts/v2/init.js", "searchbooster"), searchbooster({ apiKey: "apikey", theme: "base", apiUrl: "//api4.searchbooster.io", offer: { mapper: function(offer) { // abaixo está o código de conversão try { var url = new URL(offer.url); offer.url = url.href.replace(url.origin, ''); } catch (error) {}; return offer; }, }, initialized: function(e) { e.CombinedSearchInput.mount('.search__field'); } });