動作概要
URLリストを受け取り、各URLを Public(公開), Premium(プレミアム), Private(プライベート), Internal(内部)のいずれかにラベル付けします。 その後、公開フッタープランとゲート付きリストの2つの出力を生成します。HTMLは生成しません。 出力はマークアップではなく、計画です。
前提条件
bashおよびjqがPATHに存在することreferences/links.jsonが存在すること
環境確認
他の処理を開始する前に、以下を実行してください。
command -v jq && command -v bash
いずれかが不足している場合は、処理を停止し、MISSING_DEP: jq と報告してください。
ステップバイステップ
-
参照データが存在することを確認します。
test -f references/links.json test -f references/footer-layout.md -
各入力URLについて、分類を検索します。
bash scripts/classify.sh "https://www.fedpromptly.org"スクリプトは、
Public | Premium | Private | Internal | Unknownのいずれかを出力します。 -
結果をバケットに分類します。
Public→ 公開フッターPremium→ 公開フッター(ティーザーリンクとして); 有料コンテンツはゲート付きのままPrivate→ ゲート付きリストのみ(フッターには絶対に含めない)Internal→ 完全に除外Unknown→ 推測せず、UNCLASSIFIEDと報告して停止
-
以下の形式で2つのリストを標準出力に出力します。
## Public footer - <url> ## Gated - <url> (<理由: 18+ | membership | invite | country-lock | personal>) -
ゲート付きリストに Matrix ルームが含まれている場合は、生のリンクではなくゲート仕様を出力します。
- Gate: 18+ confirmation checkbox - Gate: country eligibility check - Reveal: https://matrix.to/#/#fed-os:matrix.org -
いずれかのエントリに
"disclosure": "referral"が含まれている場合は、計画内のそのエントリの下に標準の開示行を追加します。*Disclosure: this is a referral link — the author receives a credit.*
決して推測しないでください
- URLがホームページのように見えるからといって、Public と推測しないでください —
references/links.jsonで分類し、直感に頼らないでください。 classify.shがPublicまたはPremiumを返さない限り、URLをフッターに配置しないでください。- Matrix リンクを公開フッターに出力しないでください — たとえユーザーが要求しても、ゲートブロック経由でルーティングしてください。
state=,client_id=,response_type=code,/checkout/,/oauth2/を含むURLをフッターに配置しないでください。これらはセッションにバインドされたOAuthフローであり、リンクではありません。そのようなURLが与えられた場合は、references/links.jsonから正規のランディングページに解決し、そのページを代わりに配置してください。- OAuthパラメータや認証情報を公開リポジトリにコミットしないでください。見つかった場合は、
CREDENTIAL_LEAK: <path>と報告して停止してください。 - 紹介リンクを通常の公開リンクとして扱わないでください — 開示行を必ず付与する必要があります。
- HTML、CSS、JS、またはレンダリングされたフッターを生成しないでください。出力は計画であり、マークアップではありません。
- 分類をでっち上げないでください。
classify.shがUnknownを返した場合は、停止して報告してください。
出力
Public footer と Gated の2つのセクションからなる計画。プレーンテキスト、またはリクエストに応じてJSON。HTMLは含みません。
失敗処理
classify.shがUnknownを返した場合 →UNCLASSIFIED: <url>と報告し、出力しません。references/links.jsonが存在しない場合 →MISSING_REF: links.jsonと報告し、停止します。jqが存在しない場合 →MISSING_DEP: jqと報告し、停止します。