Agent skill

Juejin Publisher

by eunomia-bpf in eunomia-bpf/eunomia.dev

Prepare or publish eunomia.dev Markdown articles on Juejin. An agent skill from eunomia-bpf/eunomia.dev.

MITAuto-check passedDocuments & Office

Install Juejin Publisher

skills CLI
$ npx skills add eunomia-bpf/eunomia.dev --skill juejin-publisher -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install eunomia-bpf/eunomia.dev juejin-publisher --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/eunomia-bpf/eunomia.dev.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/juejin-publisher .claude/skills/juejin-publisher && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
juejin-publisher
GitHub stars
236
Token cost
~4.8k tokens
SKILL.md length
2,460 words
Files
3 (incl. references)
Skills in repo
18
Repo updated
First seen
Licence
MIT

At a glance

Prepare or publish eunomia.dev Markdown articles on Juejin. An agent skill from eunomia-bpf/eunomia.dev.

  • Works in 3 steps: Read the canonical Chinese source and… → Build a Juejin copy in canonical… → Keep the opening, section order, claims,…
  • Asked to create
  • SKILL.md covers Inputs, Platform Entry Points, References and Browser-Only Platform Boundary, plus 8 more sections
  • Reaches juejin.cn

What it does

Juejin Publisher is an agent skill from eunomia-bpf/eunomia.dev. Prepare or publish eunomia.dev Markdown articles on Juejin. Use when asked to create, paste, publish, QA, or record a Juejin draft or article from repository Markdown. Preserves a syndicated long-form source title and body apart from mechanical Markdown/rendering fixes, with browser-editor workflow, category and tag selection, publication authorization, and media ledger updates.

Its SKILL.md is about 4.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including reference files (for example `agents/openai.yaml` and `references/platform-preferences.md`).

It sits in Documents & Office, covering Markdown. It works with GitHub. The repository describes itself as: https://github.com/eunomia-bpf homepage, documents and blogs. The licence is MIT.

When your agent uses it

  • Asked to create
  • Record a Juejin draft
  • Article from repository Markdown

Example prompts

  • “/juejin-publisher”

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Read the canonical Chinese source and extract title, summary, tags, images,
  2. Build a Juejin copy in canonical syndication mode
  3. Keep the opening, section order, claims, examples, and conclusion unchanged.

What it can do on your machine

Read from SKILL.md and the folder at commit 7779f61. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are javascript).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • juejin.cn

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Juejin Publisher loads about 4.8k tokens when it runs, and up to ~6.9k if it reads all its reference files. Until then it costs about 100 tokens; SKILL.md has 2,460 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~100
When it runs · the whole SKILL.md, loaded when a task matches
~4.8k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~6.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from eunomia-bpf/eunomia.dev at commit 7779f61, republished under its MIT licence (© eunomia-bpf). 2,460 words, ~4,758 tokens.

Download SKILL.mdSave it as .claude/skills/juejin-publisher/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
juejin-publisher
description
Prepare or publish eunomia.dev Markdown articles on Juejin. Use when asked to create, paste, publish, QA, or record a Juejin draft or article from repository Markdown. Preserves a syndicated long-form source title and body apart from mechanical Markdown/rendering fixes, with browser-editor workflow, category and tag selection, publication authorization, and media ledger updates.

Juejin Publisher

Prepare or publish a reviewed Juejin article from the canonical repository source and choose appropriate technical categories and tags. Publication authorization follows CLAUDE.md's Precedence Rule and Publishing section.

Inputs

  • Source Markdown path or topic.
  • Intended title, language, and audience, if specified.
  • Optional cover, category, tags, source URL, GitHub link, or paper link.

If the source path is missing, inspect .github/publisher/posts_queue.txt, .github/publisher/media/not-published.md, and recent docs/blog/posts/ entries before asking the user.

Platform Entry Points

Use a browser surface with the logged-in session when UI work is required. For the maintained yunwei37 account, prefer the existing Chrome Yunwei profile, which carries the verified Juejin login. A fresh in-app browser session may be logged out; do not treat that state as evidence that the account itself is unavailable. Confirm the avatar and creator controls on the visible page before proceeding. Never bypass authentication with search results or alternate sources.

References

Load references/platform-preferences.md when choosing Juejin-native framing, category/tags, tutorial-vs-series shape, or promotion/link balance.

Browser-Only Platform Boundary

Do not directly access Juejin APIs, internal endpoints, or background HTTP interfaces under any circumstances. All verification, drafting, QA, screenshots, and ledger evidence must come from normal browser interactions that a regular logged-in user can perform: navigating pages, scrolling profile/article lists, clicking visible controls, reading rendered page content, using the editor UI, and capturing screenshots.

Draft Preparation

  1. Read the canonical Chinese source and extract title, summary, tags, images, code blocks, source URL for the ledger, GitHub links, and paper links.
  2. Build a Juejin copy in canonical syndication mode:
    • remove YAML front matter
    • remove the source H1 because the Juejin title field renders the article title; confirm the preview does not repeat it
    • preserve the article body by default
    • convert relative images to checked public URLs or prepare editor upload
    • ensure code fences have language labels
    • preserve the source title exactly
    • preserve links already present in the source
  3. Keep the opening, section order, claims, examples, and conclusion unchanged. If the source needs a content fix, update it first or skip syndication. Rewrite, translate, shorten, expand, reorder, or split only when the user explicitly asks for that specific publication.

Draft Archive

Before opening the Juejin editor, write or update the Juejin draft record under draft/media/YYYY-MM-DD/<source-slug>/juejin.md using the local date. For unchanged Chinese canonical syndication, the file may reference the source body instead of duplicating it, but it must record the exact title, source URL for the ledger if known, GitHub/paper links, category/tags, source/project note if useful, media choices, and QA state.

Editor Workflow

When resuming an interrupted publish, first inspect the normal visible authored profile for the exact title and source identity. The final submission may have succeeded before the parent task stopped. If the article is already public, do not reopen a new draft or submit again; verify the public page and reconcile the artifact, ledger, queue, and snapshots instead.

  1. Open https://juejin.cn/editor/drafts/new.
  2. Fill the title field, observed as 输入文章标题....
  3. For long-form posts, finish the Juejin-specific Markdown artifact locally before opening the editor. Paste or import that final artifact; do not use the platform editor for large rewrites or link-heavy tail-note repair. When repairing an existing article, verify that the editor replaced the old body instead of appending another copy. After saving, confirm on the public page that the opening paragraph, first section, and references each occur only once. Repair the same article if duplication appears; never republish it as a new post.
  4. Use 预览 to scan headings, images, links, code blocks, and table layout.
  5. Click 发布 only to inspect publish settings when needed.
  6. Choose category and tags carefully:
    • eBPF tutorials: 后端, Linux, 开源, 云原生, 架构
    • AI agent or runtime posts: 人工智能, AIGC, 后端, 架构, 安全
    • GPU observability posts: 人工智能, 后端, 架构, Linux, 性能优化
    • The tag field is a search-select widget that exposes only a curated option list; not every intended tag is offered, and typing a term can commit an unrelated suggestion. For the 2026-09-12 48-energy tutorial, only Linux, 后端, and 性能优化 were available — eBPF and 开源 were not. Verify each tag chip by clicking 确定 (or the confirm control) one at a time, read the committed chips back, and record the actually-committed tags in the ledger rather than the intended list.
  7. Complete 确定并发布 when the task requests publication or the queue item is marked 排队; do not ask for duplicate confirmation. Stop at preview only for a draft or preview task.

For images, verify the exact final URL used in Markdown before publishing. Do not assume imgs/... can be converted by guessing an eunomia.dev article path; that path may return 404. A public GitHub raw URL can also produce 转存失败,建议直接上传图片文件 in Juejin. When that happens, upload the source image through the visible editor, use the resulting Juejin-hosted URL in the local publishing copy, and confirm that the failure marker is gone and the rendered image has non-zero dimensions. Verify the same image again on the public page.

Session And Editor Recovery

  • Environment restarts can drop the visible Chrome profile's Juejin login even though the profile directory and the mounted /run/social-manager-session/browser-state.json still hold valid Juejin session cookies (sid_tt, sessionid, sid_guard, uid_tt, n_mh, ...). Symptom: /editor/drafts/new redirects to /login, and the profile page shows no creator controls.
  • agent-browser cookies set writes only non-httpOnly cookies on the current page and does not restore the session; the browser-target CDP Network.setCookies is not exposed here ('Network.setCookies' wasn't found). The reliable import is the page-target CDP domain Storage: Storage.setCookies with the cookie objects from the mounted state file, then verify with Storage.getCookies. This restores all httpOnly session cookies (55 cookies imported, 19 Juejin cookies observed on 2026-09-14).
  • After import, the first navigation may hit a ByteDance 验证码中间页 (slide CAPTCHA) on the profile or editor URL. Do not solve the CAPTCHA. Re-navigating to / and then back to /editor/drafts/new cleared it on 2026-09-14, and the editor rendered with the title input and CodeMirror.
  • Setting the body through document.querySelector('.CodeMirror').CodeMirror.setValue(...) requires an explicit UTF-8 decode. Passing atob(base64) directly yields mojibake (Latin-1 interpretation of UTF-8 bytes); decode with new TextDecoder('utf-8').decode(Uint8Array.from(atob(b64), c => c.charCodeAt(0))). Verify the resulting character count equals the local artifact byte-length in characters before submitting.

Publish Dialog Mechanics

Verified against the 2026-09-15 45-scx-nest and 2026-09-22 43-kfuncs submissions.

  • The settings dialog is <div class="publish-popup ...">. Querying .byte-modal and reading its innerText returns an empty string, so read the popup text from .publish-popup instead.

  • Category chips are .category-list .item, but a selected one carries the class active, not selected. Read back [...document.querySelectorAll('.category-list .item.active')] to confirm the choice instead of looking for .selected, which returns nothing.

  • The popup holds several .byte-select widgets in DOM order: index 0 is tags, then collections, then topics. Focus publish-popup .byte-select__input[0] to add a tag. Typing a trigger character with the CLI's keyboard type opens the option list in .byte-select-option; click the option whose exact text equals the target to commit the chip. Between tags, clear the input by setting value = '' and dispatching a bubbling input event, otherwise the previous term stays in the search box. Read the committed chips back from .byte-select__tag before submitting.

  • The final control is the popup button with exact text 确定并发布. Success is document.title === '发布成功' on https://juejin.cn/published.

  • The 确定并发布 button ignores a synthetic element.click() and a CLI agent-browser click on .publish-popup .ui-btn.primary (on the 2026-09-22 43-kfuncs submission both attempts only fired the autosave toast and the page stayed in the editor; only a real pointer sequence published). Dispatch the full real pointer-event sequence via eval:

    js
    (function(){
      var b=Array.prototype.slice.call(document.querySelectorAll('.publish-popup button')).filter(function(x){return (x.textContent||'').trim()==='确定并发布';})[0];
      var r=b.getBoundingClientRect(),x=r.left+r.width/2,y=r.top+r.height/2;
      function ev(t,T){b.dispatchEvent(new T(t,{bubbles:true,cancelable:true,view:window,clientX:x,clientY:y,button:0}));}
      ev('pointerdown',PointerEvent);ev('mousedown',MouseEvent);b.focus();ev('pointerup',PointerEvent);ev('mouseup',MouseEvent);b.click();
      return 'dispatched';
    })()
  • The tag search widget (.publish-popup .byte-select__input, index 0) is not reachable by CLI fill or keyboard type — typed text leaks into the title or body instead. The popup may hold SIX .byte-select__input elements (tags, collections, and topics each appearing twice: three visible plus three width-0 hidden duplicates; observed 2026-09-25 on 38-btf-uprobe), so always address index 0 explicitly and filter option clicks by getBoundingClientRect().width > 0 rather than assuming a single widget. Set its value with the native setter Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,'value').set plus dispatchEvent(new Event('input',{bubbles:true})), then click the exact .byte-select-option. The committed chip DOM order can differ from the typing order (observed 性能优化/后端/Linux against an intended Linux/后端/性能优化); record the actually-committed set, not the intent.

  • Before the final submit, read back input[placeholder*=标题].value and reset it to the exact source H1: early tag typing can pollute the title field.

  • Decide the article's state empirically, not by precedent, and judge it in the logged-in browser — never by curl status codes. Observed outcomes: (a) direct public at /post/<id> with no review interval (2026-09-23 42-xdp-loadbalancer); (b) staged at /spost/<id> while the creator center shows it under 审核中 and /post/<id> shows 找不到页面 (2026-09-22 43-kfuncs, 2026-09-25 38-btf-uprobe); (c) staged for minutes, then review clears in the same session so /post/<id> renders the article and /spost/<id> redirects to it (2026-09-24 41-xdp-tcpdump, 40-mysql, 39-nginx). Curl status codes are not a publication signal: the Juejin SPA shell answers HTTP 200 for ANY /post/<id> and /spost/<id> path even while the article is in review (2026-09-25 38-btf-uprobe: curl 200/200 at 07:29 +08 while the browser still showed 找不到页面 and the creator center still showed 审核中 (1)). Judge availability by (1) the logged-in browser rendering the article body at /post/<id> with no 审核中 / 文章有更新 / 已被删除 marker and (2) the creator center's 审核中 count dropping to 0. Poll the logged-in browser (reopen essays?status=all and read the 审核中 count) every ~1–2 min until it clears; clearance time is not bounded to a minute — the 38-btf-uprobe post waited ~40 min (07:27 → 08:07 +08) while earlier posts cleared in under a minute. Three Juejin posts on one America/Los_Angeles day (2026-09-24: 41-xdp-tcpdump, 40-mysql, 39-nginx) is legal only when the extras are funded by catch-up gaps; the same-day normal slot still belongs to the next queued task.

  • Review clearance time is not bounded: 45-scx-nest took ~1 hour, 38-btf-uprobe ~40 min, while the 2026-09-24 posts cleared in under a minute. Poll the logged-in browser on ~1–2 min intervals until the creator center's 审核中 count reaches 0; before finishing, run the full public-page QA, flip the queue item to [x], and set the ledger entry to confirmed.

  • Passing a long body through agent-browser eval as an inline argument fails when the payload is large, and ANY inline argument containing backticks or double quotes breaks the wrapper's shell parser (pi-natives:command: unterminated backquote). Write the script to a /tmp/*.js file and pipe it via agent-browser eval --stdin instead; embed base64 in the script and split it into a few window.__b64 += "chunk" assignments when it is long.

  • The .byte-select-option list is NOT inside .publish-popup; query it document-wide. Several hidden dropdowns exist at once (collections, topics), so filter [...document.querySelectorAll('.byte-select-option')] before clicking the option whose exact text matches the target tag. Use getBoundingClientRect().width > 0 as the visibility test, NOT offsetParent !== null: an unopened .byte-select-dropdown__wrap keeps its options in the DOM with zero width/height but a non-null offsetParent, so the offsetParent filter reports an open dropdown as empty (hit on the 2026-09-24 40-mysql prep, where the tag options were present and clickable all along). A popup-scoped query returns zero options even when the tag dropdown is open (verified on the 2026-09-23 42-xdp-loadbalancer submission).

  • Typing into the tag input with CLI keyboard type is unreliable: the text can leak into the title or body, and the option list does not always open. The sequence that worked on both the 2026-09-23 and 2026-09-24 submissions is the pure-JS one: focus() the index-0 .publish-popup .byte-select__input, set value with the native setter, dispatch a bubbling input event, wait for the document-wide visible .byte-select-option, then click it with a real CDP page.mouse move/down/up. Between tags, clear the input by setting value = '' through the native setter plus a bubbling input event before writing the next term; otherwise the previous search text stays in the box. Read the committed chips back from .publish-popup .byte-select__tag after each option click.

  • The category chip needs real CDP pointer events (page.mouse.move → move → down → up), not in-page synthetic events. On the 2026-09-24 submission a full synthetic hover-inclusive sequence (mouseover/pointerover/pointerenter/mouseenter → pointerdown/mousedown with buttons: 1 → focus() → pointerup/mouseup → click()) still left .category-list .item.active empty, and only the real CDP mouse sequence on the chip's center coordinates selected it on the first try. Read back .category-list .item.active (never .selected) to confirm.

  • Finding the new URL may take a moment even after 发布成功: the author profile list (https://juejin.cn/user/<id>/posts) can lag a few minutes, and a scrolled profile page may not show the new item at all. The reliable sources are (1) the creator center article list (https://juejin.cn/creator/content/article/essays?status=all, reachable by clicking 文章管理), whose 审核中 tab names the staged URL and whose counts flip 审核中 (N) → 0 on clearance, and (2) the logged-in browser rendering the article body at /post/<id>. Do NOT rely on a curl status probe of the candidate /post/<id> URL: the SPA shell answers 200 for any such path even while the article is in review (observed 2026-09-25 on 38-btf-uprobe — curl 200/200 while the browser showed 找不到页面 and the creator center still showed 审核中 (1)).

  • Navigate the creator center by URL, not by clicking through the SPA. https://juejin.cn/creator/content/article/all renders a shell whose tab panes are empty (.byte-tab-pane has zero elements) and, on a fresh load, a 选择你感兴趣的技术方向 onboarding modal plus a 当前操作失败 alert can overlay the list. Go straight to https://juejin.cn/creator/content/article/essays?status=all, which renders the counts (全部 (N) 已发布 (N) 审核中 (N) 未通过 (N)) and the row list with per-post 展现 / 阅读 / 点赞 / 评论 / 收藏 in document.body.innerText after a few seconds. The /all shell alone returns only the backdrop text and will falsely look like an empty account.

Show full SKILL.md (229 more words)Show less

Content Strategy

Juejin-native short posts and new articles can use immediately useful technical framing. This guidance does not apply to syndicated long-form content. For an existing Chinese long-form eunomia.dev post, preserve the source title exactly and keep the body substantively unchanged. Only fix Markdown/rendering and set category, tags, cover, and summary metadata. Do not split a source article into a series by default.

Optimize for the maintainer's personal technical account brand and practical developer trust, not only for search ranking or traffic back to eunomia.dev. Preserve GitHub, tutorial, docs, or paper links already in the source. A visible eunomia.dev canonical/source note is optional and is not added to the body by default.

Safety Boundary

Do not automate:

  • final 确定并发布 when the task is limited to a draft or preview
  • direct Juejin API access, internal endpoint reads, or browser-hidden data fetches
  • sign-in, phone verification, or CAPTCHA
  • 去签到, likes, follows, comments, reposts, or private messages
  • account settings or monetization settings
  • deleting drafts

Ledger Update

After a confirmed publish, update .github/publisher/media/published.md with title, source path, Juejin URL, date, category, tags, and formatting fixes. Remove or update the matching row in .github/publisher/media/not-published.md.

Before closing the publishing task, run a platform-lessons pass. Add any new, reproducible editor failure and its verified workaround to this skill or its references so the next publish does not repeat it.

Keep screenshots and observed UI notes under .github/publisher/media/.

© eunomia-bpf, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files (references) in .agents/skills/juejin-publisher of eunomia-bpf/eunomia.dev.

  • SKILL.md
  • agents/openai.yaml
  • references/platform-preferences.md

Open the folder on GitHubat commit 7779f61

Compare with similar skills

Juejin Publisher next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Juejin Publisher compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Juejin Publisher this skilleunomia-bpf/eunomia.dev236—~4.8kAutomated safety check: PassMIT
Markitshift-labs-ai/markit1.3k—~299Automated safety check: PassMIT
Deepxiv Baseline TableDeepXiv/deepxiv_sdk804—~1.6kAutomated safety check: PassMIT
Openclaw Ghsa MaintainerSafeAI-Lab-X/ClawKeeper1k—~728Automated safety check: PassNone
Fetch Markdown Specstats-u/markdown-cjk-friendly167—~179Automated safety check: PassMIT
Documentationgithub/gh-aw5.4k—~1.9kAutomated safety check: PassMIT

Similar skills

  • Markit

    shift-labs-ai/markit

    Convert files and URLs to Markdown. An agent skill from shift-labs-ai/markit.

    1.3k GitHub stars~299 tokensUpdated 1 mo ago
    Documents & OfficeAuto-check passed
  • Deepxiv Baseline Table

    DeepXiv/deepxiv_sdk

    Build a markdown baseline table for a research topic using deepxiv search, brief, head, and experiment-section reads, extracting paper title, URL, open-source status, datasets, benchmark scores, and…

    804 GitHub stars~1.6k tokensUpdated 1 mo ago
    Documents & OfficeAuto-check passed
  • Openclaw Ghsa Maintainer

    SafeAI-Lab-X/ClawKeeper

    Maintainer workflow for OpenClaw GitHub Security Advisories (GHSA).

    1k GitHub stars~728 tokensUpdated 1 mo ago
    Documents & OfficeAuto-check passed
  • Fetch Markdown Specs

    tats-u/markdown-cjk-friendly

    Read if you want to refer to the CommonMark/GFM specifications

    167 GitHub stars~179 tokensUpdated yesterday
    Documents & OfficeAuto-check passed
  • Documentation

    github/gh-aw

    Official

    Write concise Diataxis docs for gh-aw with Starlight markdown conventions.

    5.4k GitHub stars~1.9k tokensUpdated today
    Documents & OfficeAuto-check passed
  • Learn

    iurykrieger/claude-bedrock

    Ingests an external data source into the Second Brain. An agent skill from iurykrieger/claude-bedrock.

    105 GitHub stars~6.5k tokensUpdated 5 mo ago
    Documents & OfficeAuto-check: notes

More from eunomia-bpf/eunomia.dev

All 18 skills in this repo
  • Eunomia Community Radar

    eunomia-bpf/eunomia.dev

    Monitor approved eBPF, Linux, observability, and AI-infrastructure communities through watchlist-opted-in read-only Slack archives plus ordinary visible browser UI, turn the strongest daily…

    236 GitHub stars~2.5k tokensUpdated today
    Auto-check passed
  • Eunomia Research Report

    eunomia-bpf/eunomia.dev

    Research, write, validate, and publish source-grounded Eunomia Daily Reports for technical readers.

    236 GitHub stars~3k tokensUpdated today
    Auto-check passed
  • Content Launch Planner

    eunomia-bpf/eunomia.dev

    Plan contribution-first cross-platform launches for eunomia.dev content, GitHub projects, papers, tutorials, demos, and public updates.

    236 GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • Devto Publisher

    eunomia-bpf/eunomia.dev

    Prepare or publish eunomia.dev Markdown articles on DEV Community through faithful long-form syndication.

    236 GitHub stars~1.7k tokensUpdated today
    Auto-check: notes
  • Eunomia Social Radar

    eunomia-bpf/eunomia.dev

    Monitor the continuing public performance and conversation around Eunomia blogs, reports, projects, and platform posts.

    236 GitHub stars~1.6k tokensUpdated today
    Auto-check passed
  • Hackernews Publisher

    eunomia-bpf/eunomia.dev

    Prepare or publish Hacker News submissions and follow-up drafts for eunomia.dev content, GitHub projects, papers, demos, and Show HN style launches.

    236 GitHub stars~827 tokensUpdated today
    Auto-check passed

Works with

Questions about Juejin Publisher

What does Juejin Publisher do?

Prepare or publish eunomia.dev Markdown articles on Juejin. An agent skill from eunomia-bpf/eunomia.dev. dev.dev Markdown articles on Juejin.

When should I use Juejin Publisher?

Juejin Publisher fits situations like: asked to create; record a Juejin draft; article from repository Markdown.

How do I install Juejin Publisher in Claude Code?

Run `npx skills add eunomia-bpf/eunomia.dev --skill juejin-publisher -a claude-code`. Or copy the skill folder (.agents/skills/juejin-publisher in eunomia-bpf/eunomia.dev) into .claude/skills/juejin-publisher in your project. Claude Code loads it when a task matches its description.

How do I install Juejin Publisher in Codex?

Run `npx skills add eunomia-bpf/eunomia.dev --skill juejin-publisher -a codex`. Or copy the skill folder (.agents/skills/juejin-publisher in eunomia-bpf/eunomia.dev) into .agents/skills/juejin-publisher in your project. Codex loads it when a task matches its description.

Can I use Juejin Publisher in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add eunomia-bpf/eunomia.dev --skill juejin-publisher -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/juejin-publisher, .gemini/skills/juejin-publisher, .github/skills/juejin-publisher and .opencode/skills/juejin-publisher in your project.

What does Juejin Publisher need to run?

SKILL.md names no scripts, command-line tools or credentials: Juejin Publisher is instructions for the agent only.

Does Juejin Publisher access the network?

SKILL.md names 1 domain. In commands or code: juejin.cn; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Juejin Publisher safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Juejin Publisher use?

Juejin Publisher is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Juejin Publisher use?

About 4.8k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.1k tokens, read only when the agent opens those files.

What are the alternatives to Juejin Publisher?

Skills that share tags, products or a category with Juejin Publisher: Markit (shift-labs-ai/markit, 1.3k stars), Deepxiv Baseline Table (DeepXiv/deepxiv_sdk, 804 stars), Openclaw Ghsa Maintainer (SafeAI-Lab-X/ClawKeeper, 1k stars) and Fetch Markdown Specs (tats-u/markdown-cjk-friendly, 167 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Juejin Publisher?

eunomia-bpf (a GitHub organization) maintains it in eunomia-bpf/eunomia.dev, which has 236 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on October 11, 2026.

Source: eunomia-bpf/eunomia.dev on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.