2022年1月16日 (日)

【ブログサービス】ココログのレビュー【SEO的には?】

数年間ココログを使ってきて分かったことをレビューにしていきたいと思います。
結論から言うと、ココログはお薦めしません。
最大の問題点は、スマホサイトでの広告表示が非常に重く、閲覧者のストレスになる上にGoogleからの評価も下がる可能性があるからです。

また、ココログには複数のプランがありますが、@nifty接続会員以外の人が無料で利用できるフリープランと、@nifty接続会員が無料で利用できるベーシックプランの2種類についてここでは取り上げます。
この2つの違いは主に以下です。
・フリープランはパソコン用サイトでも広告が付くのに対し、ベーシックプランはスマホ用サイトのみに広告が付きます。
・フリープランにはサポートがありません。

次に、ココログの利点・欠点について、私が気づいたことを挙げていきます。

利点

アフィリエイトリンクが利用可能
アフィリエイトリンクを許可していないブログもある中、ココログは許可しています。
CSSを追加可能(パソコン用サイトのみ)
CSSとは、サイトのデザインを指定するファイルです。サイトのHTMLは編集できないので(記事本文のHTMLは編集可能)レイアウトの大きな改変はできませんが、例えば文字の大きさ、フォントの種類、見出しのデザインなどを自由に変えることが出来ます。
ただしスマホ用サイトにはCSSが効かない点は注意点です。
SSLに対応
セキュリティの観点から、SSLに対応していることが望ましいようです。SSLに対応しているサイトはURLがhttpsから始まります。ただし昨今はSSLに対応していることは当たり前かもしれません。ココログでは標準ではSSL非対応ですが、設定でSSL対応に変えることが出来ます。Googleの検索結果でも、SSL対応しているサイトが多少優遇されるようです。
JavaScriptが使用可能
JavaScriptを使用すると色々とブログを弄れるようになります。JavaScriptは「マイリスト」という中に書けばサイト全体に適用できるのですが、これはスマホサイトでは無効化されます。しかし裏技としてブログのサブタイトル欄に書くことで、スマホサイトでも有効化されます。また記事本文編集欄にもJavaScriptを挿入できますが、これもスマホサイトでは無効化されます(scriptタグが無効化される)。
多機能なアクセス解析が利用可能
割と多機能で使いやすいアクセス解析が利用できます。

欠点

スマホ用サイトでの広告表示が重い
スマホ用サイトでの広告表示が重すぎて、これが致命的な欠点となっています。PageSpeed Insightsという、サイトの表示速度を測るサイトがありますが、ここで測るとココログのスマホ用サイトはスコアが20点台とかなり低い数値になります。
サイトの表示速度が遅いと閲覧者に不便を強いますし、Googleからの評価も落ちる可能性があり、SEOに不利です。
記事編集画面でバグがある
詳細は不明ですが、記事編集画面にてリッチテキスト形式とHTML形式の編集画面を切り替える際に、divタグやpreタグで囲われた中に自動で改行コードが挿入されるようなバグがあります。そのため、それらのタグ内では行間が一行余計に空きます。これを回避するには編集画面を切り替えないことですが不便です。このバグはずっと直っていません。
規約でリダイレクト禁止
規約で他サイト等へのリダイレクトが禁止されています。そのため、ブログを他のブログサービスに移行する際には不便です。他のブログサービスに移行する際にリダイレクト処理ができると、ページランクを出来るだけ引き継いだまま早期に移行が出来ます(検索エンジンの検索結果に新しいブログの方を早期に表示させられる)が、リダイレクトが出来ないとこの移行作業が長くかかります(少なくとも1年?)。とは言え、どの無料ブログでもそうですがリダイレクトにはJavaScriptの記述が必要なのでJavaScriptを多少は知っていなければそもそもリダイレクトはできません。
スマホ用サイトでの制約が多い
これは前述しましたが、スマホ用サイトではJavaScriptが無効化され(サブタイトル欄への記述という裏技を除き)、追加したCSSも無効化されます。また、サイドバーも表示されなくなります。

その他

HTML5には対応していませんが、HTML5に対応しているブログサービスは今のところは殆ど無いと思いますので欠点には数えませんでした。SEO的にも大きく不利にはならないのではないかと思います。
ドメインパワーも低くは無いと思います。
私は現在はココログからBloggerへ移行していますが、Google検索結果の順位に特別な差は無いと思います。ただ、一部の記事についてはココログではGoogle検索結果から除外されていたものでもBloggerでは表示されています。これはもしかするとココログのスマホサイトの重さが原因でペナルティを食らっていたのでは?と勘ぐっていますが真実は分かりません。
また、ブログサービス関係なく個人ブログはGoogleには評価されにくくなっているという事実はあります。

まとめ

@nifty接続会員であっても、特別ココログを利用する必要は無いと思います。
また私が現在利用しているBloggerもまた玄人向けと言いますか、良いテンプレートが揃っていないので一般的にはお薦めはし辛いです。
はてなブログやFC2ブログなど有名どころが一般的には使いやすいのかなと思います(詳しくは知りません)。

2022年1月 9日 (日)

【SEO】更新日をGoogle検索結果に表示させる方法(JavaScript使用)

Googleの検索結果に、ブログ記事の更新日を確実に反映させる方法は存在しませんが、記事ページに更新日のみを記載することで高確率で反映されるようになるという情報があります。
おそらく、公開日と更新日を両方記載していると高確率で公開日のほうが検索結果に反映されてしまうように思います。
また、「構造化データ」に更新日を記載することも一助になるかと思いますが、これについては難しいのでこの記事では触れません。
実際に私はこの記事で紹介する方法で公開日を更新日に書き換え、更新日がGoogle検索結果にクロールから数日以内に反映されていることを確認しました。
ただ私の場合は構造化データにも更新日を記載していますが、これについてはあまり大きな影響は無いような気もします。
また、更新日を反映されたことによって、少々驚いたことにはGoogle検索結果における表示順位も少し上がっていました。

ウェブページの日付に関するGoogleの資料を参考までに載せておきます。
ウェブページの最適な日付を Google 検索に知らせるには
Google 検索に対して公開日を指定する

更新日はGoogleが自動で判別します。
通常(対策なしの場合)であれば、おそらく、記事の内容が大幅に更新された時を更新日と認定する傾向にあるのかもしれません。
しかし実際は、記事内容を大幅に更新していなくても、内容をしっかりと見直して情報を新しいものに更新している場合も多いと思います。Googleのアルゴリズムはこの点の判断はできません。

Google検索結果に表示される日付は結構重要で、この日付が古いと見てもらえなくなる場合は多いと思われます。特に情報の鮮度が重要な分野では顕著です。

ただし注意点としては、記事の内容をしっかりと更新せずに、小さい変更や修正だけを行った際には日付を更新しない方が良いと思います。読者に誤解を与えるからです。
そのため、記事を修正したら自動的に日付が更新される仕様にすることには私は抵抗があります。
もちろん、記事を修正する時は常に記事内容をしっかりと更新するという人であれば構いません。

私の方法は、個別記事のHTML編集欄にJavaScriptを挿入することで簡単に記事の公開日を更新日に書き換えるというものです。この方法なら、記事ごとに更新日を任意で書き換えられます。
記事ごとにコードを挿入する手間はありますが、基本はコピペで、日付だけ変更することになります。
またこの方法は、無料ブログの多くに対応できると思います。ただブログによってはJavaScriptを書いても無効化されることがあるのでご注意ください。
例えばココログの場合だと、スマホ用サイトでは記事本文編集欄のscriptタグが無効化されます。

JavaScriptのコードはブログによって異なります。
例えば私はBloggerのQooQテンプレートを使用しているのですが、その場合は以下のコードをHTML編集欄の最上部に挿入します。

<script>
{
    let dateModified = '2022/01/03';
    let elem = document.getElementById('single-header-date');
    elem.innerHTML = '<time>'+dateModified+'</time> 更新';
}
</script>

青色の日付の部分を任意の更新日時にします。
「公開日」が記載されている要素を取得し、innerHTMLでその要素を書き換えています。
それにはまずブログ記事のHTMLソースをブラウザのデベロッパーツール(chromeの場合は「Ctrl + Shift + I」で開けます。)で確認、または記事ページで左クリック→「ページのソースを表示」で確認します。

BloggerのQooQテンプレートのHTMLソースを見ると、公開日は
<p id="single-header-date">2019/12/01</p>
のように記載されています。取得対象の要素にidが付与されているため、これをdocument.getElementById('id名')で取得し、その内部をinnerHTMLで書き換えています。
idではなくclassが付与されている場合は、代わりにdocument.getElementsByClassName('class名')[0]を用います。ただ同class名は複数存在することもあるため、最後の[0]のインデックス番号は必要に応じて増やします。

また、公開日が記事本文の上部に記載のあるブログについてはこのように記事本文の編集欄の最上部にコードを書けば良いのですが、逆に公開日が記事本文の下にあるタイプでは、addEventListenerを用いるなどしてJavaScriptの実行を遅らせる必要があります。
JavaScriptでHTML要素を書き換える場合、対象のHTML要素が読み込まれた後で無いと書き換えることが出来ないからです。
この場合は記事本文のHTML編集欄の最下部に、以下のようなコードを挿入します。{}内は前述のコードと同じです。この部分をブログに合わせて変えます。

<script>
document.addEventListener('DOMContentLoaded', () => {
    let dateModified = '2022/01/03';
    let elem = document.getElementById('single-header-date');
    elem.innerHTML = '<time>'+dateModified+'</time> 更新';
});
</script>

次に、いくつかのブログについて見ていきます。

はてなブログの場合は、公開日は以下のようにHTMLに記載されています。

公開日は<div class="date entry-date first">...</div>の中にあることが分かりますので、この要素を取得してinnerHTMLで書き換えれば良いです。
ただし、この要素にはaタグでリンクが付与されており、つまり公開日にリンクが張られている訳ですが、書き換えるとこのリンクは使用できなくなります。
また、このaタグを対象にcssも設定されているので、書き換えるとこれも適用できなくなりますのでこれをstyle属性で補完します。
コードは以下のようになります。

<script>
{
    let dateModified = '2022/01/03';
    let elem = document.getElementsByClassName('date entry-date first')[0];
    elem.innerHTML = '<span style="font-size:90%"><time>'+dateModified+'</time> 更新</span>';
}
</script>

Amebaブログの場合は、HTMLは以下のようになっています。

これは一番上のp要素を取得して、その内部を丸ごとinnerHTMLで書き換えるのが簡単かもしれません。ただこの場合、p要素の子要素としてtime要素と並んで「NEW!」を表示する要素がありますので、p要素の内部を丸ごと書き換えると、この「NEW!」は表示されなくなります。また、skin-textQuietクラスに対してcssが設定されていますので、このクラスは再設定しておきます。

<script>
{
    let dateModified = '2022/01/03';
    let elem = document.getElementsByClassName('skin-entryPubdate')[0];
    elem.innerHTML = '<span class="skin-textQuiet"><time>'+dateModified+'</time> 更新</span>';
}
</script>

また、innerHTMLで丸ごと書き換えずに対象のtime要素のみをreplaceChildメソッドを使用して書き換えることも出来ます。そうすればNEW!表示は消えません。少しコードが複雑になりますが、以下のようになるかと思います。

<script>
{
    let dateModified = '2022/01/03';
    let parent = document.getElementsByClassName('skin-entryPubdate')[0];
    let child = parent.getElementsByTagName('time')[0];
    let newChild = document.createElement('span');
    newChild.className = 'skin-textQuiet';
    newChild.innerHTML = '<time>'+dateModified+'</time> 更新';
    parent.replaceChild(newChild, child);
}
</script>

もっと例を挙げることもできますが...正直、この記事がどこまで需要があるか分からないのでこの辺にしておきます。JavaScriptを多少でも知っていれば簡単なのですが、全くの初心者だと少々厳しいかもしれません。
また、例は挙げましたがJavaScriptが無効化される仕様になっていないかどうかはご確認下さい。

2021年11月14日 (日)

【サイト移転】内部リンク張り替え・文字置換用スクリプト

URLの変更を伴うサイト・ブログの移転に際に、内部リンクの張り替え作業が必要になります。
単純にドメイン名の部分だけが変更になるのであれば、テキストエディタなどの置換機能を使えばできます。しかし、URLのファイル名を含めて全く異なるURLに変わる場合はそれぞれの対応ごとに置換する必要があるため、通常の置換機能では難しいです。
そこで、必要な分の置換ペアを連想配列形式で作っておき、それを基に記事を書き替えるスクリプトを作りました。
【無料ブログの移転】個別記事ごとにcanonical付与とリダイレクトを行う方法【JavaScript】で作成した、新旧URL対照表の連想配列を使用できます。

これはURLの置換だけではなく文字列の置換にも利用できます。

一応断りとして私はプログラミングの素人である点はご了承ください。
このスクリプトを利用した結果、正常に出力されているか確認してください。

このスクリプトでは以下のようなJSON形式の連想配列を使います。
{"旧URL1":"新URL1","旧URL2":"新URL2","旧URL3":"新URL3"}
置換元・置換先のURLまたは文字列はダブルクオーテーション(")で囲み、コロン(:)を新旧ペアの間に入れます。置換ペアを追加する時はカンマ(,)で区切ります。

このスクリプトでは複数のURL形式を認識します。
連想配列に入力された置換元URLがフルパスまたはhttp:/https:の省略形(//example.com/...)の場合、https/http、wwwの有無、http(s):の省略の有無のパターン全てを検索して置換します。
ルートパスや相対パスの場合はそのままを検索して置換します。
URL形式では無い場合もそのままを検索して置換します。

一応HTML・XMLエスケープ機能も付けています。
HTMLまたはMT形式のテキストを対象に置換を行う際は、HTMLエスケープされた文字列を検索する必要があり、置換後の文字列についてもHTMLエスケープされている必要があります。
XMLに関してはBloggerなど一部のブログサービスのインポート・エクスポートファイルがXML形式となっていますので、これらのファイルを対象に置換する場合はHTMLエスケープに加えてXMLエスケープを行う必要があります。
ただHTMLに関してはエスケープ文字の選択肢が複数ありますし、ブログによってはエスケープの必要のない文字までエスケープされていることもあります。それら全てを検索する機能はありません。
HTMLエスケープ機能に関しては、このスクリプトに入力された置換元・置換先文字列について以下のように変換してから置換作業を行います。
& → &amp;
' → &#x27;
` → &#x60;
" → &quot;
< → &lt;
> → &gt;
つまりHTMLエスケープ機能については不完全です。
URLであればそもそもエスケープする必要のある文字(上記の文字)が入っていないことがほとんどだと思いますし、「&」があってもこのエスケープ機能でほとんど対処できると思います。
URL以外の文字列に関してはこの機能を使うよりも、サイト・ブログのHTMLソースに使われているエスケープ文字を確かめて、自分で文字列をエスケープしておくのが良いです。
XMLについては複数のエスケープ文字の候補は無いと思うので、このスクリプトの機能は使えると思います。

URL用の機能として、連想配列内にはルートパスを入れ、後から、共通部分であるドメイン以上の部分を頭に追加するためのフォームも作りました。
連想配列内のキー(置換元文字列)と値(置換先文字列)に対して、このフォームに入力された文字列を後から追加し、追加された後の文字列に対して各種処理(エスケープ含め)を行います。

連想配列内のキー(変換元文字列)の頭に結合

連想配列内の値(変換先文字列)の頭に結合

連想配列を入力

ブログのデータを入力

エスケープ


 
変換結果

2021年10月19日 (火)

Dr. Schulze's 腸のデトックスプログラムのレビュー

Dr. Schulze's (American Botanical Pharmacy)から出ている、腸のデトックスプログラムのレビューを行いたいと思います。
American Botanical Pharmacyの製品はデトックス用としてバシャールが薦めたことで有名になっていると思います。ただしバシャール曰く、これ以外にも良い物はあるとのことです。
しかし日本には同じようなデトックス用の製品は恐らく無く、アメリカ等から輸入しないと手に入らないと思います。Dr. Schulze'sは日本にも送ってくれますのでこれを利用してみました。
Dr. Schulze'sで購入する際はクーポンを利用したりスペシャルオファーの時に利用すると安く買えます。メールマガジンに登録しておくと、時々送料無料のオファーが来ます。国際便は無料の対象外ですが、それでも割引をしてくれるようです。また、クーポン発行サイトがいくつかありますのでそれらを利用することも出来ます。
ちなみに私が良く利用するアメリカの通販サイトiHerbでも、デトックス用のキットが何種類も売っています。これらとの違いについては、Dr. Schulze'sのほうが飲む量が多くガイドも細かく、本格的なプログラムであるように思いました。

Dr. Schulze'sの腸のデトックスでは「Intestinal Formula #1」「Intestinal Formula #2」を用います。Intestinal Formula #1は腸の蠕動を促して排泄を促す、いわゆる下剤としての処方、Intestinal Formula #2はチャコール・クレイ・食物繊維などが成分で腸内の不純物を吸着するための処方です。
プログラムのガイドはhttps://www.herbdoc.com/5-day-bowel-detoxでダウンロードできますのでそちらを参考にしてください。
まずIntestinal Formula #1を数日間飲み、腸の排泄を良くしてからIntestinal Formula #2を飲み始めるという流れです。
初めからIntestinal Formula #2を飲み始めると、食物繊維等が増えることで腸の排泄が逆に悪くなる可能性があるのかもしれません。

Intestinal Formula #2についてはカプセル状のものとパウダー状のものがあります。
パウダー状のものは水やジュースに混ぜてから飲みます。水だけで飲むと飲みにくい味ですが、オレンジジュースと水を半々に混ぜたもので飲むと大丈夫でした。
オレンジジュースと水を半々か、またはオレンジジュースを少し多めにする方法がお薦めです。オレンジジュースだけだと水分が不足する感じがします。
500ml弱の水分と一緒に飲む必要がありますので、カプセルよりもパウダーのほうが水が飲みやすいのではないか?と思いました。
価格もパウダーのほうが安いので、個人的にはパウダーのほうを薦めます。
また、パウダーの場合は水分と混ぜてシェイクするためのボトルが必要です。パウダーの成分が容器に付着しやすいので、簡単に洗えるものを用意すると良いと思います。私は水筒を使ったのですが、注ぎ口の部品にパウダーが付着して取れなくなりました。

Intestinal Formula #1は何錠飲むか決められている訳ではなく、排泄がスムーズになるまで(毎日排泄があるまで)錠数を調整しながら飲むという方法になります。そのため、多めの量が入っています。
実際に試したところ、私はこの処方は合わなかったようです。どうも私は胃が弱く、例え一錠だけを飲んだとしても胃が痛くなりました。そして下痢をすることもあったのですが、逆に排泄が2日に1回に留まることもあり、プラスの作用よりもマイナスの作用のほうが強い感じでした。
どうすべきか考えたところ、もっと優しい下剤を使ってみたら良いのでは無いかと思いました。
そこで下剤について調べたところ、どうやら下剤には大雑把に言うと2種類あり、センナやカスカラサグラダ、アロエなどの植物性のものと、酸化マグネシウムなどの鉱物性のものがあることが分かりました。植物性のものは腸を刺激して蠕動を促しますが、酸化マグネシウムは浸透圧の関係で腸内の水分を増やすことで便を柔らかくして排泄しやすくします。植物性のほうが作用が強いです。Dr. Schulze'sは植物性のものを使っています。
そのため私は作用が穏やかな酸化マグネシウムをIntestinal Formula #1の代わりに使うことにしました。酸化マグネシウムでも色々種類がありますが、私はその中でも作用が強くコスパも良かった「フジックス 3Aマグネシア 90錠」を購入しました。https://www.yodobashi.com/product/100000001002738916/
これで試したところ問題は無くなりました。こちらのほうが私には合っていたようです。

ちなみに、iHerbで売っているデトックスキットのほとんどが植物性の下剤を使用しています。ただ、中には酸化マグネシウムを下剤に使用したキットもありました。
Nature's Way, Thisilyn(ティシリン)クレンズ、Mineral Digestive Sweep(ミネラルダイジェスティブスウィープ)配合、15日間プログラム
胃が丈夫な人はそのまま植物性の下剤で大丈夫かと思いますが、胃が弱い人はこのように酸化マグネシウムを使用した方法を試すというのも有りかもしれません。

デトックスプログラムを終えて、私は特別変化は感じませんでしたが、効果は無いとは思わないので、今後定期的にやっていければと思っています。
また、腸(Bowel)のデトックス以外にも肝臓(Liver)や腎臓(Kidney)のデトックスプログラムもあります。そちらも余力があればやりたいとも思っています。
iHerbのデトックスキットでは肝臓のデトックスも腸のデトックスも一緒に行う手軽な仕様なのですが、Dr. Schulze'sでは分かれています。

2021年10月 2日 (土)

「クロール済み - インデックス未登録」として記事が除外される原因はGoogle独自の品質評価にある?

自分のサイトの記事が「クロール済み - インデックス未登録」になってしまう理由について、ネット上ではごく一般的な見解しか書かれておらず、実情を書いているサイトが見つからなかったので、ここで私なりの見解を書かせて頂きたいと思います。

Google Search Consoleの「カバレッジ」ではサイト内の各ページのインデックス登録状況を確認できます。
この中の「クロール済み - インデックス未登録」には、通常はカテゴリやアーカイブなどのインデックス登録の必要が無いページが含まれるのですが、本来インデックス登録して欲しい主要なページ(記事ページ)もここに含まれていることがあります。
「クロール済み - インデックス未登録」とは文字通り、クロールしたけれども何らかの理由によりGoogle検索エンジンにインデックス登録されなかった状態を示します。この状態では、Googleの検索結果に表示されません。

クロール済み - インデックス未登録: ページは Google によりクロールされましたが、インデックスには登録されていません。今後、インデックスに登録される可能性がありますが、登録されない可能性もあります。この URL のクロールのリクエストを再送信する必要はありません。

引用元:インデックス カバレッジ レポート

主要なページ(記事ページ)がこのようにインデックス登録から除外される理由は、Googleから低品質なコンテンツだと見なされている、というのがあります。
ただしこれはあくまでGoogleの判断であり、実際に低品質かどうかとは別です。

前提としてサイトのトップページから容易にアクセス可能になっており、重複コンテンツや内容の薄いコンテンツ等では無いことを確認してください。これら基本的なことは抑えているにも関わらず、インデックス登録から除外される場合があります。

近年Googleはサイトの品質を測る機能を強化しており、記事の内容を見るだけではなく、「専門性・権威性・信頼性」という基準を設け、それらが高いサイトを高品質だと判断するようになっています。「専門性・権威性・信頼性」は略して「E-A-T」と呼ばれます。
参考:SEO対策に最重要のE-A-Tとは?3つを高める対策も紹介

つまり、例え記事の内容が充実しておりオリジナリティが高かったとしても、このE-A-Tが高くないと判断されると、品質の低い記事だと見なされる可能性があるということです。
特に個人の小規模なブログの記事はE-A-Tを高める余地が少ないため、Googleから低品質だと見なされやすくなります。一方で企業のサイトやジャンル特化型のサイトが高品質だと見なされやすくなっています。

そして特にE-A-Tが重視されるのが「YMYL」と呼ばれる分野です。YMYLとは「Your Money or Your Life(あなたのお金や生活)」の略で、これに大きく影響する分野(金融・医療・法律など)を表します。
参考:YMYLとは?対象ジャンルやSEO対策ポイントについて解説!

Googleはこのようにして独自の品質評価を用い、低品質な記事だと判断したものについては検索結果の下位に表示するか、検索結果から除外するか、または「クロール済み - インデックス未登録」としてインデックス登録からそもそも除外してしまうことがあるということのように思います。

私のブログ記事でも、疾患(アトピー)に関する個人的な経験を書いた記事はインデックス登録されません。また、投資に関する記事の一部もインデックス登録されません。YMYLが影響しているように感じます。YMYL以外の分野で除外されている記事もあります。

ここまで解説してきましたが、もしかしたら別の理由で除外されていることも考えられますので、まずは基本的なSEO対策を確認した上で、それでもインデックス登録されない場合はGoogleによる品質評価が働いた可能性が考えられるのではないかと思います。

どのようにすれば少しでもE-A-Tを高められるかですが、考えられるのは「信頼性の高いサイトへのリンクを貼る」「信頼性の高いサイトから引用する」といったことです。
信頼性の高いサイトとは、その分野における専門家のサイトや公的機関のサイト、専門企業のサイトなどで、少なくともGoogle検索で上位表示されるサイトである必要があります。
リンクを貼る場合はアンカーテキストを適切に設定し、引用する場合はblockquoteタグを使います。
しかしもちろん、ユーザーにとって何の役にも立たないリンクを貼る行為は推奨できません。
また、著者やサイトについてのプロフィール情報(運営者情報)を充実させることも有効であるようです。非専門家の個人であれば、資格や個人情報を書くことは出来ないと思いますが、それ以外のことで自分のことを知ってもらえるような情報を書くことはできます。

個人的にはGoogleの品質評価は恣意的に過ぎるように思います。個人の非専門サイトの記事でも有用な記事は沢山あるし、逆に企業のサイトや専門サイトでも低品質な記事は沢山あります。
このようなGoogleの品質評価はGoogle独自のものであり、BingやDuckDuckGoなどの検索エンジンではここまで品質評価は強くありません。
私はGoogleの検索エンジンに疑問を感じ、BingまたはDuckDuckGoも試してみたところ、検索結果にかなりの違いがあることが分かりました。それについての記事はこちらを参照してください→[検索エンジン比較] Googleへの疑問 - BingやDuckDuckGoとの違い

2021年9月 6日 (月)

AliExpressのストア評価(フィードバック)は操作可能?

AliExpressは中国のアリババ傘下の海外向けショッピングサイトです。安く色々なものが売られており、かつ購入者保護の制度もあることから利用しやすいサイトだと思います。
日本のAmazonに売られている、中国からの輸入だと思われる商品も、AliExpressで検索すると見つかることも多く、Amazonで買うよりも安いことも多いです。

今回はAliExpressにおけるストアの評価についての疑問点が出てきましたので記事にしたいと思います。

ストアの評価(フィードバック)はストアの信頼性を測る目安ですが、これはストア側である程度操作が可能なのではないかと思います。
私は、ある購入商品について若干辛口のフィードバックを寄せたのですが、そのすぐ後にはその商品ページごと削除され(私のフィードバックも削除され)、同じ商品の新しいページが出来ていました。
そのストアのフィードバックは100%の高評価でしたが、フィードバック数自体は少なかった(数十)です。

ここから推察できるのは、そのストアはおそらく悪いフィードバックをもらう度に商品ページごと削除して作り直しているのではないかということです。結果として、フィードバック数自体は増えないということのように思えます。

なので気を付ける点としては、高評価で、かつフィードバック数が少ないストアはフィードバック操作をしている可能性があるのではないかということです。

もっとも、フィードバック操作をしていたとしてもそのストアの対応が悪いかどうかは若干分からない点もあると思いますが、一応気を付けた方が良い点だと思います。

また、こういう手法はAliExpressだけでは無く、他の通販サイトでも行われている可能性はあります。
この手法以外にも色々なレビュー操作がありますので、通販サイトでレビューを参考にする時は、レビュー操作が行われている可能性を意識する必要があると思います。

2021年8月25日 (水)

[検索エンジン比較] Googleへの疑問 - BingやDuckDuckGoとの違い

初めに私の結論を述べたいと思います。
Googleはサイトの品質を測る独自のフィルターが強く働いているように感じます。それが機能して低品質なサイトが除外される一方で、有用なサイトも除外してしまっている面があると感じています。
一方でBingやDuckDuckGoではそのようなフィルター機能は少なく、単純に検索キーワードと記事内容の関連性によって検索結果を表示する傾向があると感じます。
Googleの、サイトの信頼性を判断するという試みそのものは挑戦的で良いものだと思うのですが、現時点ではAIはサイトの質や信頼性を正確に測る能力はありません。
BingかDuckDuckGoの場合は、低品質な記事も表示される一方で有用な記事の除外も少ないという傾向にあるのではないかと思います。
また、「低品質」の判断は人によって異なることもある点も重要だと思います。その判断を検索エンジンが積極的に行うのには懸念もあります。

BingはMicrosoft社の検索エンジンで、ブラウザーのEdgeの標準です。DuckDuckGoもアメリカ企業の検索エンジンで、VivaldiやTor Browserの標準であり、プライバシー保護を重視しているものとして有名です。
GoogleとBingまたはDuckDuckGoでは検索結果がかなり異なります。
ただしBingとDuckDuckGoは比較的似た検索結果となります。DuckDuckGoはBingの検索結果を取り入れているようです。
私は最近Googleの検索結果に疑問を持ったのですが、それは私のブログ記事がなぜかGoogleでは上位表示されにくいことに気づいたことがきっかけです。逆にBingとDuckDuckGoでは上位表示されやすいです。
私のブログでは基本的に既存のネット上に無い情報の発信を行っており、それについてのキーワードで検索すれば上位表示されても良いだろうと考えるのですが、Googleでは上位表示されるどころか検索結果から除外されている(検索圏外になっている)ことも多く、関連性が薄いか内容の薄い記事ばかりが並ぶ状態が散見されます。検索結果から除外されている記事は、内容の薄い記事ではなくむしろしっかりと書いた記事も多く、なぜそれらが除外されているのかは本当に疑問です。
もう一つ疑問に思うのが、同義語の検索で全く異なる検索結果が出ることです。
ほぼ同じ意味でも別の表現にして検索すると、上位表示されていた記事がいきなり検索圏外になったりします。私のブログ記事でも特定のキーワードで検索するとかなり上位表示されるものもあるのですが、少し検索キーワードを変えるだけで検索圏外になったりします。
検索キーワードは、記事タイトルに含まれている範疇で変化させてもこのようになります。
例えば、「Firstrade証券、およびIB証券について」という私の記事があるのですが、「Firstrade ib証券」で検索すると2位に表示される一方、「Firstrade証券 ib証券」や「Firstrade ib」で検索するといきなり検索圏外になります(なぜか他のサイトの表示順はほぼ変わっていませんでしたが)。他にも、「オプションキャッシュフロークラブ(OCFC)のレビュー」という記事は「オプションキャッシュフロークラブ レビュー」で検索してもなぜか圏外ですが、「オプションキャッシュフロークラブ OCFC」や「OCFC レビュー」だと上位表示されます。
ちなみにこの「オプションキャッシュフロークラブ」についての情報はネット上に少なく、他のレビュー記事も見当たらないものであるにも関わらず、私のレビュー記事が検索結果に表示されないのは明らかにおかしいです。
このようなことは、BingやDuckDuckGoでは起こっていないように見えます(ただし記事タイトルに含まれない同義語の推測はGoogleと同じく難しい模様です)。

これらの検索エンジンの違いについて、私が感じたことを書きます。

Googleは信頼性の高いサイトを上位表示しようとしているらしく、そのために単純に記事内容を評価するのではなく、他のファクターにも重きを置いている印象を受けます。検索結果では、個人のブログや雑記ブログよりも、企業のページや専門サイト(一つのジャンルに絞ったサイト)を上位表示させるようにしているようです。
企業のページや専門サイトが必ずしも質の高い記事を書いているとは限らないのですが、統計上はそういう傾向はあるかもしれません。
実際に、質の低いサイトは検索結果の上位からは除かれているように思いますが、同時に、有用な個人のブログ記事も検索結果から除かれているように思います。そのため、個人の口コミ情報などを得たい場合にはGoogle検索は向いていないかもしれないと思います。逆に、公式ページなどはしっかりと1位表示されます。
フィルター機能が強いとも言え、フィルターが良い方向に機能すれば良いのですが、そこまでAIは賢くないようです。
ウェブサイトの信頼性を判断できないネット初心者に向いていると言えるかもしれませんが、信頼性を自分で判断したい、又は判断できるという人にはあまり向いていないのかとも思いました。

BingとDuckDuckGoは、Googleと反対です。企業のページを上位表示させようという感じは受けません。検索キーワードに関する公式ページが1位に表示されないことが良く起こります。その代わり、個人のブログが上位表示されやすいようです。質の低い記事も上位表示されることは多いのかもしれませんが、記事の取りこぼしが少ない、つまり検索キーワードに一致した記事であれば検索結果に表示されやすいという傾向があるように思います。キーワード主義が強いとも言え、記事の中に検索キーワードがあることが重要になっているように思います。Googleの場合は逆にキーワード主義が弱く、キーワードの一致よりも他のファクターによって検索結果がかなり左右されるということのように思います。

Googleだけでは検索結果から除外されている有用なサイトが多くあるかもしれない、という点が一番の懸念点です。
しかし、Googleのほうが欲しい情報が得られる場合もあるし、BingかDuckDuckGoのほうが欲しい情報が得られる場合もあるため、一概にどちらが良いとは言えないと思います。
基本的にGoogleで調べ、欲しい情報が得られない時はBingかDuckDuckGoで調べるという使い方が良いかもしれません。沢山情報がある事柄についてはGoogleで検索すれば信頼性の高そうなサイトを選んで表示してくれるので良いと思いますが、情報が少ない事柄についてはあまり強いフィルターで検索結果を絞られても困るため、BingかDuckDuckGoのほうが良い場合があると思います。

BingとDuckDuckGoについてどちらが良いかですが、私はDuckDuckGoを使っています。
Bingのホーム画面には日替わりで美しい風景画像を載せています。ホーム画面に関してはBingが最も好みです。
しかし検索結果には広告が多く、広告とそうでないリンクへの区別が付きにくいです。これは致命的な欠点だと思います。
DuckDuckGoは検索結果画面のカスタマイズが割と細かく行えます。

Chrome、FireFox、Edgeなどのブラウザーでは、URL欄の中で検索エンジンを指定して検索することができます。
設定にて、検索エンジンごとに「キーワード」を設定できます。
例えばChromeでは以下のようにキーワードを設定できます。
Search_engine_chrome

ここのキーワードで設定した文字を、ブラウザーのURL欄に入力し、続けてスペースを入力すると検索エンジンが切り替わります。
また、DuckDuckGoの検索では、独自にBang機能と呼ばれるものがあり、これにより他の検索エンジンでの検索を行えます。
例えば、検索欄に「!g」、スペースと入力した後に検索キーワードを入れて検索するとグーグル検索で検索されます。

2021年8月13日 (金)

[無料ブログの移転] 個別記事ごとにcanonical付与とリダイレクトを行う方法 [JavaScript]

ブログ移転に際して、ページランクを引き継ぐにはまず301リダイレクトが推奨されますが、無料ブログなどではそれが出来ません。
その場合はcanonicalを付与し、新しいページを正規ページとして指定する方法(正規化)があります。
canonicalは移行元のブログ記事のhead内に以下のように記述しますが、head内を直接弄れるブログは多く無いと思います。
<link rel="canonical" href="新しいページのURL">
この記事では、JavaScriptを用いて個別記事ごとにcanonicalを設定する方法を解説します。また、ブログ移転を知らせる文と新URLへのリンクを記事本文へ挿入するコードも記載しています。
ただし私はJavaScriptは素人であるため参考程度にしてください。
JavaScriptを一か所に記述すればブログ内の全ページに適用できることが条件です。例えばサイドバーやブログのサブタイトル(説明)は、どの記事ページを開いても常に表示される要素であるため、それらの中を編集できるようになっていればJavaScriptをそこに入れて動作させられる可能性が高いと思います。

canonicalをJavaScriptによって付与してもGoogleのクローラーはそれを正常に認識できるという情報があります。→JavaScript挿入したrel=canonicalをGoogleは処理できる

また、canonicalによる正規化に加えてJavaScriptによるリダイレクト処理についても触れます。正規化は必須事項ですが、リダイレクト処理を行うべきかどうかは判断が分かれるようです。まず正規化のみで試してみて、うまく引き継げないようであればリダイレクトも併用するという方法もあります。
リダイレクトに関してはmeta refreshを用いたものもありますが、これは非推奨となっているようです。
ちなみに私はココログ(ブログサービス)からの移行を検討しているのですが、ココログではリダイレクト処理が禁止となっているため、canonicalによる正規化のみを行うことになります。

canonicalは個別記事ごとに付与しないと意味がありませんが、それにはひと手間必要です。
旧URLと新URL中のファイル名が別である場合は、旧URLと新URLの対照表を作成する必要がありそうです。
ファイル名が同じ場合で、それより上の階層のみ異なる場合は、対照表は作成しなくてもJavaScriptで正規表現を用いることで実現はできます。
この記事ではどちらにも対応できる、対照表を使用する方法を解説します。

対照表の作成にあたり、記事数が少ない場合は手作業で対照表を作成すれば良いと思います。
対照表は、Excelなどの表計算ソフトに例えば「記事タイトル」「旧URL」「新URL」といった列を作りそこに記述します。
一方で、対照表を自動で作成するには私は「Website Explorer」というウェブサイト解析ツールを使わせて頂きました。
このツールでは、ブログの記事タイトルとそれに対するURLの一覧を取得できます。新・旧ブログでこの一覧を取得し、「記事タイトル」を一致させることによりURL対照表を作ります。なので、記事タイトルが新旧ブログで同じことが条件です。
対照表に記載するURLについては、フルパスを記載しても良いのですが容量の節約のためにドメインより下の部分のみ記載する方法をこの記事では取ることにします。

ブログのURLにはwww有りと無し、httpとhttpsで混在している場合があります。
新ブログのURLにwww有りと無しが混在する場合は、どちらかを正規URLとして決めます。httpとhttpsがある場合は、httpsを正規にすれば良いと思います。canonicalでこの正規URLを指定し、検索エンジンに正規URLとして認識させることになります。

新・旧ブログのトップページのURLをWebsite Explorerに入力して解析します。
以下が、私がサイトを解析した結果です。
Websiteexplorer

「サイト内ページ」の項目を使用します。ここで「HTML形式で保存」というボタンがありますのでそれをクリックして保存します。
CSV形式での保存も出来ますが、私が試したところCSVでは一部がエスケープ文字に変換されていましたのでHTMLでの出力のほうが良いと思います。
Excelがあれば、「Excelに出力」でも良いと思いますが同じく文字が変になっていないか確認してください。
また「サイト内ページ」には、同じページでもURLにパラメータ付きのもの(?から始まる語句がURLの後尾にあるもの)が混ざっていたり、カテゴリやアーカイブページなどが混ざっていたりします。これらは新旧対照表には入れませんので(カテゴリページも新旧対応させるなら別ですが)、後で削除しますが、パラメータ付きのものについては初めから検出対象に入れない設定もできます。
保存したHTMLファイルをブラウザで開き、タイトルとURLを含んだ列を表計算ソフトへコピーします。この時、貼り付け方は次のようにします。私は表計算ソフトとしてLibreOfficeを使用していますのでその例になりますが、Excelなどでも参考にできると思います。
LibreOfficeでは「形式を選択して貼り付け」→「書式設定されていないテキスト」でテキストインポートダイアログが出ますので、以下のように設定してインポートします。
Textimport

次に、余計なページを削除します。これにはフィルター機能を用いるのが良いと思います。
まずはパラメータ付きのURLの行を削除するため、URLの後ろが「.html」で終わるもの以外をソートするなどし、その結果の行を削除します。
カテゴリページやアーカイブページ、その他不要なページもソートして削除します。標準のソート機能では難しい場合は、正規表現を使用することも出来ます。

これを新・旧のブログで行います。そして「記事タイトル」を元にURLのマッピングを行う訳ですが、Website Explorerで出力された一覧は元々タイトルが名前順に並んでいます。そのため、特別な操作を行わなくても新・旧ブログのURL一覧を横に並べると一致する可能性が高いと思います。ただし記事タイトル名の後ろにブログタイトルが挿入されている場合、その部分についてはブログごとに記述が異なりますので修正したほうが良いかもしれません(修正しなくても並びが一致していれば大丈夫ですが)。「検索と置換」で修正できると思います。修正後、記事タイトル列を昇順か降順でソートします。
一致したら、以下のように対照表として統合します。
Urlmapping_20210813123601

URLの短縮化も行います。ドメイン以上の部分を削除します。「検索と置換」を用い、以下のように設定して置換します。ドメイン名の後ろの「/」は削除せず残します。
Shortenurl

これで対照表が完成しました。これをJavaScriptへ読み込ませるのですが、簡単な方法として、この対照表をJavaScriptの連想配列形式にして、JavaScriptのコード内に直接記述する方法を解説します。
連想配列形式は、{"旧URL1":"新URL1", "旧URL2":"新URL2", ...}という記述になります。
この記述方法へ表計算ソフト内で変換できます。
そのためには、新しい列(右隣りの列など)に以下の数式を入れます。
=""""&旧URLセル&""":"""&新URLセル&""","
例えば上記の画像内の行2には、以下の数式が入ります。
=""""&B2&""":"""&C2&""","
この数式では、「"」「:」「,」をそれぞれのURLに挿入しています。
これを、URL一覧の全行にオートフィルで適用させます。
次に、適当な別のセルに以下の数式を入れます。
=CONCAT("{", 上記範囲, "}")
上記範囲には先ほど数式を適用した範囲を指定します。
この数式で、上記範囲にあるURL(調整後)を結合し、更に先頭に「{」、後尾に「}」を加えています。
このCONCAT関数ですが、古い表計算ソフトでは利用できない可能性があります。
LibreOfficeの最近のバージョンでは利用でき、かつ無料なのでこれを利用できます。
このセルの内容をコピーし、JavaScriptのコードに直接貼り付けることになります。

JavaScriptのコードは以下になります。
まずリダイレクト無しのコードを挙げますが、ここで基本的な説明をします。

リダイレクト無し
<script>
document.addEventListener('DOMContentLoaded', function(){
    let dic = {旧URL:新URL, ...};
    let path = location.pathname;
    if (dic.hasOwnProperty(path)){
        let newUrl = '新URLのドメイン以上の部分' + dic[path];
        let head = document.getElementsByTagName('head')[0];
        let link = head.querySelector('link[rel="canonical"]');
        if (link) {
            link.href = newUrl;
        }else{
            link = document.createElement('link');
            link.rel = 'canonical';
            link.href = newUrl;
            head.appendChild(link);
        }
//ここから記事本文へ文を挿入するコード
        let entryBody = document.getElementsByClassName('クラス名')[0];
        entryBody.insertAdjacentHTML('afterbegin', '<p>※ブログ移転しました。この記事の新しいページはこちらです。<a href="'+newUrl+'">'+newUrl+'</a></p>');
    }
});
</script>

青文字の部分を置き換えます。
{旧URL:新URL, ...} には、用意した連想配列を貼り付けます。
新URLのドメイン以上の部分 には、新ブログの正規URLのドメイン以上の部分を入力します。例えばhttps://example.comです。
クラス名 についてですが、ここには旧ブログの記事本文のclass属性の値を指定します。
旧ブログの記事ページを開き、Google Chromeの場合は「右クリック」→「ページのソースを表示」でHTMLのコードが見られます。
以下はココログのHTMLです。
Htmlsource

ここで記事本文は<div class="entry-body">の要素の中にあることが分かりますので、クラス名はentry-bodyとなります。
この場合、文全体は以下になります。
let entryBody = document.getElementsByClassName('entry-body')[0];
ちなみに、はてなブログの場合は<div class="entry-content">の中に記事本文があります。ライブドアブログの場合は<div class="main">でした。
もしこの要素にclassでは無くidが指定されていたら(<div id="entry-body">のように)、
let entryBody = document.getElementById('id名');
としてください。
また、スマホ用の表示とPC用の表示で、記事本文のclass属性の値が異なることがあります。
スマホで記事のHTMLソースを見るには、chromeの場合だとURL欄に「view-source:」に続けてURLを入力して続行します。
パソコンで確認するには、デベロッパーツールを使用します。
chromeの場合は「Ctrl + Shift + I」で開けます。以下の画像の赤矢印が示す部分をクリックするとスマホ表示に切り替わります。
Console_20210915055001
更にページを更新させます。そしてElementsタブでHTMLを確認できます。
クラス名がスマホとPCで異なる場合はlet entryBody = document.getElementsByClassName('クラス名')[0];の部分を以下のように変更すれば良いと思います。

let entryBody = document.getElementsByClassName('クラス名')[0]; 
if (!entryBody) {
    entryBody = document.getElementsByClassName('もう一つのクラス名')[0];
}

私のコードでは、記事本文中の一番初めにブログ移転を知らせる文章を挿入しています。

次に、リダイレクト処理をする場合のコードは以下になります。

すぐにリダイレクト
<script>
{
    let dic = {旧URL:新URL, ...};
    let path = location.pathname;
    if (dic.hasOwnProperty(path)){
        let newUrl = '新URLのドメイン以上の部分' + dic[path];
        let head = document.getElementsByTagName('head')[0];
        let link = head.querySelector('link[rel="canonical"]');
        if (link) {
            link.href = newUrl;
        }else{
            link = document.createElement('link');
            link.rel = 'canonical';
            link.href = newUrl;
            head.appendChild(link);
        }
        location.replace(newUrl); //リダイレクトのコード
    }
}
</script>

記事本文へ文を挿入するコードを削除し、代わりにリダイレクトのコードを入れています。
このコードでは、待ち時間無しでリダイレクトします。
そのほうがウェブサイト訪問者にとって利便性が高いのでは無いかと考えたからですが、もし待ち時間を設定する場合は代わりに以下のコードにします。

待ち時間を設定してリダイレクト
<script>
document.addEventListener('DOMContentLoaded', function(){
    let dic = {旧URL:新URL, ...};
    let path = location.pathname;
    if (dic.hasOwnProperty(path)){
        let newUrl = '新URLのドメイン以上の部分' + dic[path];
        let head = document.getElementsByTagName('head')[0];
        let link = head.querySelector('link[rel="canonical"]');
        if (link) {
            link.href = newUrl;
        }else{
            link = document.createElement('link');
            link.rel = 'canonical';
            link.href = newUrl;
            head.appendChild(link);
        }
//ここからリダイレクトのコード
        setTimeout("redirect()", 5000); //リダイレクトまで5秒待つ
        function redirect(){
            location.href = newUrl;
        }
//ここから記事本文へリダイレクトを知らせる文を挿入するコード
        let entryBody = document.getElementsByClassName('クラス名')[0];
        entryBody.insertAdjacentHTML('afterbegin', '<p><strong>ブログ移転しました。新しいページへ約5秒後に転送します→</strong><a href="'+newUrl+'">'+newUrl+'</a></p>');
    }
});
</script>

コードは以上となります。
これを旧ブログの、どのページを開いても常に表示される領域に貼り付けます。
そしてcanonicalを付与するように意図したページにてブラウザのデベロッパーツールを開き、正常に以下のタグがhead内に入っていることを確認します。
<link rel="canonical" href="新しいページのURL">

また、Google Search Consoleでは旧ブログ・新ブログ両方登録し、新URLのほうが正規ページと認定されるかどうか随時確認します。
「URL検査」のページにて、「ユーザーが指定した正規URL」に新しいURLが記載されれば成功です。

2021年8月 2日 (月)

Bloggerへデータを移行する方法 (Googleのツールを使用)

この記事では、ブログのエクスポートデータ(mt形式)をBlogger仕様のxml形式のデータへ変換する方法について解説します。
他ブログからBloggerへデータを移行する際に問題になるのが、Bloggerでは独自のxml形式のデータでしかインポートできない点です。
多くのブログではmt(Movable Type)形式でのデータのエクスポートとなるため、これをBlogger仕様のxml形式に変換する必要があります。
少し前まではsyasudaのツールにて簡単に変換できたのですが、現在このサイトが利用不可能になっているため、代替の方法を紹介します。
なおこの方法は、ココログからBloggerへの移行を参考にさせて頂きました。

まずその前に、日付を日本仕様のものからBlogger仕様のものに調整する必要があります。
そのためには、Blogger ブログ移行用、MovableType 形式のエクスポートデータの日付を変換するツールを利用できます。エクスポートデータをテキストエディタ(メモ帳など)で開き、中身をフォームに貼り付けて変換します。
変換後のテキストデータを新しいテキストファイルに貼り付けて保存しますが、この際、文字コードをUTF-8にします。

次にmt形式のファイルをBlogger仕様のxml形式に変換しますが、Googleが提供しているツールを使用します。
「google-blog-converters-appengine」のダウンロードページから、私は最新バージョンである「google-blog-converters-r89.tar.gz」をダウンロードしました。
このファイルを解凍しますが、解凍できない時はtar,gz形式に対応した解凍ソフトをインストールします。7-Zipなどで良いと思います。

次に、このツールを利用するにはPython2というプログラミング言語の実行環境をインストールする必要があります。
Python Releases for Windowsから、「Latest Python 2 Release - Python 2.7.18」というような表記があるのでそれをクリックし、その中から、64bit版Windowsを利用している場合は「Windows x86-64 MSI installer」、32bit版であれば「Windows x86 MSI installer」をダウンロードします。

インストール時に、インストールデータの選択で「Add python.exe to Path」→「Will be installed on local hard drive」を選択し、有効にします。
Python2custom

インストールが完了したら、パソコンを再起動します。
インストールフォルダの中にある「bin」フォルダへ、ブログのエクスポートデータ(日時調整後)をコピーします。
binフォルダのパスを取得するため、binフォルダをShiftを押しながら右クリックし、プロパティから「パスのコピー」をクリックします。
コマンドプロンプトまたはPowerShellを管理者権限で開きます。そして、
cd binフォルダのパス
と入力します。cdの後は半角スペースを空け、クリップボードの内容を貼り付けます。そしてEnterを押します。
次に
.\movabletype2blogger.bat 変換元ファイル名>変換後ファイル名
と入力します。変換元ファイル名はブログのエクスポートデータ(日時調整後)のファイル名となります。変換後のファイル名は任意で、拡張子はxmlとします。
Enterを押します。これで問題が無ければ変換されます。binフォルダの中に変換後のファイルがあるか確認します。

私の環境だけかは分かりませんが、変換後のxmlファイルをブラウザで開いて確認すると所々余計な<br/>タグが挿入されていました。
なので、このままBloggerにインポートすると記事の中で所々行間が開きすぎている部分がありました。
ただ私の場合(私はココログのデータで試したのですが)、ブログの元々のエクスポートデータで使われている改行タグは<br />であったので(間に空白が入る記述方法)、<br/>タグを検索して削除すれば良かったです。そのためにはメモ帳などのテキストエディタの「検索と置換」機能で&lt;br/&gt;を空白に置き換えます。xml形式では<>のような文字はエスケープ処理されますので、このようになります。
一方で、元々のエクスポートファイルにも<br/>が使われている場合は区別が出来ないため、一旦変換前に<br/>を<br />や<br>に置き換えておくのが良いかもしれません。

Bloggerはとても良い無料ブログサービスだと思うのですが、このように記事の移行が難しかったりと利用のハードルが高いのがネックです。少しでもこのハードルが軽減されれば良いと思います。

2021年7月26日 (月)

ブログで半角文字列が途切れる (突き抜ける) 問題

私はブログとしてココログを使っていますが、文字列が記事欄の右端で折り返さずに途切れてしまっている現象に遭遇しました。
これは途中で区切りの無い半角文字列、例えばURLなどに起こる場合があるようです。
これに対処するには、cssに以下の記述を入れます。
body{word-wrap: break-word;}
ココログの場合は設定→デザイン→カスタムcssを編集 からcssの追加を行うことができます。

ウェブサイトによっては文字列が記事幅から突き抜けるだけで表示自体はされているというものも多いようですが、ココログの場合は文字が消えてしまうために厄介です。

«[SEO] ブログのアーカイブやカテゴリページにnoindexを付与する (JavaScriptでの方法)