安全扫描
OpenClaw
安全
high confidenceThe skill's files, instructions, and optional credential handling are coherent with its stated purpose of automating Tistory publishing via a local Playwright CDP; nothing requests unrelated credentials or hidden network exfiltration.
评估建议
This skill appears to do what it claims: automate Tistory blog publishing by controlling a local OpenClaw/Playwright browser instance. Before installing or running it: (1) verify you run the OpenClaw Chrome CDP on a trusted local host (default 127.0.0.1:18800); (2) avoid supplying plaintext Kakao credentials unless necessary — prefer logging into the OpenClaw browser manually and using publish.sh without running login.sh; (3) test on a non-production blog or with --private to confirm behavior be...详细分析 ▾
✓ 用途与能力
Name/description (Tistory publish via Playwright CDP) matches the included scripts and helper JS. Declared runtimes (python3, playwright, optional node) and the requirement to connect to an OpenClaw Chrome CDP are appropriate for browser automation. No unrelated cloud or service credentials are requested.
ℹ 指令范围
SKILL.md and scripts restrict actions to opening the blog newpost page, injecting helper JS, manipulating TinyMCE DOM, uploading local banner files, and clicking publish. The only potentially sensitive action is the optional scripts/login.sh flow which reads a user-supplied credential file and automates a Kakao login (expected for session recovery). The publish path explicitly does not read credentials. No instructions instruct reading arbitrary system files, shell history, or sending data to third-party endpoints beyond Tistory/Kakao pages.
✓ 安装机制
No remote install/download step is declared (instruction-only install). All code is bundled with the skill. No external archive URLs, shorteners, or post-install fetches are used. Runtime dependencies (Playwright, optional Node canvas packages) are typical for the stated functionality.
ℹ 凭证需求
The skill declares no required environment variables; an optional credential file or TISTORY_CRED_FILE may be used only by scripts/login.sh for Kakao login. Requesting an email/password for login is proportionate to the optional login use-case, but the credential file is plaintext JSON or key:value — this is a sensitivity to consider before using login.sh.
✓ 持久化与权限
Skill does not request always:true or other elevated persistence. It does not modify other skills or system-wide agent settings. It operates by connecting to a local OpenClaw CDP and running transient browser automation.
安全有层次,运行前请审查代码。
运行时依赖
无特殊依赖
版本
latestv5.1.42026/3/2
Remove internal templates (mk-review, anthropic-daily, openclaw-release). login.sh requires --cred-file arg. No internal paths in published code.
● 无害
安装命令 点击复制
官方npx clawhub@latest install tistory-publish
镜像加速npx clawhub@latest install tistory-publish --registry https://cn.clawhub-mirror.com
技能文档
티스토리 블로그 범용 자동 발행 스킬. 어떤 형식의 글이든 자동 발행할 수 있습니다.
Tistory Open API 종료(2024.02) 이후 유일한 자동화 경로인 브라우저 자동화를 제공합니다.
전제 조건
- OpenClaw 브라우저 서비스 (Chrome CDP, 기본 port 18800)
- 티스토리 카카오 로그인 완료 (OpenClaw Chrome에서)
- Python 3 + Playwright (
pip install playwright) - 节点.js 18+ (배너 생성 시, 선택)
- (선택) 카카오 자격증명 파일 — 로그인 세션 만료 시 복구용 (
scripts/登录.sh --cred-file <경로>)
{"email": "...", "密码": "..."}
- 또는 键-值 형식: email: ...\npassword: ...
- 发布.sh는 자격증명을 읽지 않음 (로그인은 登录.sh에서만 처리)구조
tistory-publish/
├── SKILL.md # 이 파일
├── scripts/
│ ├── tistory-publish.js # 코어 — 에디터 조작 함수 모음
│ ├── publish.sh # 범용 발행 스크립트
│ └── login.sh # 카카오 로그인 세션 복구
└── templates/
└── simple-post/ # 예시: 단순 글 발행
└── RUNBOOK.md
빠른 시작
# 가장 단순한 발행
bash scripts/publish.sh \
--title "글 제목" \
--body-file body.html \
--category "카테고리명" \
--blog "your-blog.tistory.com"# 매경 리뷰 (템플릿 사용)
bash scripts/publish.sh \
--template mk-review \
--article-title "기사 제목" \
--body-file body.html \
--banner /tmp/banner.jpg \
--tags "매경,경제뉴스"
# 배너 + 태그 + 비공개
bash scripts/publish.sh \
--title "글 제목" \
--body-file body.html \
--category "카테고리명" \
--banner /tmp/banner.jpg \
--tags "태그1,태그2,태그3" \
--private
발행 스크립트 옵션 (发布.sh)
| 옵션 | 필수 | 설명 |
|---|---|---|
--title | ✅ | 글 제목 |
--body-file | ✅ | 본문 HTML 파일 경로 |
--category | ✅ | 카테고리 이름 (에디터에 표시되는 이름 그대로) |
--template | 템플릿 preset (mk-review, simple-post) | |
--article-title | mk-review용 기사 제목 (자동 날짜 접두사) | |
--tags | 쉼표 구분 태그 목록 | |
--banner | 배너 이미지 파일 경로 | |
--blog | 블로그 도메인 (기본: tistory.com 첫 번째 블로그) | |
--cdp-port | OpenClaw Chrome CDP 포트 (기본: 18800) | |
--helper | tistory-publish.js 경로 (기본: scripts/ 내) | |
--private | 비공개 발행 |
템플릿 preset
| 이름 | 카테고리 | 블로그 | 제목 형식 | 배너 |
|---|---|---|---|---|
simple-post | (직접 지정) | (직접 지정) | (직접 지정) | 선택 |
자신만의 preset을 추가하려면templates/아래에 폴더를 만들고publish.sh --template <이름>으로 사용하세요.
자동 처리 항목
스크립트가 순서대로 처리:
- 새 글 페이지 열기
- JS 헬퍼 함수 주입
- 카테고리 선택 (ARIA combobox → Playwright click)
- 제목 입력 (base64 디코딩으로 한글 처리)
- 본문 HTML 삽입
- 배너 이미지 업로드 (첨부→사진 메뉴 → file 输入框)
- OG 카드 생성 (placeholder URL → Enter 키 → 카드 렌더링)
- 대표이미지 설정
- 태그 등록
- 발행 (공개/비공개)
본문 HTML 작성 규칙
태그 사용- 단락 = 여러 문장 묶음 (
하나에 2~4문장) - OG 카드 위치:
- 구분선:
템플릿 추가하기
templates/ 디렉토리에 새 폴더를 만들어 자신만의 워크플로우를 추가할 수 있습니다:
templates/my-template/
├── RUNBOOK.md # 발행 순서
├── TEMPLATE.md # 원고 작성 템플릿
└── banner.js # 배너 생성 스크립트 (선택)
주요 JS 함수 (tistory-发布.js)
콘텐츠
insertContent(html)— TinyMCE에 HTML 삽입buildBlogHTML({intro, articles})— 구조화된 데이터 → HTML 변환
OG 카드
getOGPlaceholders()— placeholder URL 목록prepareOGPlaceholder(url)— placeholder → URL 텍스트 교체verifyOGCard(url)— 카드 렌더링 확인
메타데이터
setTags(tags[])— 태그 등록setRepresentImageFromEditor()— 대표이미지 설정
배너
verifyBannerUpload()— 업로드 확인
알려진 제약
isTrusted=假이벤트 무시 → OG/태그에 우회 로직 필요- 카테고리가 ARIA combobox → Playwright click 필요
- 대표이미지 셀렉터가 Tistory 업데이트마다 변경 가능
변경 이력
CHANGELOG.md 참조
数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制
免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制