質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

2回答

1495閲覧

Milkcocoaで読み込んだデータはGooglebotのクロール対象になりますでしょうか?

退会済みユーザー

退会済みユーザー

総合スコア0

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2015/10/28 13:03

初心者ですみません。

Milkcocoaの利用はSEO的にも全く問題なく、通常と同じく検索エンジンでヒットするのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

※画像を貼るため、再度回答するかたちですみません。

以下のURLは確かにレンダリングを確認したものです。ソースコードをご覧頂ければと思います。
http://google-rendering-milkcocoa.netlify.com/

以下が証拠になります(Search Consoleを使うためにURLは上記のものとは違うものを使用しましたが、ソースコードは全く同じものを使っています)。

イメージ説明

重要な点は、GooglebotにはMilkcocoaインスタンスを作らせない(var milkcocoa = new Milkcocoa()を回避させる)点であるようです。

上で私が回答しているコードは再度回答用に書き直してしまって間違っているものです。。混乱させてしまいすみません。。

投稿2015/11/08 14:43

kiyopikko

総合スコア105

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wevenainc

2015/11/14 06:33

わかりやすいご説明ありがとうございます。無事解決致しました。今後とも宜しくお願い致します。
guest

0

Milkcocoa開発チームのものです。

「Milkcocoaで取得したデータを元にHTMLを生成している場合、Google Botがそれをレンダリングしてくれるか?」という質問だと解釈して回答します。

こちら検証した結果、以下のようにSDKのAPIをそのまま使用した場合、現状だとGoogle Botはレンダリングしてくれませんでした。

javascript

1milkcocoa.dataStore('test').stream().next(function (err, data) { 2 renderMessage(data); // HTMLを生成する関数 3});

ただ、stream()自体は、実質URLに対してHTTPのGETを発行しているだけなので、SDKを使う代わりにAjaxで取得することが可能です。試しに以下のURLにアクセスするとMilkcocoaのドットアプリのデータが見れることがわかるかと思います。
-> https://dogi9jz8c16.mlkcca.com/api?appid=dogi9jz8c16&api=query&limit=10&sort=DESC&path=dots

Ajaxを使うとGoogle Botもレンダリングしてくれるようになりますので(Ajaxのクロールについての参考記事)、以下のようにUserAgentで分岐をすると良いかと思います(レンダリングの検証も行いました)。

javascript

1var ua = window.navigator.userAgent.toLowerCase(); 2var app_id = 'your-app-id'; 3var milkcocoa = new MilkCocoa(app_id+'.mlkcca.com'); 4 5if(ua.indexOf('googlebot') != -1){ 6 $.get('https://'+app_id+'.mlkcca.com/api', { 7 path : 'message', 8 limit : 50, 9 sort : 'DESC', 10 api : 'query', 11 appid : app_id 12 }, function(data) { 13 data.content.d.map(function(d) { 14 return { 15 id : d.id, 16 value : JSON.parse(d.value) 17 } 18 }).forEach(function(data) { 19 renderMessage(data); // HTMLを生成する関数 20 }); 21 }, 'json'); 22} else { 23 milkcocoa.dataStore('message').stream().next(function (err, data) { 24 renderMessage(data); // HTMLを生成する関数 25 }); 26}

お役に立てれば幸いです。

投稿2015/11/01 06:17

編集2015/11/01 06:17
kiyopikko

総合スコア105

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wevenainc

2015/11/08 14:05

ご回答ありがとうございます。 以下のコードを試してみたところ、適切に表示はされるのですが、やはり、Googleのレンダリングでは、HTMLの生成部分が反映されません。コードのミスや、Javascript以外の原因は何かありますでしょうか? $(function() { function getData() { var ua = window.navigator.userAgent.toLowerCase(); var app_id = 'your-app-id'; var milkcocoa = new MilkCocoa(app_id+'.mlkcca.com'); $.get('https://'+app_id+'.mlkcca.com/api', { path : 'message', limit : 50, sort : 'DESC', api : 'query', appid : app_id }, function(data) { data.content.d.map(function(d) { return { id : d.id, value : JSON.parse(d.value) } }).forEach(function(data) { renderMessage(data); }); }, 'json'); } getData(); function renderMessage(message, before) { var message_html = '<p class="post-text">' + escapeHTML(message.value.content) + '</p>'; var date_html = ''; if(message.value.date) { date_html = '<p class="post-date">'+escapeHTML( new Date(message.value.date).toLocaleString())+'</p>'; } if(before) $("#messages div:first-child").before('<div id="'+message.id+'" class="post">'+message_html + date_html +'</div>'); else $("#messages").append('<div id="'+message.id+'" class="post">'+message_html + date_html +'</div>'); } }); function escapeHTML(val) { return $('<div>').text(val).html(); };
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問