Scrapboxの行IDの書式
reverse engineeringして特定したのでメモ
Scrapboxの行IDは8文字
(A
)+6文字(
B
)+4文字(
C
)+6文字(
D
)の単位で構成された24文字のIdである
例:
61483d6b1280f00000288feb
AAAAAAAABBBBBBCCCCDDDDDD
各単位の説明
unix時刻で 0xFFFFFFFF
は 2106-02-07T15:28:15Z+0900
なので、これより前なら末尾8文字をそのままUnix時刻として扱って良い
この性質はUserCSSで使えそうだな
B: その行を生成したUserのIDの末尾6文字分
C: 常に 0000
D: 0x000000
から 0xfffffe
までの完全にランダムな16進数
サーバで作成した行IDは、この規則に従っていない
新規作成したページのタイトル行のIDなどが例
生成コード
mod.tsconst zero = (n: string) => n.padStart(8, '0');
export function createNewLineId(userId: string) {
const time = Math.floor(new Date().getTime() / 1000).toString(16);
const rand = Math.floor(0xFFFFFE * Math.random()).toString(16);
return `${zero(time).slice(-8)}${userId.slice(-6)}0000${zero(rand)}`;
}