技術ブログ
こんにちは、にょろりんこの備忘録的技術ブログです。 前回の記事では、動画サイト運営において 無機質なURL(例: /video.php?id=1234)ではSEO評価が上がらない 日本語タイトルをURLスラッグ化して、よりSEOフレンドリーにする という課題感と、その解決方…
こんにちは、にょろりんこの備忘録的技術ブログです。 今回は、Pythonで作る形態素解析API構築シリーズの第2回 をお届けします。 前回の記事では、SudachiPyをFlaskと組み合わせ、POSTでテキストを送信すると名詞や動詞、形容詞などの基本トークンを返す最小…
こんにちは、にょろりんこの備忘録的技術ブログです。 今回のテーマは形態素解析です。 日本語テキストを扱うなら必ず通るこの処理は、検索クエリのタグ生成といった、自然言語処理全般で欠かせないステップです。 日傘をさすティアラ 私が運営しているAV検…
こんにちは、にょろりんこの備忘録的技術ブログです。 みなさん、構造化データ(JSON-LD)って使っていますか? 検索エンジン、特にGoogleに「このページは何を扱っているか」を正しく伝えるための仕組みで、リッチリザルトにも表示される重要な要素です。 J…
こんにちは、超ニッチ&尖りまくりの、にょろりんこの備忘録的技術ブログです。 前回の記事では、動画の人気ランキングにとって非常に重要な クリック数(selected)のカウント において、Botアクセスを除外する方法を紹介しました。 JavaScript上で生成した…
こんにちは、にょろりんこの備忘録的技術ブログです。 SaePornsでは、動画の人気度や関連ワードの精度を上げるために、CTR(クリック率)を計測しています。 これは「特定の検索語で表示された動画のうち、実際にどれがクリックされたか」を記録するもので、…
こんにちは、にょろりんこの備忘録的技術ブログです。 今回は、個人で開発・運用している検索エンジン「SaePorns」の内部構成を見直した話です。 検索機能のコードが次第に肥大化してきたため、思い切って検索処理を外部APIとして分離し、処理の責任を整理し…
こんにちは、にょろりんこの備忘録的技術ブログです。 今回は、私が自作している Node.js 製のクローラーの中で使っている flag-update.js という小さなファイルについて紹介します。 ティアラ_手をマルにする このファイルの役割はとてもシンプルで、対象の…
こんにちは、にょろりんこの備忘録的技術ブログです。 今日は、運営中の匿名検索エンジン「Sae-Porns」が「なんか変…」という現象に悩まされていました。 ページがやたらと重い。サムネイルがいつまで経っても表示されない。最悪、白画面のまま固まることも……
こんにちは、にょろりんこの備忘録的技術ブログです。 今日は、クローリングやリンク収集処理の地味だけど超重要なパーツ、「URLの正規化」についてのお話です。 私が運用しているURLスクレイピング系のURL収集スクリプトでは、同じページを重複して処理しな…
こんにちは、にょろりんこの備忘録的技術ブログです。 今日は、Node.js製のWebクローラーでシードURLからリンクをたどる際に役立つ、同一ドメイン限定のフィルタ関数について紹介します。 クローラーの処理は、最初の1件――いわゆるシードURLから始まります。…
こんにちは、にょろりんこの備忘録的技術ブログです。 今回は、検索エンジンのインデクシングでよく使われる「回転型プロキシ」について、実際に契約してみたところ、全く回転しなかったという話と、そこから自前でIPローテーションの制御コードを作った過程…
こんにちは、にょろりんこの備忘録的技術ブログです。 今回は、外国語のAVタイトルから自然な日本語のキャッチコピーを生成する専用モジュール generate_mytho_only.py について紹介します。画像キャプションやタグ生成の処理でもMythoMaxを使っていますが、…
こんにちは、にょろりんこの備忘録的技術ブログです。 今回はNode.jsを使い、アクセス不能になったURLをDBから削除する(DBクレンジング)という話です。 SaePornsのような動画検索サービスでは、日々大量のURLが自動で収集・登録されていきます。けれど、そ…
こんにちは、にょろりんこの備忘録的技術ブログです。 今回は、動画ページから最適なサムネイル画像URLを抽出するためのモジュール、fetch-image.js をご紹介します。 これは、私が開発・運用しているポルノ動画検索エンジン「Sae-Porns」の中でも、ユーザー…
こんにちは、にょろりんこの備忘録ブログです。 今日は Sae-Porns の中でも地味だけど重要な処理──動画ページのタイトルをなるべく正確に取得する仕組みについて解説します。 今回取り上げるのは、以下のモジュールです: async function fetchTitle(page) {…
こんにちは、にょろりんこ的、備忘録技術ブログです。 以前に「インデックスする必要のないページは最初から開かない」という話をしましたが、今回は逆に「開いたページでも、いらないものは一切読み込まない」という話です。 関連記事 pop-ancient.hatenabl…
こんにちは、にょろりんこの備忘録的ブログです。 今回は、Node.jsのCLI引数を活用し、開発・本番を分岐するテストモードを実装。本番DBを汚すことなく動作確認をするというお話をしていきます。 みなさん、こんな経験ありませんか? スクリプトを試したいけ…
こんにちは、にょろりんこの技術備忘録ブログです。 今回は、前回の「MythoMaxでキャッチコピー生成」編で得られた日本語タイトルを、さらに検索性の高い語句に分解していく第3ステップ──「形態素解析」編です。 今日の私は言語学者です。 AIが画像から文章…
こんにちは、にょろりんこの技術備忘録ブログです。 今回は、前回の『BLIPで画像から自然文のキャプションを生成する』編の続きとなる第2ステップ──英語キャプションを、日本語の自然な一文に変換する「MythoMax日本語変換編」です。 AIが画像から文章をつく…
こんにちは、にょろりんこの技術備忘録ブログです。 今回は『イメージ画像から画像検索用のタグを自動生成する』というお話のうち、最初のステップである、『BLIPで画像から自然文のキャプションを生成する』編です。 このシリーズのお話は、Sae-Porns の裏…
こんにちは、にょろりんこの備忘録的な開発ブログです。 今日は「プロキシの使用量明細をもとに、アクセス不要なドメインを見極めてブロックする」という、地味ながらも効果絶大な最適化のお話です。 Puppeteerを使ってクローリングをしていると、ページにア…
個人開発者による、プロキシ会社選定の備忘録(あくまで個人的な感想です) こんにちは、にょろりんこです。 今回は、個人開発の立場から、これまで試したプロキシサービスについての所感をざっくりまとめておきます。 あくまで備忘録的な投稿ですが、同じよ…
2025年5月頃、ChatGPTの画像生成AI(DALL·E)が密かに更新されました。 それにより、Sae-Pornsのマスコットキャラ「ティアラ」のあの独特な画風が、再現できなくなってしまったのです。 でもこれは、終わりではなく、進化の始まり。Stable Diffusion系のさま…
※全体のクローリング処理では Puppeteer を使用していますが、この記事で紹介するフィルタリング処理は Node.js 単体で完結しています。 こんにちは、にょろりんこです。 今回は、クローリング処理を高速化&軽量化するために導入している、「事前URLフィル…
こんにちは、あなたを追跡しないポルノ動画検索エンジン、Sae-Porns管理人のにょろりんこです。 検索エンジンを作成する際、あなたのクローラーは noindex をちゃんと避けてますか? クローリング/インデクシングする時に、気をつけなければいけないこと。…
こんにちは、にょろりんこです。 今回は、「なぜ “Sae-Porns” という名前にしたのか?」というお話です。 ちょっとギョッとする名前かもしれませんが、これにはちゃんと理由があります。というか、最初はこういう名前ではなかったんです。 最初は「FairyWork…
こんにちは、にょろりんこです。 このブログは、私がひとりで開発している匿名検索サービス「Sae-Porns(えすえーいーぽーんず)」の進捗や裏話、試行錯誤の記録などを綴っていく場です。 初回は、「なんでそんなものを作ろうと思ったの?」という話から始め…