SuperAPI AI Directory

soia-pkm-compose-article-draft

Writing & research

View repository

Updated 10-16 08:43

About this skill

soia-pkm-compose-article-draft

The PKM loop'swriting stage (write): turn the viewpoints produced by distill into a publishable article draft.

Client-readable description

What this skill can do

Write the viewpoints distilled by distill into a finished draft. Use the user's viewpoints as the skeleton and vault excerpts as the material to generate an article that can be handed off to publish. You can specify a WeChat Official Account/Zhihu/essay style

What the client wants What the skill will do What the client can see
Complete the work covered by this skill Read the user request, necessary context, and this skill's main workflow, and execute the minimal reliable steps The client will see Obsidian/vault file changes, terminal logs, generated artifact paths, and the final receipt.
Missing dependencies, permissions, configuration, or keys Stop actions that require external state and clearly state what is missing Install commands, application addresses, configuration paths, or questions that require client confirmation
Execution completed Summarize successes, skips, failures, file changes, and verification results A completion receipt that can be copied into a ticket/log

How the client uses it

  1. Describe the goal in natural language and provide the necessary inputs: files, URLs, repos, workspaces, proposals, vaults, or platform account status.
  2. The Agent first determines whether this skill is triggered, then checks dependencies, configuration, permissions, and risky actions.
  3. For actions that can be dry-run or previewed, provide a preview first; for actions involving deletion, overwriting, sending, publishing, or writing remote state, ask for client confirmation first.
  4. After execution, verify the real output; do not substitute "looks successful" for evidence.
  5. The final reply must give the client a visible summary: what was done, log summary, file changes, issues, and next steps.

Dependencies and installation

Install this skill (single skill):

npx skills add soia-team/soia-open-skills -g -a '*' -s soia-pkm-compose-article-draft -y

Configuration conventions:

~/.config/soia-skills/soia-open-skills/soia-pkm/soia-pkm-compose-article-draft/config.yml
SOIA_PKM_COMPOSE_ARTICLE_DRAFT_CONFIG_FILE=<custom-config-path>
  • If this skill does not need private configuration, you may skip creating config.yml。
  • If an API key, cookie, session, provider home, or local path is needed, it can only be placed in a private config.yml, the process environment, or the provider's own login state; it must not be written into the repository, vault body, or logs.
  • Strong dependencies, optional dependencies, and third-party skill relationships must be based on the "dependencies / prerequisites / resources / boundaries" description following this SKILL.md ; if it is not clearly written, add the description first or ask the client, do not guess.
  • Third-party skills may only declare dependencies and installation methods; do not directly modify third-party skill files.

Logs and completion receipt

Every execution must let the client see the process and results. Minimum receipt format:

完成:<一句话说明本次完成了什么>。

日志摘要:
- started: <检查到的输入/配置/依赖,不打印秘密值>
- processed: <数量或范围>
- created/updated: <数量或路径>
- skipped/failed: <数量和原因>

文件变化:
- <绝对路径或“未改动文件”>

验证:
- <运行过的检查、命令或人工核对点>

问题与下一步:
- <缺 key / 缺依赖 / 需要客户确认 / 建议下一条命令;没有则写“无”>

Core principles

  • The viewpoints are yours, the article is yours. compose uses the viewpoints you distilled as the skeleton and the excerpts/articles in the vault as arguments, organizing them into a coherent article.Do not invent viewpoints out of thin air, and do not add judgments you have not expressed。
  • If material is missing, ask; do not make it up.

Workflow

  1. Collect materials:
    • Single piece → an article's ## 我的看法 + ## 原文 summary
    • Topic → the output of distill mode B's 50_草稿/…观点综述.md, or the "My take" on multiple pieces under a MOC
  2. Confirm angle and style: first read the reader and tone positioning for the corresponding platform in 00_Obsidian系统/个人说明书.md , and set the tone accordingly; only confirm this piece's differences (specific angle, title direction) with the user, no longer asking from scratch "who am I / who is the reader / what style". Only fall back to asking the user when the personal manual lacks this file or the platform definition.
  3. Build structure: opening (hook/question) → body (your viewpoint + arguments) → ending (elevation/action).First give an outline for the user to confirm, then start writing.
  4. Write the draft: write according to the outline, with your viewpoint as the main thread and excerpts / articles as supporting evidence (use [[]] double links to note the source).
  5. Save the draft:<vault-drafts-dir>/YYYY-MM-DD-<标题>.md,frontmatter tags:[草稿]、status:草稿、source_notes:[[…]](source notes).
  6. Receipt: inform the draft path, word count, and structure, and prompt "tell me which paragraph to change; once satisfied, choose the publish-* family according to the target platform".

Title process

After finishing the first draft (after step 4 of the process, before saving the draft), pick at least 3 candidate titlescovering 2 different formulas from the table below and give them to the user to choose; do not decide for the user:

Hook formula Wording Example
Number rundown Quantify the scope with numbers Build a sustainable reading system in three steps
Counterintuitive Challenge the reader's default assumptions You think the more you read the better? Actually the opposite
Question Directly pose a question the reader cares about Why do you read many books but can't remember them?
Contrast/conflict Set up the tension between two approaches/viewpoints Others hoard books, I hoard viewpoints
Result promise Directly state what the reader will get after reading After reading this, you can build your own reading system
Scenario immersion Bring the reader into a specific scenario When you scroll your phone late at night, what are you avoiding
Authority backing Cite credible sources/data as support Harvard research finds: fragmented reading is stealing your focus
Suspense/gap Leave an information gap to lure clicks I deleted 90% of my reading notes, keeping only this one

De-AI self-check

Before submitting, self-check against this list of high-frequency issues and lightly revise anything found: formulaic openings (in this era, with the development of...), empty buzzwords (excellence, disruptive), fake aphorisms (sound punchy but add no information), overuse of dashes, bullet stacking (things that could be natural paragraphs but are forcibly split into lists), and sentences that are smooth individually but have no information progression between paragraphs (every sentence reads well, but together there is no main thread).

Do in most casesLight revision: only address the specific issues hit by the list, do not rewrite the whole text. If the original draft clearly does not look like a finished piece (like a material-organizing draft, outline draft, or first AI draft), escalate toDeep revisionand explain the reason to the user; the deep revision output is written to a new file and does not overwrite the first draft.

Boundaries

  • Only place in 50_草稿/, do not touch the original excerpted text.
  • Viewpoints must come from the user (distill output or direct dictation); the AI does not fabricate positions.
  • When citing vault content, use a double link [[]] to indicate it.

Closed-loop position

clip(收) → organize(整理) → distill(点) → ★compose(写) → publish(发)

Upstream distill provides viewpoints; downstream publish adapts the finished text for multi-platform publishing.


Receipt after completion

After executionmustoutput to the user (do not quietly finish and say nothing):

  1. What was done — summarize the completed work in one sentence.
  2. File changes — list newly created / modified / moved files (full paths); if no files were changed, state "no files changed".
  3. Next steps — optional follow-up suggestions (such as the next skill to connect to).