Neo Inspiration

Avatar

中の人:jakkrokk (HN統一しました) がphp,javascript,air,flex などなど好き勝手書いてます。仕事は主にWEBシステムの設計と開発、SEO全般など。

SEO難易度調査ツールを作ってみました

もっと時間がかかるけど精度が高いのはたぶんいらないと思うので、
精度と時間のバランスをとったヤツを作ってみました。

SEO難易度調査ツール

ビジネスセンスのある人はきっとここで、
調査結果にSEO会社の広告でものせるんだろうけどw
このたぐいのものがどの程度ニーズあるのか的な調査もあるので
とりあえず使ってもらう形にしました。

精度は高いと思います。
100%じゃないですが、100%出せるツールは少なくともフリーじゃ出回ってないですしね。

精度が高いのはきっとうちの商材を売るために
業務用として公開(うちの会社で)すると思いますw

phpでcannot use string offset as an arrayエラー

Yahooの商品検索Apiの php serialized を使っていたら 「cannot use string offset as an array」
とかいう見たこともないエラーが出たので対応メモ。

エラーが出るコードはこんなかんじ

//めんどくさいので取得の部分はぶきますが
//Yahoo APIで phpのserializedデータを取得
$unserializedData = unserialize(file_get_contents('http://shopping.yahooapis.jp/ShoppingWebService/V1/php/itemSearch?'));

foreach ($unserializedData['ResultSet'][0]['Result'] as $k=>$v) {
    print($v['Image']['Medium']); //これがPHP5だとエラーになる4だとOK
}

肝心のYahooの商品検索Apiのリターンはこんなかんじ(適当にはしょってます)

[ResultSet] => Array
        (
            [totalResultsAvailable] => Integer
            [totalResultsReturned] => Integer
            [firstResultPosition] => Integer
            [0] => Array
                (
                    [Result] => Array
                        (
                            [Request] => Array
                                (
                                    [Query] => String
                                )

                            [Modules] =>  String
                            [0] => Array
                                (
                                    [Name] => String
                                    [Description] => String
                                    [Headline] => String
                                    [Url] => String
                                    [Availability] => String
                                    [Code] => String
                                    [PersonId] => String
                                    [ProductId] => String
                                    [Image] => Array
                                        (
                                            [Id] => String
                                            [Small] => String
                                            [Medium] => String
                                        )
                                )
原因

エラー内容はStringなのにオフセットに配列つかうんじゃねえ
つまり文字列を対象に3次元配列としてアクセスしちゃうとPHP4ではなんもしないもに
PHP5ではエラーになっちゃうってことですね。
ようは ResultSet->0->Result でループをぶん回すと (Array)Request とか (String)Modules
とかがまざっちゃうわけですねハイ。
おそらくこのゴミも全部foreachかけてるのが原因ぽい。

一応ぐぐったらこんなのも出てきた。
https://www.zend.com/forums/index.php?t=msg&th=1556&S=c38b4b1a45a1dfba92db79dd967cc302

つまるとここういうこと
$array['hoge'] = "nemu";

print($array['hoge'][1]);
//e が表示される

print($array['hoge'][1][1]);
//PHP4だと何も表示されない
//PHP5だとcannot use string offset as an array
対応策

issetなりis_arrayなりで$v['Image']がある配列だけ作業するようにするのが
一番無難かな。

$unserializedData = unserialize(file_get_contents('http://shopping.yahooapis.jp/ShoppingWebService/V1/php/itemSearch?'));

foreach ($unserializedData['ResultSet'][0]['Result'] as $k=>$v) {
    if (is_array($v['Image'])) {
        print($v['Image']['Medium']);
    }
}
結局

配列とハッシュをごちゃごちゃにまとめるんじゃねえってかんじかな。。
せめて

[Result] => Array
    (
        [Request] => Array
            (
                [Query] => String
            )

        [Modules] =>  String
        [resultData] => Array (
                                [0] => array
                                [1] => array
                              )

こうしてほしいな。
絶対みんなここをforeachすんだから無駄な情報は移動しておいてほしいわ。。。

YahooのLink:

ツールを作っていて、YahooのLink:を全部出すことになったんですが、
これが意外とやっかいで。

普通にやると1000でストップ。
もちろんページングを1000以上にしても1000のデータしかでないわけで、
じゃあAPIはどうだーっていってもAPIも同じ。

で、色々と最近知り合いになれたSEOの本物のプロの方に聞いたら
本来手作業でやってるやりかたを教えてくれて、
(自分でも近いやり方は思いついたんだけど、ちょっとずれてたなぁ)
なんとか上手くとれました。
やっぱプロのSEO研究者は違う。

一応その方に見せたらほぼ誤差がないっておっしゃっていただけたので、
満足満足。

—-

まあ、その普段見ることのできないバックリンクとかみてると
ほんと ダークな世界だな~とにやにやしちゃいますねw
どんなにホワイトだ、ダークだいっても結局こうなんだなーと思いました。

バックリンクを1000件以上調査するなんて、
それこそプロユースというかプロオンリーのツールなので、
公開はしませんが、
まあほしいなら10万くらいで売りますかw イラナイナ。

GoogleはそもそもLink:で10万も20万も出ないから必要ないんだけど
Yahooは普通に64万とか出てくるから
全調査するのならツールは必須だと思うんですが、
これあんまりできてる人がいないラシイ?と聞いたのが意外でした。

Continue Next page

Twitter