プログラミング

SQLでWordPressの記事を正規表現検索してマークダウンでコピー

SQLプログラミング言語でWordPressブログ・サイトの記事を正規表現検索してマークダウン形式(MarkDown)でコピーします。簡単にWordPressブログの記事リンクを一気に取得する方法として便利です。

(2021年に一部更新しています。これは少しロジックが無駄に複雑過ぎますね。やってることは微妙に高度なのですが成果物がしょぼい気がする…私はブラウザのサイト上でctrl-mのショートカットキーでマークダウン形式でURL・タイトルがクリップボードにコピーされるtampermonkeyのJavaScriptユーザースクリプトを随分前に書いて、内部リンクの編集が必要なときはマニュアルでやっています。simple is the bestという言葉がありますが、本当にそのとおりです。)

https://yuis.xsrv.jp/data/GIF_urIHcAtjj3QgdqTgOP8kg8cBRms8GmPn.gif

前書き

WordPressでブログ書いてていつも思うことがありまして、

“内部リンク全くしてないなー……”と。

内部リンクはSEO的にも結構重要な要素でして、例えば、”こちらの記事でこれについては詳しく説明しています:[URL]”みたいな文章を書いたとして、このURLがクリックされまくると、このURLのSEOは上がるんですね。
でも、こういうことをするのって、結構労力がかかるものです。
普通にやろうとしたら、WordPressのサイトに行って、検索窓から関連してそうな記事を探すべく文字列を入力して検索して、出てきた記事を開いて、その記事が関連している記事だった/紹介したい記事だった場合にはそのURLをコピーして、タイトルもコピーして、Markdown形式にして、テキストエディタにペーストしてやっと完成するわけです。軽く3分以上かかりますよね。

なので僕は今まで、こういう内部リンク的な作業は全く無視していたんですが、最近メインブログ及びこのプログラミングブログの方も結構見てくださる方が多くなってきたので、もう少し記事の質を上げたいな(んでもってSEOも上げたいな)と思った次第です。

では、実装していきます。

準備

mysql workbenchを使用します。

Windows10でMysqlクライアント「Workbench」を使う
WorkbenchでxserverのMysqlに接続する方法

(↑こちらは初めてこの理論で作成したMarkDownになります。我ながら便利すぎる………。思いついてからリンクを貼るまでに20秒とかかりません!)

初歩的なことですが、SQLを使用してデータベースを操作しますので、WordPressをホスティングしているサーバーにworkbenchから接続してやる必要があります。

WordPressの記事を正規表現検索してタイトルとURLをコピペする

まず、workbenchの仕様として、…まぁ説明しだすとキリがないのですが、今回使用する仕様としては、selectで出力したテーブルのレコードをCSV形式でクリップボードにコピーすることができるってことです。

e.g.

'Windows10でMysqlクライアント「Workbench」を使う', 'https://yuis-programming.com/?p=566'
'WorkbenchでxserverのMysqlに接続する方法', 'https://yuis-programming.com/?p=564'

これを出力するために、以下のSQLをworkbenchに貼り付けて実行します。(ctrl+Enter)

SQLはとても簡単です。

USE yuis_programming2 ; # データベース名

select post_title, guid from wp_posts
    where (post_type='post' OR post_type='page')
        AND (post_status='publish' OR post_status='future')
        AND (post_author='1')
        AND post_title REGEXP "ruby"
        AND post_content REGEXP "."
    order by post_date desc
            ;        

上の例では、記事タイトルに対して”ruby”で正規表現検索していますので、記事タイトルに”ruby”を含む記事が出力されます。
同じく、post_contentが本文ですので、本文に対して正規表現検索をしてやることももちろん可能です。

で出力結果はこんな感じになるかと思います。

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_fe85f646-c555-49f7-83fc-e1c98d95f4dd.png

で、markdownがほしい記事を選択して、ここから、copy rowをして、コピーします。

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_50d99407-1cab-4d7b-8773-f3bc765e221e.png

これで、先程のCSVがコピーされました。

CSVをMarkDown形式にする

では、続いてコピーしたCSVをMarkDownにしたいと思います。

WSL bashを使用します。

以下を.bashrcに入れるかターミナルにペーストしてください。

(| clip.exeってところが、windowsにコピーするっていう意味になります。ここらへんはubuntuやらmacやらでそれぞれコピーコマンドがありますので、それに変えてくださいね。)


sqlToMarkdown(){
  cat > /tmp/sqlToMarkdown.txt
  sed -Ei "s/'(.*)',\s?'(.*)'/\[\1\]\(\2\)/g" /tmp/sqlToMarkdown.txt
  sed -Ei 's/\\"/"/g' /tmp/sqlToMarkdown.txt
  cat /tmp/sqlToMarkdown.txt | clip.exe
}

alias sqlmd='sqlToMarkdown'

これで、sqlmdを実行した後、ctrl+Vでペーストします。

$ sqlmd
'Windows10でMysqlクライアント「Workbench」を使う', 'https://yuis-programming.com/?p=566'
'WorkbenchでxserverのMysqlに接続する方法', 'https://yuis-programming.com/?p=564'

$

すると…

[Windows10でMysqlクライアント「Workbench」を使う](https://yuis-programming.com/?p=566)
[WorkbenchでxserverのMysqlに接続する方法](https://yuis-programming.com/?p=564)

なんと!MarkDownが出来上がってしまいましたね!

まとめ

これで内部リンク対策が捗るよ!やったね!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です