見出し画像

【LINEスタンプ】購入ページURL入りのショップリストをCSV形式で保存する ブックマークレット

毎度、rorosukeです。

これまで、LINEスタンプクリエイター向けのマーケティング分析ツールとして「LINE売上スキャナー(簡易版)」「LINE売上スキャナー(高機能版)」を公開してきました。それがこちらです。

今回は、それに続く第3のツールを公開します。

LINEスタンプを作っていると、こんなことを思いませんか?

自分のスタンプ、ショップにどれだけ公開されているんだっけ?

ショップページを開けば一覧は表示されます。でもローカルで管理できるリストがありません。手作業でコツコツ作っている方もいるかもしれませんが、たいていの人は「めんどい、ムリー」となります。

そこで今回は、この不満を解消するブックマークレット、

「LINEショップスキャナー」

を公開いたします。具体的に、どんなことをしてくれるものなのか?
それは・・・


ショップリストを作ります

「LINEショップスキャナー」を用いると、

ショップ公開中の全作品をCSV形式化

したショップリストを作ります。次はその内容です。

日本語タイトル, カテゴリ, 種別, ショップURL1, ショップURL2, サムネール画像URL
  • タイトル:スタンプのタイトル(日本語)です

  • カテゴリ:スタンプ・絵文字・着せ替えのいずれかです。

  • 種別:animation-sticker-icon(アニメ)、popup-sticker-icon(ポップアップ)などです。

  • ショップURL1:https://store.line.me/stickershop/product/xxxx/ja"形式の購入ページURLのことです。

  • ショップURL2:https://line.me/S/sticker/xxxx/"形式の購入ページURLのことです。

  • サムネール画像URL:購入ページに表示されるサムネール画像のURLのことです。



お役立ちデータ1☞ショップURL

この中で一番役立つのが、ショップURLです。わかりやすく言うとstore.line.meの、

購入ページURL1/2

のことでです。これが、ブックマークレットを実行するだけで、CSVファイルとして保存できます。

ショップURLの使い道としては、次があります。

  • noteやSNSでスタンプを紹介するときにそのまま使える

  • 売れているスタンプのページに直接リンクを貼れる

  • AIに「このURLのスタンプについて説明して」と渡せる

スタンプを作成したときにできる「プレビューURL」とは違い、購入ページに直接飛ぶURLなので、そのまま購買につなげることができます。
これを用いれば、note記事にスタンプの購入用リンクを100個掲載するのも簡単です。



お役立ちデータ2☞種別

もう1つ、「LINEショップスキャナー」が出力する情報の中で有用なのが、

種別

です。

ひとくちにスタンプと言っても、通常スタンプ・アニメーションスタンプ・ポップアップスタンプ・カスタムスタンプ・BIGスタンプなど、LINEスタンプにはさまざまな種別があります。

ダッシュボードの売上画面を見ても、種別情報までは含まれていません。そこでわかるのは、スタンプ・絵文字・着せ替えの違いだけです。

本ツールを使えば、通常スタンプ以外の「アニメーションスタンプ」や「ポップアップスタンプ」についての情報が追加されます。これを見ることで確認できます。

注意:ここでいう「情報」は、オリジナルデータが持っているものを抽出した文字列です。次は現在確認できているものです。

$$
\begin{array}{ll}
\\[-1.15em]\hline
\textsf{\small{kind値}} & \textsf{\small{表示}}
\\ \hline
\textsf{\small{animation-sticker-icon}} & \textsf{\small{アニメ}}
\\ \hline
\textsf{\small{animation-sticon-icon}} & \textsf{\small{アニメ絵文字}}
\\ \hline
\textsf{\small{popup-sticker-icon}} & \textsf{\small{ポップアップ}}
\\ \hline
\textsf{\small{popup-effect-sticker-icon}} & \textsf{\small{エフェクト}}
\\ \hline
\textsf{\small{message-sticker-icon}} & \textsf{\small{メッセージ}}
\\ \hline
\textsf{\small{name-sticker-icon}} & \textsf{\small{カスタム}}
\\ \hline
\end{array}
$$

$$
\begin{array}{ll}
\\[-1.15em]\hline
\textsf{\small{(空白)}} & \textsf{\small{通常スタンプ / BIG / 着せ替え}}
\\ \hline
\end{array}
$$



注意:対象は日本販売の作品だけ

ここで1つ注意があります。
それは、「LINEショップスキャナー」が出力するデータは、

日本で販売されている作品だけ

であることです。

「LINEクリエイターズマーケット」で、作品を登録する際「販売エリア」を指定しますが、ここで「日本」が選択されていない場合、そもそもLINEショップに表示されません。たとえば「台湾」だけで販売している作品は、台湾のLINEショップだけで表示されているはずであり、日本のLINEショップには表示されていません。

「LINEショップスキャナー」が抽出しているWebサイトは、日本のLINEショップになりますので、そのため、日本以外限定で販売されている作品は取得されません。

ヒント:「LINE売上スキャナー(高機能版)」のマスターリストとショップリストの差分をとることで、日本以外で発売されている作品リストを作成することができます。



高機能版を使ったクロス解析

「LINEショップスキャナー」が真価を発揮するのは、「LINE売上スキャナー(高機能版)」で出力できる「マスターリスト」と「売上」リスト、そして公式から毎月発行されるCSVファイルとの連携です。

マスターリストには「タイトル・カテゴリ・ID・プレビューURL」が含まれています。ショップリストには「タイトル・カテゴリ・種別・ショップURL」が含まれています。

この2つをタイトル+カテゴリで紐づけると、売上データに「種別」情報とショップURLが加わります。さらにマスターリストと公式CSVとは「アイテムID」が共通しています。

これによって、次のようにすべてのデータを紐づけられます。

売上データ(日付・タイトル・売上・国)
  ↕ タイトル+カテゴリで照合
マスターリスト(ID・プレビューURL)
  ↕ タイトル+カテゴリで照合
ショップリスト(種別・ショップURL)
  ↕ IDで照合
公式CSV(販売数・確定分配額・分配率)

次のような分析ができると思います。

種別別売上比較
 アニメーションスタンプと通常スタンプ、どちらが売れているか

国別×種別クロス分析
 台湾ではアニメが多い、日本では通常が多い、といった傾向の把握

制作コスト対効果
 アニメは制作時間がかかる。売上で見合っているかの判断材料になる



ブックマークレットの登録方法

「LINEショップスキャナー」はブックマークレットとして提供されます。利用するには、ブックマークとして登録する必要があります。

  1. Chromeのブックマークバーを表示する(Ctrl+Shift+B)

  2. ブックマークバーを右クリック→「ページを追加」

  3. 名前を「LINEショップスキャナー」などに設定

  4. URLの欄に以下のコードをそのまま貼り付ける

  5. 保存する

「LINEショップスキャナー」のコード

全選択したのちにコピーしてください。コードは1行プログラムになっているため短く見えます。実際には長いコードですが、ブックマークレットとしてそのまま貼り付ければ動作します。

javascript:(function(){var url=window.location.href;var CACHE_KEY='__lineShopAuthorUrl';var THEME_CACHE_KEY='__lineShopThemeUrl';function convertToStoreUrl(lineUrl){var m=lineUrl.match(/author\/(\d+)/);if(!m)return null;if(lineUrl.indexOf('/sticker/')>-1)return 'https://store.line.me/stickershop/author/'+m[1]+'/ja';if(lineUrl.indexOf('/emoji/')>-1)return 'https://store.line.me/emojishop/author/'+m[1]+'/ja';return null;}if(url.indexOf('store.line.me')>-1&&url.indexOf('/author/')>-1){runScanner();return;}if(url.indexOf('creator.line.me/my/')>-1){if(url.indexOf('/seller/edit_basic')>-1){var stickerLinks=Array.from(document.querySelectorAll('a')).filter(function(a){return a.href.indexOf('shop/sticker/author')>-1;});var themeLinks=Array.from(document.querySelectorAll('a')).filter(function(a){return a.href.indexOf('themeshop/author')>-1;});if(themeLinks.length){var themeHref=themeLinks[0].href;var thm=themeHref.match(/author\/(\d+)/);if(thm){localStorage.setItem(THEME_CACHE_KEY,'https://store.line.me/themeshop/author/'+thm[1]+'/ja');}else{localStorage.setItem(THEME_CACHE_KEY,themeHref);}}if(stickerLinks.length){var storeUrl=convertToStoreUrl(stickerLinks[0].href);if(storeUrl){localStorage.setItem(CACHE_KEY,storeUrl);window.location.href=storeUrl;return;}}alert('スタンプ作者URLが見つかりませんでした');return;}var cached=localStorage.getItem(CACHE_KEY);if(cached){window.location.href=cached;return;}var creatorId=url.match(/\/my\/([^\/]+)/);if(creatorId){window.location.href='https://creator.line.me/my/'+creatorId[1]+'/seller/edit_basic';return;}}alert('LINEクリエイターズマーケットのページで実行してください');function runScanner(){var authorId=window.location.href.match(/author\/(\d+)/);if(authorId&&!localStorage.getItem(THEME_CACHE_KEY)){localStorage.setItem(THEME_CACHE_KEY,'https://store.line.me/themeshop/author/'+authorId[1]+'/ja');}var store={};var stopped=false;var baseUrl=window.location.href.split('?')[0];function getCat(href){if(href.indexOf('/emojishop/')>-1)return '絵文字';if(href.indexOf('/themeshop/')>-1)return '着せ替え';return 'スタンプ';}function getKind(a){var icon=a.querySelector('[data-test$="-icon"]');return icon?icon.getAttribute('data-test'):'';}function getLineUrl(href){if(href.indexOf('/themeshop/')>-1){var mt=href.match(/\/product\/([0-9a-f-]+)\//);if(mt)return 'https://line.me/S/shop/theme/detail?id='+mt[1];return '';}var m=href.match(/\/product\/([0-9a-f-]+)\//);if(!m)return '';if(href.indexOf('/emojishop/')>-1)return 'https://line.me/S/emoji/?id='+m[1];return 'https://line.me/S/sticker/'+m[1];}function parseItems(html){var parser=new DOMParser();var doc=parser.parseFromString(html,'text/html');var links=doc.querySelectorAll('a[href*="/stickershop/product/"],a[href*="/emojishop/product/"],a[href*="/themeshop/product/"]');var count=0;links.forEach(function(a){var href=a.href.split('?')[0];if(store[href])return;var titleEl=a.querySelector('p[data-test="item-name"]');var title=titleEl?(titleEl.innerText||titleEl.textContent).trim():'';var imgEl=a.querySelector('.mdCMN05Img img:not([data-test="premium-badge"])')||a.querySelector('img:not([data-test="premium-badge"]):not([class*="Premium"])');var imageUrl=imgEl?imgEl.getAttribute('src')||'':'';if(!title){if(imgEl)title=imgEl.getAttribute('alt')||'';}if(title&&title!=='Animation only icon'&&title!=='Popup only icon'){store[href]={title:title,category:getCat(href),kind:getKind(a),url:href,lineUrl:getLineUrl(href),imageUrl:imageUrl};count++;}});return count;}function ts(){var now=new Date();return now.getFullYear()+''+('0'+(now.getMonth()+1)).slice(-2)+''+('0'+now.getDate()).slice(-2);}function download(){var rows=Object.values(store);if(!rows.length){alert('データがありません');return;}var csv='\uFEFFタイトル,カテゴリ,種別,ショップURL,LINEアプリURL,画像URL\n';rows.forEach(function(r){csv+='"'+r.title+'","'+r.category+'","'+r.kind+'","'+r.url+'","'+r.lineUrl+'","'+(r.imageUrl||'')+'"\n';});var blob=new Blob([csv],{type:'text/csv'});var a=document.createElement('a');a.href=URL.createObjectURL(blob);a.download='LINEショップ_'+ts()+'.csv';a.click();}var panel=document.createElement('div');panel.id='__shopPanel';panel.style.cssText='position:fixed;top:10px;right:10px;background:#fff;border:2px solid #06C755;border-radius:10px;z-index:99999;font:13px sans-serif;width:220px;box-shadow:0 4px 16px rgba(0,0,0,0.2);';var h='<div style="background:#06C755;color:#fff;padding:8px 12px;font-weight:bold;font-size:14px;border-radius:8px 8px 0 0;display:flex;justify-content:space-between;align-items:center;">🛒 ショップスキャナー<button id="__shopClose" style="background:none;border:none;color:#fff;font-size:16px;cursor:pointer;padding:0;">✕</button></div>';h+='<div style="padding:10px;">';h+='<div id="__shopSt" style="font-size:11px;color:#555;margin-bottom:8px;">準備中...</div>';h+='<button id="__shopDL" style="width:100%;background:#4495C1;color:#fff;border:none;padding:7px;border-radius:5px;cursor:pointer;font-size:12px;font-weight:bold;margin-bottom:6px;">💾 ダウンロード</button>';h+='<button id="__shopCancel" style="width:100%;background:#e74c3c;color:#fff;border:none;padding:7px;border-radius:5px;cursor:pointer;font-size:12px;">⏹ 中止</button>';h+='</div>';panel.innerHTML=h;document.body.appendChild(panel);document.getElementById('__shopClose').onclick=function(){stopped=true;document.getElementById('__shopPanel').remove();};document.getElementById('__shopCancel').onclick=function(){stopped=true;setSt('⏹ 中止 '+Object.keys(store).length+'件');var btn=document.getElementById('__shopCancel');if(btn)btn.disabled=true;};document.getElementById('__shopDL').onclick=download;function setSt(msg){var el=document.getElementById('__shopSt');if(el)el.innerHTML=msg;}parseItems(document.documentElement.innerHTML);function fetchPage(page,base,onDone){if(stopped)return;setSt('📡 ページ'+page+'取得中... '+Object.keys(store).length+'件');fetch(base+'?page='+page,{headers:{'Accept':'text/html'}}).then(function(r){return r.text();}).then(function(html){if(stopped)return;var added=parseItems(html);setSt('📡 ページ'+page+'完了 '+Object.keys(store).length+'件');if(added===0&&page>1){onDone();}else{setTimeout(function(){fetchPage(page+1,base,onDone);},500);}}).catch(function(){onDone();});}function scanTheme(){var themeUrl=localStorage.getItem(THEME_CACHE_KEY);if(!themeUrl){setSt('✅ 完了! '+Object.keys(store).length+'件');var btn=document.getElementById('__shopCancel');if(btn)btn.style.display='none';return;}var themeBase=themeUrl.split('?')[0];setSt('🔀 着せ替えページ取得中...');fetch(themeBase,{headers:{'Accept':'text/html'}}).then(function(r){return r.text();}).then(function(html){parseItems(html);fetchPage(2,themeBase,function(){setSt('✅ 完了! '+Object.keys(store).length+'件');var btn=document.getElementById('__shopCancel');if(btn)btn.style.display='none';});}).catch(function(){setSt('✅ 完了! '+Object.keys(store).length+'件');var btn=document.getElementById('__shopCancel');if(btn)btn.style.display='none';});}fetchPage(2,baseUrl,scanTheme);}})();

更新情報

2026/05/10 データにサムネール画像URLを追加しました
2026/05/10 絵文字のhttps://line.me/S/sticker/形式の対応
2026/05/09 https://line.me/S/sticker/形式の購入ページURLを追加しました。
2026/05/09 記事と共に初公開しました。



ブックマークレットの使い方

「LINEショップスキャナー」の使い方は次のとおりです。

事前準備

PCで、LINEクリエイターズマーケットにログインした状態にしてください。

注意:スマホは未対応
PCで表示されるショップページと、スマホで表示されるショップページが形式が異なる場合があります。そのため、本ブックマークレットはスマホでは情報収集がうまくいかない可能性があります。

ブックマークレットの実行

「LINEショップスキャナー」を実行します。

初回のみ(2クリック)

1回目の実行では、アカウント設定ページ(seller/edit_basic)に自動移動します。このページにショップURLの情報があるためです。

移動したら、もう一度ブックマークレットを実行してください。ショップページへ移動し、データ収集を開始します。このとき、ショップURLがブラウザに保存されます。

2回目以降(1クリック)

2回目以降は、マイページのどこにいても1クリックで直接ショップページへ移動し、データ収集を開始します。初回に保存されたURLが使われるためです。

※上記わかりずらかったら、とにかく「何度かブックマークレットを実行すればよい」と覚えてください。

完了したら、「ダウンロード」ボタンを押すと、CSVファイルがローカルディスクに保存されます。

完了したらダウンロードを押します

着せ替えのデータを取りたい場合

上記の方法の場合、「スタンプ+絵文字」のショップリストだけ収集され「着せ替え」は含まれません。「着せ替え」のショップリストを収集したいときには、「着せ替え」作品を表示し、そこから作者ページに移動して本ツールを実行してください。



まとめ:AIへの丸投げのすすめ

「LINEショップスキャナー」単体でも、作品の販売サイトを含めたデータ管理に役立つと思いますが、おすすめしたいのは、

「LINE売上スキャナー(高機能版)」

との連携です。

  • 国別売上リスト(高機能版で作成)

  • マスターリスト(高機能版で作成)

  • ショップリスト(本ブックマークレットで作成)

これらをAIにアップロードして分析を指示するだけで、さまざまなことが見える化できると思います。今後の施策に活かせるのはもちろん、note記事のネタにすることもできると思います。

どう利用するかはあなた次第!

以上!



LINEスタンプ自動化プロジェクト

LINEスタンプの自動化に関する記事については、マガジンにまとめてあります。ご興味ある方はご覧ください。


いいなと思ったら応援しよう!

ROROSUKE LABO 記事なり、プログラムなりが役に立ったと思った方は、 チップの応援よろしくお願いいたします。 次の開発もがんばろうかな、という気になりますのだ (笑)