しげぽんさん(@shigepon.net)が「カスタムフィード作成ツール」を公開されていました。SkyFeedのように条件を指定すると、後は自動で収集してくれるタイプの日本語圏向けのカスタムフィードジェネレーターです。
しげぽんさんの記事
https://shigepon.net/id/userfeed
「カスタムフィード作成ツール」
https://customfeed.shigepon.net/
この記事では、SkyFeedユーザーでよくある作例を「カスタムフィード作成ツール」で実現する手段について解説します。勝手に解説しているため、間違っている箇所があるかもしれません。ろくに検証をしていませんが、概ね間違っていないと信じています。
前提
カスタムフィード作成ツールは「形態素解析」に非常に強いツールです。辞書を鍛えてワード検索を使った方が幸せになりますが、今回はSkyFeedからの移植にフォーカスします。
基本的な考え方
- 投稿されたら大体の場合は即時反映されます
- 過去の遡上は出来ませんが、逆に7日の制限はありません(検索条件を変更しても、過去の投稿はそのままです)
- 動作の挙動はBluesky Feed Creatorとほぼ同じです
- 投稿言語は日本語のみのはずです
構文
今の所、形態素解析を使わない場合の条件指定は呪文を唱える必要があるので、呪文を作る方法を説明します。
超シンプルパターン
検索キーワードの設定
凝ったものを使っている人が多いと思うので、SkyFeedのRegex Postをそのままコピペしましょう。
REGEX(/(検索ワード1|検索ワード2)/)
除外ワードの指定
凝ったものを使っている人が多いと思うので、SkyFeedのRegex Postをそのままコピペしましょう。除外なので、REGEXの頭に!をつけます
REGEX(/(検索ワード1|検索ワード2)/) && !REGEX(/(除外ワード1|除外ワード2)/)
返信は除外する
&& !IS_REPLYをつけます
REGEX(/(検索ワード1|検索ワード2)/) && !REGEX(/(除外ワード1|除外ワード2)/) && !IS_REPLY
エログロを弾く
&& !HAS_LABELをつけます。公式の後付けラベルやカスタムラベラーには対応しません。(Remove Has Labelは無理です)
REGEX(/(検索ワード1|検索ワード2)/) && !REGEX(/(除外ワード1|除外ワード2)/) && !IS_REPLY && !HAS_LABEL
とりあえず呪文は完成したので、後はツールに反映させます。
呪文をツールに反映する
ツールにアクセスして、ログインします。その後、「テキストで編集」をクリックします
https://customfeed.shigepon.net/
完成した呪文を貼り付けます
あとはしげぽんさんの手順に従って、「フィードの公開」を行いましょう。重ねてとなりますが、公開した後の投稿から収集が始まりますので投稿が流れてくるのを待ちましょう。
その他の使い方
大体の使い方は上でカバーできると思いますが、ブロックごとの移植で気になるところをカバーします。(ここから先は私は未検証の物も含まれます)
Regexブロック
Image Alt Text
IMAGE(検索ワード)を使います。
REGEX(/検索ワード1|検索ワード2/) || IMAGE(検索ワード3)
Link
LINK(検索ワード)を使います。アフィリエイトを避けるときとかですね。
REGEX(/検索ワード1|検索ワード2/) && !LINK(A8.net) && !LINK(afb)
Inputブロック
Entire Network
基本的にこのツールでは「これから未来の投稿」を収集するため、設定は不要です。
Tag
TAG(タグ)を使います。SkyFeedと同様に#は不要ですので、「#自作絵」ハッシュタグを拾う場合は下記のように指定します。
TAG(自作絵)
Single User
FROM(DID)を使います。DIDなにそれ?の人は、下記のURLの最後のところをご自身のハンドルに指定してください。
https://api.bsky.app/xrpc/app.bsky.actor.getProfile?actor=usounds.work
すると、下記のようにdid:plcから始まるものがあるのでそれをコピペします
{"did":"did:plc:rgdcflm4ylsl6udghmtblydc","handle":"usounds.work","displayName":"ゆー".....}
Single Userはご自身の作品をまとめる用途で使われる方が多いでしょうから、「#自作絵」ハッシュタグが含まれる私の投稿のみを拾う場合は
TAG(自作絵) && FROM(did:plc:rgdcflm4ylsl6udghmtblydc)
となります
List,Feed,Single Post,Labels
このツールでの機能はありません
Removeブロック
Item
Is Post, Is Reply
IS_REPLYを使います。除外したいケースは基本パターンにて説明済みですので、「リプライだけ」を表示したい場合がこれに該当します。
REGEX(/検索ワード1|検索ワード2/) && IS_REPLY
Hellthread, is Repost
このツールでの機能はありません
Embed
SkyFeedよりも選択肢が多く、多くの方が希望されているであろう動画、リスト、スターターパック、誰かへのメンション、が追加判定できます。動画だけを拾う場合は
REGEX(/検索ワード1|検索ワード2/) && HAS_VIDEO
です。
List of Users
リストでの除外設定はできませんが、人数が少ない場合は!FROM(DID)で代用できます。DIDについてはSingle Userのところを参照してください
REGEX(/検索ワード1|検索ワード2/) && !FROM(除外したいユーザーのDID)
Language
日本語のみですので設定するところはありません
Countシリーズ
このツールでの機能はありません
Stash/Popブロック
このツールではOR条件が容易に実現できます。そのため、このブロックがなくても困ることはないはずです。
Replaceブロック
このツールでの機能はありません
Softブロック
新しい順のみですので設定するところはありません
Limitブロック
このツールでの機能はありません
Remenber Postブロック
このツールでは未来の投稿を検索するため、日数の制限はなく、このブロックの提供はありませんが困ることはないはずです。
検索条件の変更
既存のフィードの条件を変更する場合、「フィードの読み込み」を使用します。この時はフィードのURLを指定する必要がありますが、これはフィードの共有メニューからコピったURLを使う必要があります。
このような形式を受け付け、
https://bsky.app/profile/did:plc:rgdcflm4ylsl6udghmtblydc/feed/test2
この形式では行けつけません
https://bsky.app/profile/usounds.work/feed/test2
実はこのフィードの読み込み機能、SkyFeedで作成したフィードの検索条件も読み込んでこのツールに検索条件を変換する機能もついています。SkyFeedとこのツールも両方多機能ですので、変換がうまくいったかどうかの結果は目視で確認するようにしましょう。
ワード検索について
最後にワード検索について補足します。SkyFeedでは多くの場合、正規表現を使っていますが、私の経験上
- OR検索する手段がそれしかない
- 日本語だと幅広で拾ってしまうので凝った正規表現にするしかない
のような場合に使っていると思います。
メリット
特に後者は、私の界隈では「ノリス」というF1で今年ドライバーランキング2位担った若きドライバーがいるのですが、SkyFeedでこの単語を拾うと「ノリスケ」を拾います。これを防ぐために、ノリスの前後はカタカナがこないという表示を使う人が多いと思います。
ワード検索では文字の境界を見てくれるので、ワード検索(具体的にはWORD(ノリス))を使うとこのような、ノリスというF1ドライバーの話題を見ようと思ったら日本のアニメの中年サラリーマンの話題を見る羽目になるという悲しい事故が発生しにくくなっています。
デメリット
辞書の精度(登録量/精度)に依存することです。最近の人名や造語(カップリング系)、アニメの登場人物の名前や地域名は当然辞書に載っていることはありませんので、これを正しく判定するのが非常に困難です。Blueskyの検索がイマイチ、というのも一部はこのような事情もあります。
このツールでは、我々利用者が「これは単語だよ」と辞書に教え込ませることができる、個人的には1番の目玉機能だと思っている機能がついています。もちろん、辞書登録をしなくてもTEXT(ノリス)やREGEX(/ノリス/)を使えば確実に拾うことができますので、どのような選択肢でも取ることができるのがこのツールのいいところですね。
辞書を鍛えるのは楽しい
私がこの2日でFF14、ぼざろ、モタスポ界隈で判定に苦しんでいる単語を根こそぎ登録したので、精度が上がっているはずです。ぜひあなたも辞書を鍛えてみてください。登録のUIや、「あーこんな感じで分解されるんだー」をみながら楽しみながら登録できますので非常におすすめです。 正規表現のみを使う場合は単語登録は不要ですが、鍛えれば正規表現は不要になってくるのでぜひトライしてみてください。
以上になります。新しいフィード作成ツールが生まれたことに感謝しつつ、ぜひ使ってみてください。