Star Chart Search Enhancer

Chrome MV3 extension for the Xingtu creator market page.

Development

npm install
npm test
npm run build

Load The Extension

  1. Run npm run build
  2. Open chrome://extensions
  3. Enable developer mode
  4. Choose Load unpacked
  5. Select the dist/ directory

Current Scope

  • Adds two after-search-rate columns to the Xingtu market list
  • Adds a popup-based Logto auth entry
  • Hydrates the current page immediately
  • Provides plugin-owned filter, sort, and CSV export controls
  • Gates the market tools until auth is available
  • Triggers full-scan flow only when filter, sort, or export is used

Auth Configuration

The Logto integration is wired with placeholder values in src/shared/auth-config.ts. Replace these before real sign-in testing:

  • logtoEndpoint
  • appId
  • apiResource
  • Any extra scopes beyond openid, profile, and offline_access

The popup dev panel is controlled by enableDevAuthPanel.

Popup Behavior

  1. Load the unpacked extension from dist/
  2. Click the extension icon
  3. Confirm the popup shows 登录 Logto when unauthenticated
  4. After real Logto config is added, use the popup to sign in and sign out

Protected API Mock Test

  1. Set enableDevAuthPanel to true in src/shared/auth-config.ts
  2. Run npm run mock:protected-api
  3. Run npm run build
  4. Reload the unpacked extension from dist/
  5. Open the popup and log in
  6. Click 测试受保护接口
  7. Confirm the popup shows JSON containing "source": "mock-protected-api" and "message": "authorized"

Batch Submit Mock Test

  1. Run npm run mock:protected-api
  2. Run npm run build
  3. Reload the unpacked extension from dist/
  4. Open https://xingtu.cn/ad/creator/market
  5. Choose an export range in the plugin toolbar
  6. Click 提交批次
  7. Enter a batch name in the browser prompt
  8. Confirm the toolbar shows 批次提交成功
  9. Confirm the mock batch response accepts the payload and reports the submitted batchId

Market Auth Gate

When the market page is opened without a valid auth state, the content script renders 请先登录插件 and does not boot the filter, sort, or export toolbar.

Manual Verification

  1. Load the unpacked extension from dist/
  2. Open https://xingtu.cn/ad/creator/market
  3. Confirm the page shows the auth gate until login is available
  4. After authentication is wired, confirm the two new columns appear
  5. Confirm current-page rows move through loading and then render values or failure states
  6. Apply a threshold filter and confirm the list hides unmatched rows
  7. Apply a sort and confirm row order changes
  8. Export CSV and confirm the file includes plugin status and after-search-rate fields

提交的数据格式

{
    "logtoUserId": "p7pdhhtde8kj",
    "creatorName": "王少卿",
    "resource": "https://talent-search.intelligrow.cn",
    "batchName": "自动验证批次",
    "batchId": "p7pdhhtde8kj-<提交当时的 ISO 时间戳>",
    "createdAt": "<提交当时的 ISO 时间戳>",
    "authors": [
      { "authorId": "7041184989643276324", "authorName": "旖旖小虎🐯" },
      { "authorId": "7021245050621263906", "authorName": "瑶一瑶小肉包" },
      { "authorId": "6629722292110753806", "authorName": "陈翔六点半" },
      { "authorId": "7065613279053217829", "authorName": "小花花的每一天" },
      { "authorId": "7254389871895117885", "authorName": "疯铲姐妹" },
      { "authorId": "7294473194298146854", "authorName": "奇奇de海洋" },
      { "authorId": "6834119701379940360", "authorName": "任志达" },
      { "authorId": "6870159718216630285", "authorName": "大师兄的表哥" },
      { "authorId": "6833914516833566727", "authorName": "旺仔是三七分" },
      { "authorId": "7401565089431552037", "authorName": "笑典动物园" },
      { "authorId": "7120107426002501639", "authorName": "嘻哈不拆" },
      { "authorId": "7015813716650393630", "authorName": "周星伦" },
      { "authorId": "6870170568893661197", "authorName": "周周的周" },
      { "authorId": "6839989503663276045", "authorName": "潇潇学姐" },
      { "authorId": "7023032374749298718", "authorName": "大自然奇观" },
      { "authorId": "6870164079617523719", "authorName": "王小怪" },
      { "authorId": "6969058840033624100", "authorName": "周三拾" },
      { "authorId": "6825383642127138829", "authorName": "罗臣臣" },
      { "authorId": "6684403430837977100", "authorName": "段炼Exercise" },
      { "authorId": "7319160797236559882", "authorName": "郑皓文" }
    ]
  }
Description
No description provided
Readme 1,016 KiB
Languages
TypeScript 98.2%
JavaScript 1.7%