{"record":{"id":"2bb0691b32f40a53","repo":"DIYgod/RSSHub","slug":"skeb-followings-rss-is-disabled-due-to-the-lack-of-2bb069","errorCode":null,"errorMessage":"Skeb followings RSS is disabled due to the lack of relevant config","messagePattern":"Skeb followings RSS is disabled due to the lack of relevant config","errorType":"error_code","errorClass":"ConfigNotFoundError","httpStatus":503,"severity":"error","filePath":"lib/routes/skeb/following-works.ts","lineNumber":44,"sourceCode":"    },\n    name: 'Following Works',\n    maintainers: ['SnowAgar25'],\n    handler,\n    radar: [\n        {\n            title: 'Following Works',\n            source: ['skeb.jp/:username'],\n            target: '/following_works/:username',\n        },\n    ],\n    description: \"Get the latest works for the specified user's followings on Skeb.\",\n};\n\nasync function handler(ctx): Promise<Data> {\n    const username = ctx.req.param('username');\n\n    if (!config.skeb || !config.skeb.bearerToken) {\n        throw new ConfigNotFoundError('Skeb followings RSS is disabled due to the lack of relevant config');\n    }\n\n    const items = await getFollowingsItems(username, 'following_works');\n\n    return {\n        title: `Skeb - ${username} - フォロー中のクリエイターの新着作品`,\n        link: `https://skeb.jp/${username}`,\n        item: items as DataItem[],\n    };\n}\n","sourceCodeStart":26,"sourceCodeEnd":55,"githubUrl":"https://github.com/DIYgod/RSSHub/blob/bed535e0879dc71c5aff6f1e7bd1ac21ede40115/lib/routes/skeb/following-works.ts#L26-L55","documentation":"Same gate as following-creators, applied to the following-works route: requires `config.skeb.bearerToken` to call the Skeb API for the latest works from a user's followings. Throws before `getFollowingsItems(username, 'following_works')`.","triggerScenarios":"A request to /following_works/:username on an instance where the Skeb bearer token is unset.","commonSituations":"Default deploy without Skeb env; token expired and removed; public instance that does not share Skeb credentials.","solutions":["Set `SKEB_BEARER_TOKEN` and restart the instance.","Confirm the token still works by calling the Skeb API directly with curl.","Re-issue the token periodically."],"exampleFix":"// before\n# SKEB_BEARER_TOKEN unset\n\n// after\nSKEB_BEARER_TOKEN=<your bearer token>","handlingStrategy":"validation","validationCode":"if (!config.skeb?.bearerToken) {\n    return ctx.body('Skeb route requires SKEB_BEARER_TOKEN.', 503);\n}","typeGuard":"const hasSkebToken = (c: typeof config): boolean => Boolean(c.skeb?.bearerToken);","tryCatchPattern":null,"preventionTips":["Share one Skeb config check across all three skeb routes via a helper.","Document token acquisition steps in the route description.","Monitor for 401 responses that indicate token expiry."],"tags":["config-missing","auth-token","artist-platform"],"backgroundTag":null,"analyzedSha":"bed535e0879dc71c5aff6f1e7bd1ac21ede40115","analyzedAt":"2026-08-12T19:29:35.364Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}