Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -426,7 +426,7 @@ codex plugin add yichen-grok-consult@yichen-skills

### B) Enable `yichen-x-article-draft-uploader`

1. Install the pinned `x-article-draft-uploader-v1.0.0` tag by following the fail-safe command in the Skill README
1. Install the pinned `x-article-draft-uploader-v1.0.1` tag by following the fail-safe command in the Skill README
2. Install the exact Python dependencies from the Skill's `requirements.txt`, then run `python3 -m playwright install chromium`
3. Make sure Chrome is already logged in to X; Ailu users can import cookies from Chrome, paste JSON, or choose a JSON file in Settings
4. Say "upload this Markdown article to X Articles draft" or run the script directly
Expand Down
2 changes: 1 addition & 1 deletion README.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -425,7 +425,7 @@ codex plugin add yichen-grok-consult@yichen-skills

### B)启用 `yichen-x-article-draft-uploader`

1. 按 Skill README 的防覆盖命令安装固定 tag `x-article-draft-uploader-v1.0.0`
1. 按 Skill README 的防覆盖命令安装固定 tag `x-article-draft-uploader-v1.0.1`
2. 从 Skill 的 `requirements.txt` 安装精确 Python 依赖,再执行 `python3 -m playwright install chromium`
3. 确认 Chrome 已经登录 X;Ailu 用户可在设置页选择从 Chrome 导入、粘贴 JSON 或选择 JSON
4. 直接说“把这篇 Markdown 上传到 X Articles 草稿”,或手动运行脚本
Expand Down
43 changes: 43 additions & 0 deletions yichen-x-article-draft-uploader/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
X Article Draft Uploader Personal Learning and Non-Commercial Use License

Copyright (c) 2026 Yichen

This Skill is source-available for personal learning, research, and
non-commercial personal workflow use only.

Permission is granted to view, copy, study, and modify this Skill for personal
non-commercial purposes, subject to all of the following conditions:

1. Commercial use requires prior explicit written authorization from the
copyright holder. Commercial use includes client delivery, paid products or
services, internal company deployment, marketplace packaging, course
bundling, agency work, and any revenue-generating or business-operational
purpose.

To request commercial authorization, contact the copyright holder on
WeChat at `yichen365ai` and include `Commercial Authorization` in the
verification message. A request or inquiry does not grant permission;
commercial use is allowed only after explicit written authorization is
received.

2. You may not publicly redistribute, mirror, package, sublicense, or market
this Skill or a derivative as a competing Skill, marketplace item, SaaS
component, course asset, agency deliverable, or company toolkit without
prior written authorization.

3. Preserve this license and the applicable third-party notices in any
permitted private copy or modification.

4. Third-party portions remain governed by their original licenses. Nothing in
this license removes rights granted directly by those third-party licenses.
See the repository root `THIRD_PARTY_NOTICES.md` for details.

5. This license applies only to the `x-article-draft-uploader` Skill. It does
not alter the GNU AGPL-3.0-or-later license of the separately distributed
Ailu project.

THE SKILL IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, SECURITY, OR FITNESS FOR
A PARTICULAR WORKFLOW. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM,
DAMAGE, LOSS, OR OTHER LIABILITY ARISING FROM USE OF THIS SKILL.
17 changes: 13 additions & 4 deletions yichen-x-article-draft-uploader/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@

## 版本与兼容性

- 当前固定版本:`1.0.0`
- Git tag:`x-article-draft-uploader-v1.0.0`
- 当前固定版本:`1.0.1`
- Git tag:`x-article-draft-uploader-v1.0.1`
- 已按 Ailu `0.2.0` 的 `x-article-persistence-v1` 结果契约核对
- 固定版本只创建 X Article 草稿,不包含最终发布动作

Expand All @@ -48,7 +48,7 @@ Ailu 能从 `~/.agents/skills/x-article-draft-uploader/` 或
exit 1
fi
npx --yes skills@1.5.22 add \
"https://github.com/mcncarl/yichen-skills/tree/x-article-draft-uploader-v1.0.0/yichen-x-article-draft-uploader" \
"https://github.com/mcncarl/yichen-skills/tree/x-article-draft-uploader-v1.0.1/yichen-x-article-draft-uploader" \
--skill x-article-draft-uploader --global --agent codex --copy --yes
)
```
Expand Down Expand Up @@ -228,6 +228,7 @@ X 会弹出媒体编辑层。必须点击 `应用`,否则编辑器会被 mask
x-article-draft-uploader/
├── SKILL.md
├── README.md
├── LICENSE
├── VERSION
├── requirements.txt
├── agents/
Expand All @@ -246,6 +247,14 @@ x-article-draft-uploader/

## License

Personal Learning and Non-Commercial Use License. See the repository root `LICENSE`.
本 Skill 仅允许个人学习、研究和非商业个人工作流使用。客户交付、付费产品或服务、
公司内部部署、市场打包、课程打包及其他商业用途,必须事先取得作者明确的书面授权。

如需申请商业授权,请添加微信 `yichen365ai`,并在验证信息中备注 `商业授权`。
仅发送好友申请或咨询不代表已经获得授权;收到明确书面授权后方可商用。

完整条款见本目录的 [`LICENSE`](LICENSE)。该限制只适用于
`x-article-draft-uploader` Skill,不改变 Ailu 核心的 AGPL-3.0-or-later 许可;
第三方材料继续适用各自许可证和仓库根目录的 `THIRD_PARTY_NOTICES.md`。

部分 Markdown 解析流程参考并迁移自 `wshuyi/x-article-publisher-skill`,详见仓库根目录 `THIRD_PARTY_NOTICES.md`。
8 changes: 8 additions & 0 deletions yichen-x-article-draft-uploader/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,14 @@ description: 将 Obsidian 或本地 Markdown 文章上传到 X/Twitter Articles

# X Article Draft Uploader

## 许可与商业授权

本 Skill 仅允许个人学习、研究和非商业个人工作流使用。客户交付、付费产品或服务、
公司内部部署、市场打包、课程打包及其他商业用途,必须事先取得作者明确的书面授权。
申请商业授权请添加微信 `yichen365ai`,并在验证信息中备注 `商业授权`;收到明确书面
授权前不得商用。完整条款见同目录 [`LICENSE`](LICENSE)。该限制只适用于本 Skill,
不改变 Ailu 核心的 AGPL-3.0-or-later 许可;第三方材料继续适用各自许可证。

## 核心原则

只创建草稿。除非用户明确确认可以公开发布,否则不要点击 X 最终的 `发布` 按钮。
Expand Down
2 changes: 1 addition & 1 deletion yichen-x-article-draft-uploader/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.0.0
1.0.1
11 changes: 9 additions & 2 deletions yichen-x-article-draft-uploader/tests/test_local_contracts.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,11 +59,18 @@ def test_release_is_versioned_and_docs_pin_the_tag(self):
version = (SKILL_ROOT / "VERSION").read_text(encoding="utf-8").strip()
readme = (SKILL_ROOT / "README.md").read_text(encoding="utf-8")

self.assertEqual(version, "1.0.0")
self.assertIn("x-article-draft-uploader-v1.0.0", readme)
self.assertEqual(version, "1.0.1")
self.assertIn("x-article-draft-uploader-v1.0.1", readme)
self.assertIn("skills@1.5.22", readme)
self.assertNotIn("tree/main/yichen-x-article-draft-uploader", readme)

license_text = (SKILL_ROOT / "LICENSE").read_text(encoding="utf-8")
instructions = (SKILL_ROOT / "SKILL.md").read_text(encoding="utf-8")
self.assertIn("Commercial use requires prior explicit written authorization", license_text)
self.assertIn("yichen365ai", license_text)
self.assertIn("商业用途,必须事先取得作者明确的书面授权", instructions)
self.assertIn("不改变 Ailu 核心的 AGPL-3.0-or-later 许可", instructions)

requirements = (SKILL_ROOT / "requirements.txt").read_text(encoding="utf-8").splitlines()
self.assertEqual(requirements, ["playwright==1.58.0", "pycryptodome==3.23.0"])

Expand Down