ユーザー自身がSikiに高度な機能を追加できるプラグインシステムの(現時点での)解説。
公式サイトにも「プラグイン」の項目があるがまだ鋭意制作中とのこと。
プラグインでできること
プラグインは最終的にユーザーが好きな掲示板に自分で対応させられ、新しい拡張機能も追加できる形を目指している。
現時点では以下のものが利用可能。公式の配布元はこちら。
公式既製プラグイン
以下のものは公式からダウンロードしてインストールするだけですぐ使える。
- kakolog
- かころぐβに対応。URLバーにかころぐβワード検索結果のアドレスを入れるとスレッドに現行/年数/カテゴリ別のリンクレスが表示され、選択すると板に範囲指定されたスレ一覧を開く。
ユーザーコマンドにワード入力用のコマンドがある。
なお、設定のプラグイン一覧には出現しない仕様。 - Twittercommunity
- Twitter開発フォーラム対応。トップアドレスを入力すると板が開く。
- voicevox_test
- 試験中。自動スクロールの「読み上げ」に「Voicevox」を使用する。Voicevoxは別途インストールして走らせておく必要がある。
声を変えたい時はindex.jsのdefaultSpeakerを http://127.0.0.1:50021/speakers の希望のid値に変える。 - 5ch_subject_sort
- 5ch/bbspink専用。5chのスレ順がSikiだとWebブラウザと違ってしまう仕様があるが、これを他と同じになるように変更する。0.37.8以降はサイト編集から変更可能になったため、やむを得ない理由で古いバージョンのSikiを使う必要がある場合以外は非推奨。
- dat_mirror_test
- あらゆる掲示板のスレッドを2ch系のdat形式に変換する。完全なdat形式に変換できるものではないことに留意。
- random_name
- 名前欄に「!random」と入れると、random_name.js内のNAME_LISTで指定した文字列からランダムで選んだものが名前として使用される。ローカル板では機能しない。
書き込み内容変更プラグインのサンプル的なもの。 - slipname
- 名前欄に「!ver!」と入れて書き込むと、一度目は書き込みには何もせずにBBS_SLIPの文字列を取得し、二度目以降は!ver!を取得したBBS_SLIPに置換して投稿する。一部掲示板の荒らし対策に使われるようである。
※他にもテスト段階のものが置かれている場合がある。
ユーザー作成プラグイン用のスケルトン
以下の公式配布されているものはプラグインのスケルトンであり、導入しただけでは特になにもしない。ユーザーが自由に中身を作成して勝手に追加して使うものという位置付け。作例はこちら。
- request-hook
- 通信処理に介入する。従来proxyを経由して実現していたようなことが可能。
- startup
- Sikiの起動時に一度だけ実行される。比較的自由度の高いコードを実行できてしまうため、常識の範囲内で作ってくださいとのこと。
スケルトンとはいえ、古いものは最新版のSikiでは動作しない場合があるので可能な限り最新のものを使うようにしよう。
内蔵プラグイン
プラグインファイルという形にはなっていないが、『設定 > BBSMenu > 内蔵プラグイン』でSikiが標準で対応している掲示板の表示を個別にオン/オフできる。掲示板対応は内部的には既にプラグイン方式となっており、これをユーザーも作成/変更できるようにするのが(外部)プラグイン構想ということなのであろう。
https://egg.5ch.io/test/read.cgi/software/1766477806/131
131: RomTenma sage 2025/12/27(土) 17:06:53.49 ID:oc1YAzr20
内蔵プラグインはデフォルトで対応しているというだけなのでユーザーがプラグインを追加してデフォルトを上書きして動作させることも出来るようにはなっています
ですがまだ利用者がコードを書いて掲示板に対応させるための準備が整っていないです
ツールやスクリプトのデバッグ環境、マニュアル作成等必要な工程が大量にあるのでなかなかそこまでたどり着けないです
以降では内蔵以外のプラグインを前提に解説している。
プラグインの使い方
各プラグインは『…\profile\plugins\』に解凍したフォルダを配置する。配置後はSikiを完全終了させてから再起動すること。profileフォルダの場所が分からない時は『ハンバーガーメニュー > ツール > 場所を開く > 設定の場所を開く』から開くと良い。

「voicevox_test」の例:
plugins/ # プラグインのフォルダを置く場所
voicevox_test/ # voicevox_testプラグインを置く場所
index.js # プラグインの本体
package.json # 定義ファイル
package-lock.json # 定義ファイル
node_modules/ # サブフォルダ
配布ファイルを解凍し、プラグイン名のついたフォルダを取り出してpluginsフォルダの直下にコピーしてSikiを(再)起動。
プラグインや解凍方法などによってフォルダ構成が異なる場合があるので、index.jsの位置が上記と完全に一致するよう配置すること。
Siki上でのオン・オフ
インストールしたプラグインは『設定 > プラグイン』で一覧を表示し、「enabled」のチェックボックスで個別に切り替えできる。

request-hookの留意点
※現在は5chの読み書きにrequest-hookプラグインは必要がない。以前利用していた人は特段の理由がない限り無効化を推奨。
他のrequest-hook系プラグインを利用したい場合などは下記を開いて参照されたし。
「request-hook」の例:
plugins/ # プラグインを置く場所
request-hook/ # 通信フックプラグインを置く場所
index.js # プラグインの本体
config.json # プラグインの設定ファイル(ユーザーが編集する)
request_hook_conf.js # プラグインが使用するデータの格納先(profile\に自動作成、ユーザーは触らない)
request-hookは、先述のプラグイン一覧による全体での切り替えのほか、ワークスペース別でも有効・無効を切り替え可能。
有効にしたワークスペースでは、Sikiの設定でProxyやUAを指定するとそちらで処理されてしまうので空白にしておく。

request_hook_conf.jsは通常は触る必要がないが、プラグインの動作をリセットしたい時にはこのファイルを削除すると新規セッションになる。
「通信設定」も参照。
プラグインシステムの詳細
request-hook
筆者もわかっていないので作者のレスに丸投げ。わかる人Wikiもどうにかしてください。
雛形はこちら
https://egg.5ch.io/test/read.cgi/software/1648170512/183-184
183: RomTenma sage 2022/04/03(日) 11:40:43.80 ID:uk7A3bvp0
Siki 0.10.0-beta.2
通信をフックして編集出来るプラグインを利用出来るようにしました
https://sikiapp.net/plugins/zip/
request-hook.zip
これを解凍して pluginsへ置けば何もしないプラグインが適用されるのでどうにかしてください
184: RomTenma sage 2022/04/03(日) 11:47:41.66 ID:uk7A3bvp0
request-hookプラグインの仕様
beforeRequestで上から流れてくるurl, headers, payload, methodのデータを加工あるいは上書きして返します
afterRequestでサーバーから受け取ったデータを処理出来ます
全てのサイトのスレッド、板、書き込みに適用されるので urlを正規表現などで場合分けして特定のサイトやアクセスの場合のみ処理するようにしてください
同じ場所にあるconfig.jsonはユーザーが任意の値を書き込む設定の場所となります
データを保存する為の単純なストレージとして confが使えます
これはプログラムが利用するストレージでユーザーの編集はしないことを想定しています
confの保存先はprofile内の request_hook_conf.jsとなります
nodeの標準モジュールは普通にrequireするだけで扱えます
ちゃんとしたデバッグ機能とかは無いのでターミナルから起動してconsole.logで内容を見ながらという形になっています
startup
startupプラグインに関しては起動時にNode.jsスクリプトを一度実行するというだけなので、雛形を解凍/配置してindex.jsのmodule.exports.mainScriptの{}内に希望する処理を書くだけである。startupプラグイン専用の設定ファイルの読み書きは可能。
https://egg.5ch.io/test/read.cgi/software/1686475201/220
220: RomTenma sage 2023/06/19(月) 00:49:31.67 ID:SBEpzEMF0
実行する仕組みを提供するだけなので中身の方は常識の範囲内で作ってください
Node.jsでできることはなんでも実行できるもののSiki本体の動作とは(現時点では)他に一切連動しておらず、バッチファイルやタスクスケジューラ、cronなどでやっても同じことなので、どうしてもSiki内で済ませたい/Node.jsでやりたいことがある人が常識の範囲で作って使うものという位置付け。とはいえ将来的にはSikiへの介入も可能になるかもしれない。
実はどのプラグインにコードを書いても動作してしまう(このためプラグインにはセキュリティリスクがある)のだが、request-hookに全く関係のない起動時処理を書く人がいたため、正式な置き場所が提供されたという経緯がある。
プラグインの構想
https://egg.5ch.io/test/read.cgi/software/1648170512/710
710: RomTenma sage 2022/04/17(日) 21:59:11.90 ID:bqmdnWWh0
(前略)
プラグインは本来はそのようにサイト毎にURLの割り当てからスレッドや板の読み込みや書き込み等を扱う形を想定していましたが
今回のrequest-hookプラグインはサイトは関係なく通信部分だけをピックアップしたものになっています
https://egg.5ch.io/test/read.cgi/software/1680333697/879
879: RomTenma sage 2023/06/04(日) 17:44:03.16 ID:ZoMJV8PL0
>>872
sikiはサイトを板とスレッドという2つの概念に落とし込んで表示します
何を板にするか、スレッドでは何を表示するか、そして板とスレッドに対応するURLの定義が与えられれば作業はしやすいです
この辺の作業をオープン化して誰でもプラグインを作れるようにするのが目標のひとつ
https://egg.5ch.io/test/read.cgi/software/1686475201/583
583: RomTenma sage 2023/07/05(水) 23:26:45.90 ID:pyeeZHdw0
今後は色々な機能を拡張機能として構築していけるようにしていきたい
とてつもなく難易度が高いので死ぬかもしれないけど
https://egg.5ch.io/test/read.cgi/software/1691286314/635
635: RomTenma sage 2023/08/13(日) 13:27:15.93 ID:nwrNXgEd0
>>561
VSCodeの拡張機能の開発環境に近いものを理想として色々考えています
未対応のサイトや対応済みサイトの修正、新しい拡張機能の追加を一定の手順に沿って行えるように出来るようになるのが最終目標の一つ
プラグイン管理の枠組み
現在は作者が決め打ちで準備したプラグイン(フォルダ)を利用できるだけだが、将来的にはユーザーが任意のプラグインを登録でき、Siki本体とも連動できる形を目指している。
https://egg.5ch.io/test/read.cgi/software/1686475201/315
315: RomTenma sage 2023/06/23(金) 23:10:24.43 ID:KSF42rVt0
プラグイン周りはまだ詳細が練られていないです
一応今回のアップデートで config.jsに enabledPluginsという項目が増えたので、ここに使いたいプラグインの名前を列挙していく形になります
"request-hook","startup"の二つがデフォルト値になっています
request-hookは一つだけしか登録できませんが、startupのプラグインはフォルダの名前を変えることで複数登録できるようになっています
startupスクリプトは今のところ設定を参照してnodeスクリプトを実行できるだけでsiki本体への干渉は行えません
将来的には操作するツールやイベントエミッターを渡して色々出来る形にするかもしれません
"enabledPlugins": [
"request-hook",
"startup"
],
現在は先述の通り『設定 > プラグイン』で一覧を表示し、個別に切り替えできる。config.jsを手動で編集する必要はない。
有志作成プラグイン
上述の枠組みを用いて有志が作成した編集済みプラグインを紹介するが、使用法については配布サイトや同梱のreadmeなどをよく読むこと。
プラグインは任意のファイルの変更/削除や送受信などができてしまう。安全性は保証できないので利用は自己責任で。
request-hook系
request-hookの枠組みによるプラグイン。Siki作者とも当Wikiとも一切関係がない有志によるもの(おすそわけ?)なので全て自己責任で。
- pinkdarker-request-hook
- Siki標準ではスレの一部しか読み込めないpinkdarkerのスレを全部読み込むなどの機能を持つ。
- nuts
- 5chの旧APIで通信する機能を持つ。現在これが有効な掲示板はおそらく存在しておらず、利用は非推奨。
一部過去ログを読んだり浪人のログインを制御したりといった用途に使われることがあるようだが、5chにどんぐりシステムが導入されてからはスレッドのHTML構成が変わってしまい、このプラグインを使ってスレッドを読み込むとログデータが破損する可能性がある。更新も途絶えているため利用はますます非推奨。
現時点ではrequest-hook系のプラグインは1つしか利用できないので、どうしても複数を使いたい時にはホストで分岐させるなどして1つのプラグインにマージしてやる必要がある。公式の対応を待つのが無難だろう。