⚙️ Automated Collaboration Protocol (required reading for every session)
The user only does two things: upload videos to Douyin + periodically provide operational data. Everything else is done by the Agent.
Complete Loop (Agent proactively driven, no user instruction needed)
┌─────────────────────────────────────────────────────────────┐
│ LOOP: Agent 主动执行,用户只在两个节点介入 │
│ │
│ [Agent] 搜索 N 条匹配素材 │
│ ↓ 风格检查(STEP 1.5) │
│ [Agent] 下载 → 字幕检查 → (字幕版|環境音版) → 封面 → 文案 │
│ ↓ 告知用户:「📁 去 ~/personage/shizuka-na-tabi/📦発布包/<地名>/ 取件」
│ [User] 上传到抖音 │
│ ↓ 用户说:「已上传」 │
│ [Agent] 删除本地文件 + 更新発布記録 + git push │
│ ↓ 等待数据(发布后 3 天) │
│ [User] 提供运营数据(截图或文字) │
│ ↓ │
│ [Agent] 分析数据 → 更新 skill 规律 → 优化下一条策略 → LOOP │
└─────────────────────────────────────────────────────────────┘
Session Startup Protocol (executed immediately after loading the skill each time)
- Read
~/personage/shizuka-na-tabi/pipeline.md— confirm the current status - Read
~/personage/shizuka-na-tabi/静かな旅_発布記録.md— confirm published locations - Determine the current stage:
- There are finished pieces waiting to be uploaded → tell the user the pickup path + copy
- pipeline production queue < 2 items → proactively search for new material to replenish
- The user brings data → analyze the data first, then decide the next step
- Idle → proactively start searching for the next batch of material
Automatically executed by the Agent after upload confirmation
After the user says "uploaded",with no additional instruction needed, the Agent immediately:
# 1. 删除本地大文件(统一在仓库根目录,干净的来干净的走)
rm -f ~/personage/shizuka-na-tabi/<地名>.mp4
rm -rf ~/personage/shizuka-na-tabi/<地名>_clips/
rm -rf ~/personage/shizuka-na-tabi/📦発布包/<地名>/
rm -f /tmp/<地名>_ja.srt /tmp/<地名>_zh.srt
# 2. 更新発布記録(标注发布日期)
# 3. 更新 pipeline.md(移入已完成)
# 4. git commit + push
# 5. 检查 pipeline 制作队列,若 < 2 条立即开始搜索下一个素材
Data Feedback Analysis Protocol
After the user provides data, the Agent automatically:
- Parse the metrics (2s bounce rate / 5s completion rate / average duration / follower growth)
- Compare with the "Known Patterns" table and extract new patterns
- Update the "Known Patterns" table in SKILL.md
- Adjust the topic selection/editing strategy for the next video in the pipeline
- git commit + push (persist the patterns)
Account Persona
Positioning: a Chinese person settled in Japan, recording the quiet around them through the eyes of a foreigner.
- Not a tourist (superficial sightseeing), not Japanese (taking it for granted) — this perspective is naturally rare
- Narrative tone: first person, but restrained; do not say "I think it's beautiful", instead describe details so readers feel it themselves
- The main text does not explain "why come to Japan"; simply weave the sense of daily life naturally into the scene descriptions
- In the comments section, real interaction is fine; occasionally mention which city you live in / the feeling of the season
⚠️ Persona perception gap discovered on 2026-04-13 (from comment analysis):
| Dimension | Original setting | Actual audience perception | Strategy |
|---|---|---|---|
| Identity | A Chinese person settled in Japan (foreigner) | Thought it was posted by a Japanese person | Maintain the current content style (pure Japanese + restrained narration + pure ambient sound lets viewers accept it comfortably), butclearly state the "Chinese person in Japan" identity in the bio + occasional comment replies, so that people who identify with this layer convert into deep fans |
| Audience | Chinese viewers see Japan through a foreigner's perspective | Chinese viewers think they are watching a Japanese person's life in Japan | It's fine not to correct it— as long as the viewer experience is good; but through the bio/occasional Chinese titles (such as "7 a.m....") you can give the "Chinese people who want to settle in Japan" group a hook |
| Fan stickiness | Based on "foreigner resonance" | Based on "longing for travel in Japan" | Add a layer: the projection of "I also want to live like this" → strengthen the bio by adding "lives in Japan / no itinerary planning" |
Inference: being mistaken for Japaneseis not a failure, but rathera byproduct of extremely pure content. Continue using Japanese + ambient sound + first-person restrained narration. But the personal biomust clearly indicate identity, so that fans willing to follow deeply can dig out the differentiated value of the "Chinese person in Japan" layer.
Personal bio reference (use this version, including identity marker):
在日本的中国人 / 不做攻略
把身边没人注意的角落,剪给你看
🎧 建议戴耳机
Account iron rules (must be followed every time)
| Rule | Description |
|---|---|
| Title / Body text | Chinese or Japanese are both acceptable(2026-04-22 revision: Bilibili competitor data proves that Chinese titles have a search hit rate far higher than Japanese; both main and sub titles can be in Chinese. The body text maintains a restrained narrative style, unchanged) |
| Douyin topic tags | Maximum 5 |
| Audio / ambient sound | Must be pure ambient sound(water sounds · wind sounds · birdsong · footsteps · rain sounds · insect sounds · bells).Strictly prohibitedappearance of the blogger's spoken narration · tour guide commentary · channel announcement · background BGM lyrics, etc.any human voice. Any material with human voice must bedirectly eliminated during the style check stage |
| Cover frame extraction | Must be from merged.mp4,Absolutely must notuse _final.mp4(burned-in subtitles) |
| Cover text | After generation, visually confirm that all text is clear and readable; if the title area background is too bright, switch frames or darken the central gradient |
| Subtitle style | Japanese (top) + Chinese (bottom), PingFang SC 16px, white outline, no black background (only retained under the main channel of the ambient sound version) |
| Video duration | 3:30 ~ 4:30(measured: 3-5min playback volume is 36% higher than 5min+, likes 63% higher) |
| Before publishing | Check 発布記録.md to avoid repeatedly publishing the same material |
Project directory structure
~/Downloads/静かな旅/
├── 静かな旅_SOP.md # 详细操作说明
├── 静かな旅_発布記録.md # 发布记录(每次发布后更新)
├── make_covers.py # 封面生成脚本
├── douyin_publish.py # 抖音半自动发布脚本
├── kanazawa_batch.py # 金沢剪辑模板(新视频改路径复用)
└── takayama_batch.py # 飛騨高山剪辑模板
Complete workflow (new video)
STEP 1 · Duplicate check + material confirmation
# 先看发布记录,确认素材未发布过
cat ~/Downloads/静かな旅/静かな旅_発布記録.md
STEP 1.5 · Style check (mandatory for new material, before full download)
Purpose: before downloading 2-4GB 4K videos, confirm that the material's visual style meets the account requirements.
1.5.1 Channel-level blacklist check (first gate)
# 先查 uploader,命中黑名单直接放弃,不进入后续
yt-dlp --print "uploader:%(uploader)s channel:%(channel)s" '<URL>' 2>/dev/null
# 若 uploader/channel 含 "Ambient"/"Ambient Exploration" → 立即放弃
1.5.2 Multi-time-point frame extraction (cover dawn/mid-section/bright scenes to avoid missing watermarks)
# 从流 URL 直接抽帧(不下载文件,更快更稳)
URL=$(yt-dlp -f "worstvideo[ext=mp4]+worstaudio/worst/worst" --get-url '<URL>' 2>/dev/null | head -1)
DURATION=$(yt-dlp --print "%(duration)s" '<URL>' 2>/dev/null)
# 6 个时间点:开头 / 10% / 30% / 50% / 70% / 90%(避免 0-60s 全暗遮蔽水印)
for frac in 0.02 0.10 0.30 0.50 0.70 0.90; do
t=$(python3 -c "print(int($DURATION * $frac))")
ffmpeg -y -ss $t -i "$URL" -frames:v 1 -q:v 3 /tmp/style_check_${t}s.jpg 2>/dev/null &
done
wait
1.5.3 Dedicated watermark check: enlarge the lower-left corner area
# 对 50%/70% 位置的帧放大左下角 400×200px(水印常见位置)
for frac in 0.50 0.70; do
t=$(python3 -c "print(int($DURATION * $frac))")
ffmpeg -y -ss $t -i "$URL" -frames:v 1 -vf "crop=500:200:0:in_h-200" \
-q:v 2 /tmp/style_check_wm_${t}s.png 2>/dev/null &
done
wait
# AI 目视这些放大图 → 任何"半透明水印"一律拒绝
Show all frames to the user, check item by item:
Blacklisted channels (skip directly, do not perform style check):
- Ambient Exploration — the entire video has the "ambient exploration" watermark running through the bottom left corner,invisible on dark backgrounds, only exposed in bright scenes. Known problematic videos:
NGBAJw1jeXA(Shirakawa-go),dVemOMMb_ek(Hida-Furukawa),_N30PVMDRTM(Shodoshima),uXVXZ8eozv4(Higashiyama)oE9_iDJkNTI(Kamikochi dawn) — 2026-04-13 pitfall, vertical-screen crop rescue- Channel-level blacklist:yt-dlp
--get-filename --print "%(uploader)s"Check the uploader field; skip anything containing "Ambient"
- Trip Matter — 2026-04-20 pitfall (Fushimi Inari Senbon Torii 14min). Top 60s title card (near pure-white overlay), bottom semi-transparent watermark full-width band 44-96% coverage.Lesson: The red base color of Senbon Torii lowered the watermark contrast; it wasn't visible when eyeballing the 50%/70% frames, and only pixel statistics exposed it. Channel-level blacklist.
- Any channel containing blogger voiceover/guide commentary/channel announcement — blacklist any that fail the audio check
Watermark pixel self-check (STEP 1.5.2 reinforcement, mandatory for scenes with colored backgrounds such as red/green):
# 底部 100px 条带「近白像素占比」检测 → 红色底色场景水印的终极防线
DURATION=$(yt-dlp --print "%(duration)s" '<URL>' 2>/dev/null)
URL=$(yt-dlp -f "worst" --get-url '<URL>' 2>/dev/null | head -1)
for frac in 0.30 0.50 0.70; do
t=$(python3 -c "print(int($DURATION * $frac))")
ffmpeg -y -ss $t -i "$URL" -frames:v 1 -vf "crop=iw:100:0:ih-100" /tmp/wm_${t}s.png 2>/dev/null
done
python3 -c "
from PIL import Image; import os
for f in sorted(os.listdir('/tmp')):
if f.startswith('wm_'):
img = Image.open(f'/tmp/{f}').convert('RGB'); px = img.load(); w, h = img.size
hi = sum(1 for x in range(w) for y in range(h) if all(c > 200 for c in px[x, y]))
r = hi*100/(w*h); flag = '⚠️水印疑似' if r > 30 else '✓'
print(f'{flag} {f}: 近白像素 {r:.1f}%')
"
# 任一帧 >30% → 立即 open 帧目视二次确认,阳性即淘汰频道
| Check item | ✓ Pass | ✗ Fail (give up) |
|---|---|---|
| Is the image clean | No hardcoded text | Has shrine numbers, place-name labels, subtitle cards, progress bars |
| Narrative perspective | First-person walk (I/私は) | N-choice compilation, explanatory narration, general recommendations |
| Footage type | Single-location continuous travel | Multi-location spliced compilation |
| Creator style | Japan Travel Walk type (Mona, etc.) | Travel blogger recommendations, guide type |
| Image quality | 1080p or above, natural color tones | Over-graded, strong filters |
| Audio purity (iron rule) | Only natural ambient sound(water · wind · birds · footsteps · rain · bells · waterfall sounds) | Any human voice present: blogger voiceover · guide commentary · channel announcement · lyrical BGM → eliminate directly, do not enter subsequent workflow |
Audio check procedure(mandatory after sample download):
# 播放 60s 样本,戴耳机听全程
afplay /tmp/style_check.mp4 &
# 或用 ffmpeg 提取音频波形/频谱初筛(人声主频 80-255Hz 区间密集 = 疑似口播)
ffmpeg -i /tmp/style_check.mp4 -af "showwavespic=s=1280x240" -frames:v 1 /tmp/style_check_wave.png 2>/dev/null
Any trace of human voice → this footagegive up entirely, do not attempt "vocal removal" rescue.
After all passthen execute STEP 2 (full 4K download).
If any item fails → inform the user of the reason, delete the sample file, wait for a new URL:
rm -f /tmp/style_check.mp4 /tmp/style_check_*.png
STEP 2 · Download video (after style check passes)
yt-dlp -F '<URL>' # 查看画质(确认有 401 格式)
# 必须用 401+140 保证 4K 画质,不得降级
yt-dlp -f "401+140" --merge-output-format mp4 \
-o "~/Downloads/<地名>.mp4" '<URL>'
Image quality rules:
- Must download
401(4K/2160p) format, must not use137(1080p) or lower - If
401does not exist, use400(1440p), and inform the user - Audio fixed to use
140(m4a 128k) - Do not use
best/bestvideowildcard (may select non-4K)
STEP 3 · Path selection (default ambient-sound version)
Account iron rule: must be pure ambient sound → default to ambient-sound version. Subtitle version pathdeprecated, retained for historical reference only.
| Footage situation (STEP 1.5 passed) | Path |
|---|---|
| Pure ambient sound material (no human voice) | → Ambient sound version: execute STEP 3.5 (full-film scan) → go directly to STEP 5 (no subtitles burned, no subtitles downloaded) |
| Has human voice (even if it has built-in subtitles) | → should have been eliminated at STEP 1.5,should not reach here. If missed by mistake → abandon immediately |
This is an upgrade from "material determines the path" to "the audio iron rule determines the path". Data validation: the recent ambient sound versions (杖立/龍野/平泉) have overall bounce rate and follower growth efficiency significantly better than the early subtitle versions.
STEP 3a · Download bilingual subtitles (subtitle version, deprecated)
# 已废弃,仅保留以便理解旧 batch 脚本
bun ~/.claude/skills/baoyu-youtube-transcript/scripts/main.ts '<URL>' \
--languages ja --format srt --refresh -o /tmp/<地名>_ja.srt
bun ~/.claude/skills/baoyu-youtube-transcript/scripts/main.ts '<URL>' \
--languages zh-Hans --format srt -o /tmp/<地名>_zh.srt
STEP 3.5 · Full-film structural scan (mandatory for ambient sound version, optional for subtitle version)
Purpose: before writing the CLIPS dict, grasp the scene distribution, watermark positions, and surprise frame timestamps of the entire film.
# 获取流媒体 URL(不下载,直接流式抽帧)
URL=$(yt-dlp -f worst --get-url '<URL>' 2>/dev/null)
# 在 10 个均匀时间点抽帧(1h 视频 = 每 6 分钟一帧)
DURATION=3660 # 视频总秒数
for i in $(seq 1 10); do
t=$((DURATION * i / 11))
ffmpeg -y -ss $t -i "$URL" -vframes 1 /tmp/<地名>_scan_${t}.jpg 2>/dev/null &
done
wait && echo "✓ 扫描完成"
AI visually inspects each frame and records:
- Which time segments have watermarks/people/indoor scenes → mark as skip
- Which time segment the "surprise frame" (Kano Delight) is in
- Overall narrative rhythm (what the opening is, where the climax is, the ending atmosphere)
Rules:
- Watermark found → skip ±60s before and after that time segment
- Surprise frame timestamp → note it down, ensure it appears within the first 90s of the merged video
- After the scan frames are done, delete:
rm -f /tmp/<地名>_scan_*.jpg
STEP 4 · AI analyzes subtitles → plan episodes
AI execution steps:
- Read
/tmp/<地名>_ja.srt, read through the full text, extract location/scene/emotion changes along the timeline - Plan episodes according to the following rules, output a structured CLIPS dict
Episode planning rules:
- The first one is a comprehensive highlight(01_highlight), covering the strongest footage of the entire film; the hook uses the best dynamic shot of the entire film
- Then split into 2–4 themed episodes, each focusing on a single location/theme, with no overlapping content
- Total duration per episode 3:30~4:30(210–270 seconds), choose 4–6 clips, each 20–60 seconds
- Better to have one fewer clip than to exceed 270 seconds
Iron rule for the first 3 seconds of the opening (North Star: follower growth/per thousand views ≥ 10, current average 5.5):
- HOOK material priority (based on measured bounce rate): rain/water surface/flowers (39-43%) > morning mist/dramatic light changes > static scenes > night scenes (55-62%, forbidden as HOOK)
- Forbidden: fade in from black screen, opening logo, subtitle introduction, any static building facade
- The "Kano surprise frame" must appear within the first 90 seconds of the merged video: if the most stunning single frame of the entire film (dramatic light change/flower rain/dispersing mist) is in the later part of the original film, it must be moved forward to the position of the 2nd segment
- Suspense takes priority over shock: a branch hanging down in the rain (what happens next?) is more effective than a static night street
AI output format (can be pasted directly into the batch script):
CLIPS = {
"01_highlight": {
"title": "精华版",
"segments": [
(秒, 秒), # MM:SS-MM:SS 场景描述 HOOK
(秒, 秒), # MM:SS-MM:SS 场景描述
# ...共4-6段,总时长 210-270 秒
],
},
"02_<主题英文>": {
"title": "<主题中文>",
"segments": [
(秒, 秒), # MM:SS-MM:SS 场景描述
# ...
],
},
# ...
}
Each segment must be followed by a comment: minute:second range + a one-sentence scene description, for manual verification. After outputting the CLIPS dict, immediately calculate the total duration of each episode (sum of e-s); if it exceeds 270 seconds, automatically trim the last segment.
STEP 5 · Generate and run the batch script
AI execution steps:
- Read the latest batch script under
scripts/batch_templates/as a template - Modify the corresponding variables depending on the path:
Subtitle version (with SRT file):
from config import PROJECT_ROOT
VIDEO = str(PROJECT_ROOT / "<地名>.mp4")
OUT = str(PROJECT_ROOT / "<地名>_clips")
JA_SRT = "/tmp/<地名>_ja.srt"
ZH_SRT = "/tmp/<地名>_zh.srt"
CLIPS = { ... } # 来自 STEP 4(字幕分析)
Ambient sound version (no subtitles, refer to tatsuno_batch.py):
from config import PROJECT_ROOT, pkg_dir
VIDEO = str(PROJECT_ROOT / "<地名>.mp4")
OUT = str(PROJECT_ROOT / "<地名>_clips")
PKGDIR = pkg_dir("<地名>")
# 不设 JA_SRT / ZH_SRT;batch 脚本跳过字幕烧录,直接输出 final.mp4
CLIPS = { ... } # 来自 STEP 3.5(全片扫描规划)
- Write to
scripts/batch_templates/<地名>_batch.py - Run:
python3 scripts/batch_templates/<地名>_batch.py - Wait for all clips to finish, verify that each
_final.mp4exists and has a duration > 200 seconds
Subtitle versionThe script automatically completes: slicing → concat → bilingual subtitle alignment → filtering out third-party traces → burning in → frame extraction → output <地名>_<key>_final.mp4
Ambient sound versionThe script automatically completes: slicing → concat → frame extraction → output <地名>_<key>_final.mp4(no subtitles)
First-person subtitle standard (must be executed every time):
The video material comes from third-party bloggers, and the subtitles may contain content that conflicts with the 静かな旅 persona. After parse_srt , beforemake_bilingual_srt , you must filter:
import re
# 需要完全删除的字幕行(第三方痕迹)
BLOCK_PATTERNS = [
r'みなさん(こんにちは|こんばんは)', # 自我介绍开场
r'(チャンネル登録|チャンネル読者)', # 频道引导
r'ご視聴ありがとう', # 片尾感谢
r'また次の動画で', # 片尾口播
r'バイバイ', # 告别语
r'今回は.{0,20}(にやってきました|を訪れ)', # 到达自白
r'わたたび|たびこ|旅系YouTuber', # 频道名
]
def filter_entries(entries):
result = []
for e in entries:
text = e['text']
if any(re.search(p, text) for p in BLOCK_PATTERNS):
continue # 完全删除
result.append(e)
return result
# 在 parse_srt 之后调用:
ja_entries = filter_entries(parse_srt(JA_SRT))
zh_entries = filter_entries(parse_srt(ZH_SRT))
Rules:
- Delete > modify: rather have no subtitles than have text that breaks the persona
- Before using new material each time, read through the beginning and end of the subtitles, and manually add channel-specific words to
BLOCK_PATTERNS - Chinese subtitle sync filtering (
zh_entriesthe same applies)
Parallel burning (multi-core acceleration, 4 clips → run simultaneously): After the main loop at the end of the script, replace the serial burn_subs call with the following pattern:
from concurrent.futures import ProcessPoolExecutor, as_completed
def process_clip(args):
key, cfg, ja_entries, zh_entries = args
# ... cut_and_merge, make_bilingual_srt, burn_subs 逻辑
return key
# 主循环改为:
tasks = [(key, cfg, ja_entries, zh_entries) for key, cfg in CLIPS.items()]
with ProcessPoolExecutor(max_workers=min(len(tasks), 4)) as ex:
futs = {ex.submit(process_clip, t): t[0] for t in tasks}
for f in as_completed(futs):
print(f"✓ {futs[f]} 完成")
Parallel rules:
- Each clip writes to its own independent directory, without competing for any files
- Neverstart two ffmpeg processes for the same output path
- If you need to rerun a single clip, first
kill $(pgrep -f "ffmpeg.*<key>")confirm there are no leftover processes before rerunning
STEP 6 · Make covers
6a · Frame extraction (the batch script already does this automatically, no manual work needed)
After the batch script runs, each clip's 封面/ directory has automatically extracted frame_005s.png frame_030s.png frame_060s.png frame_100s.png frame_150s.png。
If you need to extract a specific time point additionally:
ffmpeg -y -ss <秒> -i "~/Downloads/<地名>_clips/<key>/视频/merged.mp4" \
-vframes 1 ~/Downloads/<地名>_clips/<key>/封面/frame_<N>s.png 2>/dev/null
6b · AI frame selection + recommended parameters
AI execution steps:
- Use the Read tool to view all frames (image files) in the
封面/directory - Select the best frame for each clip according to the following rules, and give
bg_filterparameters
Frame selection rules (text readability + content representativeness):
| Good frame ✓ | Bad frame ✗ |
|---|---|
| Rain/water surface/flowers (the material type that gains the most followers) | Large areas of sky, front of white-walled buildings |
| Moments of dramatic light change (morning mist clearing/golden light) | Central bright reflections or cluttered elements |
| Center of the frame is dark or blurred | Large areas of light gray, off-white, snow scenes |
| "Kano surprise frame" takes priority (even if it is not the darkest frame) | Night scenes (poor conversion unless it is the account's North Star material) |
bg_filter reference table (selected based on frame brightness):
| Frame type | Recommended bg_filter |
|---|---|
| Dark frame (night scene/tree shade) | "saturate(0.85) brightness(0.80)" |
| Neutral frame (regular) | "saturate(0.75) brightness(0.90)" |
| Bright frame (snow/sky/white wall) | "saturate(0.55) brightness(0.65)" |
Note:bg_filter Only the background layer is compressed (z-index:0); text is at z-index:20 and is completely unaffected.
AI output format (paste directly into the COVERS list in make_covers.py):
COVERS = [
{
"key": "01_highlight/封面/cover",
"frame": "/Users/likai/Downloads/<地名>_clips/01_highlight/封面/frame_<N>s.png",
"top_label": "<地名英文大写> · <季节/特征>",
"main_title": "<日文2-4字,如 中山道>",
"sub_title": "<英文短语,如 Autumn came to the old post road>",
"mood": ["<场景句1>", "<场景句2>", "<场景句3>"],
"episode": "Episode 01 · Highlight",
"bg_pos": "center 50%",
"bg_filter": "<根据帧亮度选>",
},
# ...每条 clip 一个 entry
]
mood The three lines come from the three body sentences of the STEP 7 copy; keep them consistent with the copy.
6c · Generate & Verify
AI execution steps:
- Call the
scripts/make_covers.pyofgenerate_covers("<地名>", COVERS)interface (covers are automatically output to📦発布包/<地名>/cover_<key>.png) - Use the Read tool to view each generated cover image and confirm that all text is clearly legible
- If any text has insufficient contrast → lower the brightness (in steps of -0.1), regenerate, and repeat until it passes
STEP 7 · AI generates copy (Japanese)
AI execution steps:
- Based on the episode structure from STEP 4 + the subtitle content, generate complete copy for each clip
- Write to two locations:
~/personage/shizuka-na-tabi/<地名>_copy.txt← permanent backup tracked by git~/personage/shizuka-na-tabi/📦発布包/<地名>/copy.txt← for pickup, deleted along with the publishing package
Output format (strictly follow; do not add or remove structure):
=== 01_highlight ===
タイトル:<标题>
<场景描写句1>
<场景描写句2>
<情感收尾句>
🎧 イヤホン推奨
#标签1 #标签2 #标签3 #标签4 #标签5
---
=== 02_<key> ===
...(每条格式相同)
Title rules (revised 2026-04-22: either Chinese or Japanese is acceptable; Chinese is preferred for search hits):
| Priority | Sentence pattern | Example |
|---|---|---|
| ★★★ | Chinese · Scene + emotion | Original Chinese title examples: 「下雪的夜晚,煤气灯亮了」 (On a snowy night, the gas lamps came on); 「清晨5点,千本鸟居只有我一个人」 (At 5 a.m., I was alone at the thousand torii gates). |
| ★★★ | Chinese · Place name + rare state | Original Chinese title examples: 「银山温泉的雪夜,像走进了千与千寻」 (A snowy night at Ginzan Onsen, like stepping into Spirited Away); 「雨天一个人走在镰仓」 (Walking alone in Kamakura on a rainy day). |
| ★★★ | Japanese pattern: ~だから、~になった (Because …, … became …) | Original Japanese title: 「雨の日だから、この町が好きになった」 (Because it was a rainy day, I came to love this town). |
| ★★★ | Japanese pattern: ~にしか、~はない (Only in … can … be found) | Original Japanese title: 「白馬にしか、この三色はない。」 (These three colors exist only in Hakuba). |
| ★★ | Chinese · Direct IP association | Original Chinese title: 「灌篮高手里的那个路口,下雨天更美」 (That intersection from Slam Dunk is even more beautiful on a rainy day). |
| ★★ | Japanese pattern: ~が、~を待っていた (… was waiting for …) | Original Japanese title: 「峠を越えると、別の時代が待っていた。」 (Beyond the mountain pass, another era was waiting). |
| ★★ | Japanese pattern: ~で、~が目を覚ます (… awakens to / at …) | Original Japanese title: 「夜明け前、鐘の音で境内が目を覚ます。」 (Before dawn, the temple grounds awaken to the sound of bells). |
| ★ | Place name + situation | Original title examples: 「奈良井宿に、誰もいなかった。」 (There was no one in Narai-juku) / 「下雪的银山温泉,一个人也没有」 (A snowy Ginzan Onsen, with no one else around). |
Selection principles: Chinese titles are preferred for (1) high-recognition place names (larger search pool) · (2) IP-association types (Spirited Away/Slam Dunk, etc.) · (3) emotional descriptions (rainy days/snowy nights/early morning). Japanese titles are retained for (1) low-recognition, obscure place names (unsearchable in Chinese) · (2) atmospheric, restrained types (Japanese is more understated).
Rules for the 3 body sentences:
- Each sentence is 15-25 characters, ending with a verb
- Sentence 1: Visual/dynamic scene description (the strongest frame in the shot)
- Sentence 2: Sensory details (sound/smell/temperature/light)
- Sentence 3: Leave emotional space and suspense without summarizing. Original examples: 「ただ、歩いた。」 (I simply walked); 「雪夜里,只剩脚步声。」 (Only footsteps remained on the snowy night).
- Prohibited: Concluding remarks. Original examples: 「素晴らしい」 (Wonderful), 「太美了」 (So beautiful), 「最高でした」 (It was the best).
Hashtag allocation of 5 (fixed structure):
| Position | Type | Fixed/Variable |
|---|---|---|
| 1 | Precise place name (e.g. #奈良井宿) | Variable |
| 2 | Region/Prefecture (e.g. #長野観光) | Variable |
| 3 | Content type — original hashtags: #宿場町 (post town) / #まち歩き (town walk) / #温泉街散策 (stroll through an onsen town). | Variable |
| 4 | Mood/style — original hashtags: #ひとり旅 (solo travel) / #癒し系 (soothing) / #没入旅行 (immersive travel). | Variable |
| 5 | High-traffic tag | Fixed original hashtag: #日本旅行 (travel in Japan). |
After writing, tell the user the pickup path:~/personage/shizuka-na-tabi/📦発布包/<地名>/(video + cover + copy are all inside)
STEP 8 · Publishing rhythm (one set of multiple videos)
4 videos of the same locationpublish at the following intervals, do not post them all at once:
Day 1 → 01_highlight(精华) ← 算法推荐期,覆盖最广受众
Day 4 → 02_主题条 ← 留住精准用户
Day 8 → 03_主题条 ← 深度用户
Day 12 → 04_主题条 ← 忠实粉丝
Publishing time:8–10 PM(Douyin prime time)
STEP 9 · Final checklist
- Video duration 3:30–4:30 ✓
- Cover ready (1080×1920) ✓
- Title in Chinese or Japanese, contains place-name keywords ✓
- Exactly 5 hashtags, structure complies with the rules ✓
- Update
静かな旅_発布記録.md - after upload is completedelete all(one command, come clean and leave clean):
rm -f ~/personage/shizuka-na-tabi/<地名>.mp4 # 原片 rm -rf ~/personage/shizuka-na-tabi/<地名>_clips/ # clips + 封面帧 rm -rf ~/personage/shizuka-na-tabi/📦発布包/<地名>/ # 发布包(视频+封面+文案) rm -f /tmp/<地名>_ja.srt /tmp/<地名>_zh.srt # 字幕临时文件
Data review (check 3 days after publishing)
Core metric priority: 2s bounce rate > average watch time > profile visit rate > play count
The biggest weakness of the account at its current stage is opening retention; fix the bounce rate first, then look at conversion.
| Metric | Target value | Account current status | Problem signal |
|---|---|---|---|
| 2s bounce rate | <40% | 3-5min 42.4% / 5min+ 51.2% ⚠️ | >50% The opening hook has completely failed; change the clip |
| Average watch time | >20s | Rainy day: 16-23s ✓ / Other 5min+: ~7s ⚠️ | <10s Opening failed |
| Profile visit rate | >1% | Rainy day/Chaya District: 3.6-4.6% ✓ / Average: 1.8% | <0.5% Content did not move the audience |
| 5s completion rate | >30% | 3-5min: 29% / 5min+: 20% | <15% Dangerous |
| Follower growth/per thousand views | >5 | Rainy day + early morning + season: 13-15 ✓ / Average: 5.5 | <2 Content cannot accumulate followers |
Known patterns (from measured data, continuously updated):
Last updated: 2026-05-11 (72 items, fifth review; discovered two new patterns: seasonal mismatch + frequency reduction after a hit)
| Pattern | Data support | Confidence |
|---|---|---|
| 🔥 Seasonal mismatch = algorithm directly reduces reach (new iron rule) | Posting winter snow content at the end of April (Ginzan/Otaru/Yokote/Kusatsu) averaged only 69-232 plays (normal average 1000+, 5x lower). The algorithm has already switched to the spring traffic pool, and winter scenery search heat has dropped to zero.Winter scenery only in Nov-Feb, greenery/old roads/sea views in spring and summer, rain scenery can be posted year-round | ★★★ High (n=10) |
| 🔥 Must reduce posting frequency after a hit | After the Narai-juku hit on 4/12, 22 posts were published in 17 days (Phase 3+4); average plays fell off a cliff from 1782 to 139, and total follower growth dropped from 589 to 3. High-frequency posting dilutes the algorithm's initial traffic boost for individual posts | ★★★ High |
| 🔥 Bounce ≤35% = hit candidate (followers per thousand 20.1) | The 3 items with bounce ≤35%: average followers per thousand 20.1, 2.5x the 45-55% bounce group (8.0/thousand).Low bounce + low plays = algorithm still in cold start, observe for 7 days | ★★ Medium (small sample) |
| 🔥 Chinese titles > Japanese titles(verified across all 72 items) | Chinese titles n=52: average plays 1216, followers per thousand 7.3; Japanese titles n=19: average plays 702, followers per thousand 6.0. The gap is significant, and the pattern is upgraded to high confidence | ★★★ High |
| 🔥 Winter scenery follower growth efficiency is not low; the problem is the seasonal search pool | Winter scenery average followers per thousand 7.6 > non-winter 6.6, but average plays only 557 vs 1221. Reason: winter scenery posted in spring has a small search heat pool, insufficient initial traffic boost → posting winter scenery in winter can unlock normal play counts | ★★★ High |
| 🔥 Account takeoff period (2026-04-12~04-20) | 3-5min average plays 822→1895(+131%), followers per thousand 7.0→9.9; 5min+ almost unchanged (average plays 700, followers per thousand 6.4) → direction fully focused on 3-5min | ★★★ High |
| 🔥 Hit formula (Narai-juku, final data) | 28140 plays +433 followers 15.4/thousand, bounce 45%, 5s completion 30%. Formula = 3-5min + medium recognition + early morning + emotional verb title + low-bounce hook | ★★★ High |
| 🔥 Cover click-through rate ≠ guarantee of a hit | Narai-juku cover click-through 8.1% (premium items average 25-30%), but the algorithm gave heavy traffic due to 5s completion of 30.7%.Title + first 5 seconds determine the ceiling more than the cover | ★★★ High |
| 3-5min > 5min+(continuously verified, 72 items) | 3-5min n=44: avg plays 1268, bounce 50.4%, 5s completion 23.2%, follows per thousand 7.3; 5min+ n=27: avg plays 770, bounce 52.4%, 5s completion 19.9%, follows per thousand 6.4 | ★★★ High |
| ✨ Early morning template differentiation: needs to pair with popular place names | Narai-juku early morning 28140 plays (viral) / Kanazawa AM7 snow 14.1 per thousand (★★) / Hotaka AM5:00 795 plays +2 follows (obscure location, failure) → early morning template can only pair withmedium-to-high recognition place names | ★★★ High |
| ✨ Rainy day HOOK = lowest bounce + highest follows | Enoshima Shrine rain 435 plays 33% bounce 16.1 per thousand / Gujo Hachiman rain 884 plays 39% bounce / Kamakura rain 234 plays 17.1 per thousand | ★★★ High |
| ✨ Night view HOOK differentiation: dynamic = OK, static = banned | Tsuetate Onsen steam 1199 plays 47% bounce +17 follows; Nagasaki overhead night view 55-62% bounce | ★★★ High |
| ✨ Yokai/hidden spots = highest profile conversion | Yokai shrine 14.4 per thousand, 4.4 PV per hundred plays (average 2.0%) +13 follows | ★★ Medium |
| ⚠️ Kamakura implied-IP titles confirmed ineffective | Implying 「Slam Dunk」 bounce 51% vs direct description 35-40%, gap 16pp → for IP association use direct tags (#鎌倉 #江之电) or direct Chinese description | ★★★ High |
| ✨ 12+ minute immersive long video = suppressed by Douyin ecosystem | 346 plays 70% bounce 0 follows | ★★★ High |
| Chinese title profile visits = 0 | Deprecated | ✗ Deprecated |
| Night views banned as HOOK | Revised: static banned, dynamic OK | 🔄 Revised |
Topic selection priority
Underlying formula (revised 2026-04-14):
总涨粉 = 搜索流量池(地名认知度越高越大)× 涨粉率(差异化角度越强越高)
- Search traffic pool: Original search hashtags, ordered by traffic pool: #奈良 (Nara) #京都 (Kyoto) #镰仓 (Kamakura) #富士山 (Mount Fuji) #北海道 (Hokkaido) >> #奈良井宿 (Narai-juku) #郡上八幡 (Gujo Hachiman) >> #杖立温泉 (Tsuetate Onsen).
- Differentiation angle: early morning/rain/snow/fog/anime filming locations/seasonal limited → stand out from homogeneous competitors
- Optimal solution = popular place name + obscure angle(e.g. Nara · early morning deserted = 3000+ plays breakthrough)
- ⚠️ Trap = popular place name + popular angle(e.g. Nara Great Buddha daytime front / Kiyomizu-dera crowds = aesthetic fatigue)
- ⚠️ Ceiling = obscure place name(Tsuetate Onsen has high follow efficiency but a small search pool, so total volume is limited)
Prioritize (sorted by expected total follows):
| Priority | Material type | Reason |
|---|---|---|
| ★★★ | High-recognition place name + early morning/rain/snow differentiation | Nara 3000+ plays (large search pool) + early morning differentiation = win-win on volume and efficiency |
| ★★★ | Anime filming locations + pilgrimage angle | Kamakura (Slam Dunk) / Chichibu (Anohana) / Onomichi (Maquia) = built-in anime search traffic |
| ★★★ | Rainy days + historic streets (popular place names version) | Kyoto rainy days/Kanazawa rainy days/Kamakura rainy days = low search volume + low bounce rate |
| ★★ | Medium recognition + unique scarce selling point | Narai-juku · Gujo Hachiman · Hakuba + early morning/rain/snow = high follower growth efficiency |
| ★★ | Off-the-beaten-path places + strong visual hooks (steam/yokai/remote hidden spots) | Small pool but extremely high follower growth efficiency, used as differentiation supplement |
| ★ | Morning mist + World Heritage/mountain villages | Pending verification |
Chinese cultural recognition IP topic library (sorted by search popularity):
Underlying logic of topic selection: Chinese people's perception of Japan goes beyond "place names" to includeanime/movie/cultural symbols. These IPs come with built-in search traffic pools — when viewers search "Slam Dunk," "Hachiko," or "Love Letter Otaru," our videos can be matched.
A. Anime filming locations
| Anime | Filming location | Key scene | Chinese search popularity |
|---|---|---|---|
| Slam Dunk | Kamakura · Enoshima | Kamakura High School crossing · Enoden | ★★★★★ Extremely high |
| Your Name | Hida Takayama · Hida Furukawa · Suga Shrine | Miyamizu Shrine · library · Yotsuya steps | ★★★★ High |
| Spirited Away | Ginzan Onsen · Dogo Onsen · Shibu Onsen | Onsen town · steam · night lanterns | ★★★★ High |
| Anohana | Chichibu | Old Chichibu Bridge · Jorinji | ★★★ Medium |
| Demon Slayer | Kamado Shrine (Fukuoka) · Beppu, Oita | Homangu approach · hell steam | ★★★ Medium |
| My Neighbor Totoro | Sayama Hills · Tokorozawa | Totoro's Forest | ★★ Medium |
| Hyouka | Takayama · Gero | Takayama City Library · Miyagawa Morning Market | ★★ Medium |
| Natsume's Book of Friends | Hitoyoshi · Kumamoto | Tabaruzaka · Hitoyoshi Castle | ★★ Medium |
B. Movie/J-drama filming locations (Chinese-specific popularity)
| Work | Filming location | Key scenes | Chinese search popularity |
|---|---|---|---|
| Love Letter | Otaru | Canal · Tenguyama · Temiya Line | ★★★★★ Extremely high (Itsuki Fujii effect) |
| If You Are the One | Hokkaido (Doto · Biei · Furano) | Cape Notoro · Shikisai no Oka | ★★★★★ Extremely high (Feng Xiaogang effect) |
| Hachiko | Odate (Akita) · Shibuya | Odate Station · Hachiko Statue · Akita Dog Museum | ★★★★ High |
| Midnight Diner | Shinjuku Omoide Yokocho | Late-night alleys | ★★★ Medium |
| Our Little Sister | Kamakura · Gokurakuji | Along the Enoden line | ★★ Medium |
C. Cultural symbol IP
| Symbol | Best filming locations | Differentiated angle | Chinese search popularity |
|---|---|---|---|
| Mount Fuji | Lake Kawaguchi · Oshino Hakkai · Arakurayama Sengen Park | Rainy/In fog/Early morning inverted Fuji | ★★★★★ |
| Senbon Torii | Fushimi Inari Taisha | Early morning 5 AM no people/Rainy | ★★★★★ |
| Cherry blossoms | Meguro River · Mount Yoshino · Hirosaki | Night sakura/Falling petals/Early morning exclusivity | ★★★★★ (Seasonal limited) |
| Onsen town | Beppu · Kusatsu · Kinosaki | Steam + Night + Rain | ★★★★ |
| Snow scene | Shirakawa-go · Ginzan Onsen · Gokayama | Heavy snow/Dawn/Lanterns | ★★★★ |
Title/Hashtag strategy: Do not directly write the IP name (copyright risk), usesuggestive phrasesto let the audience associate:
- Slam Dunk → original Japanese title: 「あの踏切で、海を見た」 (At that railway crossing, I saw the sea).
- Love Letter → original Japanese title: 「お元気ですか? 小樽の丘から」 (How are you? From a hill in Otaru).
- Hachiko → original Japanese title: 「ここで、ずっと待っていた」 (I had been waiting here all along).
- Spirited Away → original Japanese title: 「この湯屋に、名前を預けてきた」 (I left my name at this bathhouse). These allusive lines evoke an “if you know, you know” response in comments → higher engagement → additional algorithmic distribution.
HOOK material selection iron rules (revised 2026-04-13):
- ✓ Flowing water surface in rain, falling petals, drifting morning mist, waterfalls, animals appearing, first light of early morning
- ✓ Dynamic night scenes are okay: Drifting steam, flickering light, water surface reflections, streetcar in motion
- ✗ Static night scenes absolutely prohibited(Nagasaki overlook 55-62% skip), can only be used as a middle segment
- ✗ Fade in from black, static building front, wide sky shot (too bright/no motion)
- ✗ Long videos over 12 minutes(data confirms suppressed by algorithm, 70% skip)
Avoid:
- Popular attractions in Tokyo, Osaka, Kyoto — too well-known + saturated competition, aesthetic fatigue
- Super-famous solo themes on the level of Nara Daibutsu — poor follower growth efficiency (4.8 per thousand views, below average)
- Food exploration, shopping — deviates from immersive stroll positioning
- Crowded summer scenes — destroys the sense of solitude
- Mainly static overlook night scenes — high cover click-through rate but 55%+ skip, not worth it
- Any footage containing blogger voiceover/guide commentary/lyric BGM(iron rule)
Published materials
Not maintained here — always refer to the file:
cat ~/Downloads/静かな旅/静かな旅_発布記録.md
Must read before starting each new video to confirm materials have not been published repeatedly.