Loading...
Loading...
Compare original and translation side by side
meanest-editormeanest-editor~/.newsjack/voice/<profile_id>.yamlactive.yamlvoice.yaml~/.newsjack/voice/<profile_id>.yamlactive.yamlvoice.yamldelta_driftdelta_driftlength_cv = stdev / meanlength_cv ≈ 0.70rhythm_signature: short-burstlow_burstinesscadence_mean_driftlength_cv = 标准差 / 平均值length_cv ≈ 0.70rhythm_signature: short-burstlow_burstinesscadence_mean_driftlexical_diversity_droplexical_diversity_dropem_dash_usage: neverem_dash_against_fingerprintem_dash_usage: neverem_dash_against_fingerprintconjunction_starts_allowed: truesentence-starts-with-howeverfurthermore-moreover-additionallyconjunction_starts_allowed: truesentence-starts-with-howeverfurthermore-moreover-additionallyregister_shift_to_informationalcontraction_rate_dropfirst_person_dropregister_shift_to_informationalcontraction_rate_dropfirst_person_dropsignature_phrasessignature_wordssignature_absenceslang_strippedsignature_phrasessignature_wordssignature_absenceslang_stripped| Named tell | Mechanic | Detection |
|---|---|---|
| Corrective antithesis | "It's not X — it's Y": a false reframe claiming earned emphasis it didn't earn. The single most-cited tell. | |
| Throat-clearing temporals | "In today's [adj] world," "now more than ever," "ever-evolving landscape." | |
| Stock transition openers | Essay-bot scaffolding (However, Furthermore, Moreover) absent from native voice. | |
| Buzzword density | "Safe" words (delve, leverage, robust, seamless, unlock) at >3× human frequency. | |
| Ascending tricolon overuse | One three-beat list is elegant; back-to-back is the tell. | |
| Low burstiness | Every sentence 15–22 words, all SVO. | |
| Hedge pile-up | may/could/might/arguably/it's worth noting stacked. | |
| 特征名称 | 机制 | 检测方式 |
|---|---|---|
| 纠正性对立 | "It's not X — it's Y":虚假的重新框架,声称获得了未实际达成的强调。最常被提及的AI特征。 | |
| 铺垫式时间短语 | "In today's [adj] world," "now more than ever," "ever-evolving landscape." | |
| 通用过渡词开头 | 论文式脚手架(However, Furthermore, Moreover),原生风格中不存在。 | |
| 流行语密度 | "安全"词汇(delve, leverage, robust, seamless, unlock)的使用频率是人类的3倍以上。 | |
| 三连升序排比过度使用 | 一组三节拍排比是优雅的;连续使用则是AI特征。 | |
| 低突发度 | 所有句子长度在15-22词之间,均为主谓宾结构。 | |
| 模糊限制语堆砌 | may/could/might/arguably/it's worth noting 堆叠使用。 | |
voice.yamlvoice.yamlconfidence: lowconfidence: lowlength_cvhoweverfurthermoremoreoverin conclusionin summaryimagine ifpicture thisnot-just-x-its-yin-todays-worldimagine-if-openervoice.yamllength_cvhoweverfurthermoremoreoverin conclusionin summaryimagine ifpicture thisnot-just-x-its-yin-todays-worldimagine-if-openervoice.yaml~/.newsjack/voice/<profile_id>.yaml~/.newsjack/voice/active.yamlcreated_atlast_extracted_atsample_age_p50_dayssample_age_oldest_days~/.newsjack/voice/<profile_id>.yaml~/.newsjack/voice/active.yamlcreated_atlast_extracted_atsample_age_p50_dayssample_age_oldest_days{Company Name}[INSERT NAME]<<TODO>>banned_words_globalbanned_words_user_specificem_dash_usage: nevercadence_mean_driftcadence_p90_driftlow_burstinessparagraph_rate_driftfirst_person_dropcontraction_rate_dropregister_shift_to_informationaldelta_driftlexical_diversity_dropsignature_absencehedges_you_never_useconfidence: low{Company Name}[INSERT NAME]<<TODO>>banned_words_globalbanned_words_user_specificem_dash_usage: nevercadence_mean_driftcadence_p90_driftlow_burstinessparagraph_rate_driftfirst_person_dropcontraction_rate_dropregister_shift_to_informationaldelta_driftlexical_diversity_dropsignature_absencehedges_you_never_useconfidence: low~/.newsjack/voice/active.yaml<voice_fingerprint>~/.newsjack/voice/active.yaml<voice_fingerprint><voice_fingerprint>
You are writing as: {{profile_id}}
Register: {{register}}
Cadence target:
- sentence length mean ~{{cadence.sentence_length.mean}} (range {{p10}}-{{p90}})
- vary length deliberately: keep some sentences under 5 words and some over 25 ({{rhythm_signature}})
- {{one_sentence_paragraph_frequency*100}}% of paragraphs are one sentence
Mechanics:
- contractions: {{contractions}} ({{contraction_rate*100}}% of contractible pairs)
- em-dashes: {{em_dash_usage}}; DO NOT USE if "never"
- Oxford comma: {{oxford_comma}}
- exclamations: {{exclamation_rate_per_1k_words}} per 1k words
Sentence-initial: {{conjunction_starts_allowed ? "you may start sentences with But/And/So/Or" : "do not start sentences with conjunctions"}}
NEVER use: {{banned_words_global + banned_words_user_specific + banned transition words}}
NEVER use these structures: {{banned_structures.summary}}
Openers you actually use:
{{openers.observed}}
NEVER open with:
{{openers.banned_from_use}}
Signature phrases:
{{idioms.signature_phrases}}
</voice_fingerprint><voice_fingerprint>
你正在以以下身份写作: {{profile_id}}
语域: {{register}}
韵律目标:
- 句子长度平均值 ~{{cadence.sentence_length.mean}}(范围 {{p10}}-{{p90}})
- 刻意变化长度:保留一些少于5词的句子和一些超过25词的句子({{rhythm_signature}})
- {{one_sentence_paragraph_frequency*100}}%的段落为单句
语法细节:
- 缩写: {{contractions}}(可缩写词汇对的{{contraction_rate*100}}%使用缩写)
- 破折号: {{em_dash_usage}}; 如果为"never"则禁止使用
- 牛津逗号: {{oxford_comma}}
- 感叹号: 每千词{{exclamation_rate_per_1k_words}}个
句首规则: {{conjunction_starts_allowed ? "可以用But/And/So/Or开头" : "禁止用连词开头"}}
禁止使用: {{banned_words_global + banned_words_user_specific + banned transition words}}
禁止使用以下结构: {{banned_structures.summary}}
你实际使用的开头:
{{openers.observed}}
禁止使用的开头:
{{openers.banned_from_use}}
特征短语:
{{idioms.signature_phrases}}
</voice_fingerprint>~/.newsjack/voice/<profile_id>.yaml~/.newsjack/voice/<profile_id>.yamlvoice.yamlvoice.yamlschema_version: 1
profile_id: string
created_at: ISO8601
last_extracted_at: ISO8601
sample_count: number
sample_word_count: number
sample_age_p50_days: number
sample_age_oldest_days: number
intent: [pitches, reactive-comments, social, newsletter]
register: formal | professional | casual-professional | casual | irreverent
cadence:
sentence_length:
mean: number
median: number
p10: number
p90: number
stdev: number
length_cv: number
one_word_sentence_frequency: number
long_sentence_frequency: number
paragraph_length:
mean_sentences: number
one_sentence_paragraph_frequency: number
rhythm_signature: short-burst | flowing | mixed | listy
mechanics:
contractions: yes | no | mixed
contraction_rate: number
em_dash_usage: never | rare | habitual
em_dash_per_1k_words: number
oxford_comma: yes | no | inconsistent
ellipsis_usage: never | rare | habitual
exclamation_rate_per_1k_words: number
question_rate_per_1k_words: number
parenthetical_aside_frequency: low | medium | high
capitalization_quirks:
lowercase_i: boolean
sentence_case_headers: boolean
all_caps_for_emphasis: never | occasional | habitual
smart_quotes: yes | no | mixed
lexical:
mattr: number
function_word_zvector: {}
openers:
observed: []
banned_from_use: []
closers:
observed: []
banned_from_use: []
sentence_initial:
conjunction_starts_allowed: boolean
conjunction_start_rate: number
uses_however_furthermore_moreover: boolean
uses_in_conclusion_in_summary: boolean
uses_imagine_if: boolean
idioms:
signature_phrases: []
signature_words: []
hedges_you_actually_use: []
hedges_you_never_use: []
register_axis:
involved_score: number
banned_words_user_specific: []
banned_words_global: []
banned_structures:
- id: string
pattern: string
why: string
severity: block | warn
threshold: string | null
topic_signatures:
recurring_themes: []
perspective_anchors:
first_person_singular_rate: number
first_person_plural_rate: number
second_person_rate: number
third_person_rate: number
samples_index:
- id: string
source: tweet | email | substack | slack | blog | pitch | linkedin | other
date: ISO8601 | null
audience: journalist | internal | public | customer | founder-network | null
word_count: number
hash: "sha256:..."
extraction:
extractor_version: "voice-extractor/0.1.0"
model: "host-agent"
warnings: []
confidence: high | medium | lowschema_version: 1
profile_id: string
created_at: ISO8601
last_extracted_at: ISO8601
sample_count: number
sample_word_count: number
sample_age_p50_days: number
sample_age_oldest_days: number
intent: [pitches, reactive-comments, social, newsletter]
register: formal | professional | casual-professional | casual | irreverent
cadence:
sentence_length:
mean: number
median: number
p10: number
p90: number
stdev: number
length_cv: number
one_word_sentence_frequency: number
long_sentence_frequency: number
paragraph_length:
mean_sentences: number
one_sentence_paragraph_frequency: number
rhythm_signature: short-burst | flowing | mixed | listy
mechanics:
contractions: yes | no | mixed
contraction_rate: number
em_dash_usage: never | rare | habitual
em_dash_per_1k_words: number
oxford_comma: yes | no | inconsistent
ellipsis_usage: never | rare | habitual
exclamation_rate_per_1k_words: number
question_rate_per_1k_words: number
parenthetical_aside_frequency: low | medium | high
capitalization_quirks:
lowercase_i: boolean
sentence_case_headers: boolean
all_caps_for_emphasis: never | occasional | habitual
smart_quotes: yes | no | mixed
lexical:
mattr: number
function_word_zvector: {}
openers:
observed: []
banned_from_use: []
closers:
observed: []
banned_from_use: []
sentence_initial:
conjunction_starts_allowed: boolean
conjunction_start_rate: number
uses_however_furthermore_moreover: boolean
uses_in_conclusion_in_summary: boolean
uses_imagine_if: boolean
idioms:
signature_phrases: []
signature_words: []
hedges_you_actually_use: []
hedges_you_never_use: []
register_axis:
involved_score: number
banned_words_user_specific: []
banned_words_global: []
banned_structures:
- id: string
pattern: string
why: string
severity: block | warn
threshold: string | null
topic_signatures:
recurring_themes: []
perspective_anchors:
first_person_singular_rate: number
first_person_plural_rate: number
second_person_rate: number
third_person_rate: number
samples_index:
- id: string
source: tweet | email | substack | slack | blog | pitch | linkedin | other
date: ISO8601 | null
audience: journalist | internal | public | customer | founder-network | null
word_count: number
hash: "sha256:..."
extraction:
extractor_version: "voice-extractor/0.1.0"
model: "host-agent"
warnings: []
confidence: high | medium | lowprofile_id@YYYY-MM-DDbanned-word-globaldrift_scoreprofile_id@YYYY-MM-DDbanned-word-globaldrift_scoremeanest-editorvoice.yamlmeanest-editorvoice.yaml| Rule ID | Pattern / Trigger | Severity |
|---|---|---|
| `{[a-z _]+} | [[A-Z_ ]+] |
| Exact match against global list | block |
| Exact match against profile list | block |
| | block |
| Banned phrase used as opener | block |
| Banned phrase used as closer | block |
| | block |
| `^(Imagine if | Picture this |
| | block |
| | block |
| `(?i)\bever[- ](evolving | changing) (landscape |
| | block |
| `\b(Furthermore | Moreover |
| 规则ID | 模式/触发条件 | 严重程度 |
|---|---|---|
| `{[a-z _]+} | [[A-Z_ ]+] |
| 与全局列表完全匹配 | 拦截 |
| 与配置文件列表完全匹配 | 拦截 |
| | 拦截 |
| 禁用短语用作开头 | 拦截 |
| 禁用短语用作结尾 | 拦截 |
| | 拦截 |
| `^(Imagine if | Picture this |
| | 拦截 |
| | 拦截 |
| `(?i)\bever[- ](evolving | changing) (landscape |
| | 拦截 |
| `\b(Furthermore | Moreover |
| Rule ID | Trigger | Severity |
|---|---|---|
| Sentence length mean drifts more than 40% | warn |
| Sentence length p90 drifts more than 50% | warn |
| | warn |
| One-sentence-paragraph rate below 50% or above 200% of fingerprint | warn |
| First-person singular rate drops more than 50% in pitches/social | warn |
| Contraction rate falls below 50% of fingerprint | warn |
| Involved-score proxy swings a full band toward nominal/formal (lens 6) | warn |
| Mean function-word z-distance exceeds the fingerprint band (lens 1) | warn |
| Draft MATTR below ~0.85× fingerprint MATTR (lens 3) | warn |
| More than 1 per 200 words | warn |
| Three adjective stack before a noun | warn |
| | warn |
| More than 3 of might/could/may/perhaps/possibly/arguably per 200 words | warn |
| Fewer than 2 signature words or phrases in text over 150 words | warn |
| 规则ID | 触发条件 | 严重程度 |
|---|---|---|
| 句子长度平均值偏离超过40% | 警告 |
| 句子长度p90偏离超过50% | 警告 |
| | 警告 |
| 单句段落比例低于指纹值的50%或高于200% | 警告 |
| 第一人称单数比例在文案/社交场景中下降超过50% | 警告 |
| 缩写率低于指纹值的50% | 警告 |
| 参与度得分代理值向名词化/正式方向大幅偏移(维度6) | 警告 |
| 功能词平均z差值超出指纹区间(维度1) | 警告 |
| 草稿MATTR低于指纹MATTR的约0.85倍(维度3) | 警告 |
| 每200词超过1次 | 警告 |
| 名词前堆叠3个形容词 | 警告 |
| | 警告 |
| 每200词超过3个might/could/may/perhaps/possibly/arguably | 警告 |
| 150词以上文本中特征词汇或短语少于2个 | 警告 |
delveleverageleveragingrobustcomprehensivesynergyparadigmunlockunleashempowerrevolutionizerevolutionaryseamlessseamlesslygame-changingworld-classbest-in-classcutting-edgenext-gendisruptmove the needlecircle backwe are committed towe pride ourselves ondelveleverageleveragingrobustcomprehensivesynergyparadigmunlockunleashempowerrevolutionizerevolutionaryseamlessseamlesslygame-changingworld-classbest-in-classcutting-edgenext-gendisruptmove the needlecircle backwe are committed towe pride ourselves onconfidence: low~/.newsjack/voice/<profile_id>.yamlactive.yamllast_extracted_at<voice_fingerprint>confidence: low~/.newsjack/voice/<profile_id>.yamlactive.yamllast_extracted_at<voice_fingerprint>voice-extractorvoice-extractor"I'm doing my first newsjack voice init. Here are 8 samples in: 3 tweets, 2 Slack messages to my cofounder, 2 old emails to journalists from 2024, and 1 LinkedIn post. Audience is mostly tech journalists. I write pitches and a bit of social."~/samples/
| ID | Source | Audience | Date | Words |
|---|---|---|---|---|
| s_001 | tweet | public | 2026-05-04 | 28 |
| s_002 | tweet | public | 2026-05-08 | 41 |
| s_003 | tweet | public | 2026-05-11 | 36 |
| s_004 | slack | internal | 2026-04-30 | 96 |
| s_005 | slack | internal | 2026-05-02 | 122 |
| s_006 | journalist | 2024-11-18 | 310 | |
| s_007 | journalist | 2024-12-02 | 275 | |
| s_008 | public | 2026-03-19 | 332 |
jane-doe-personallength_cv ≈ 0.70jane-doe-personal~/.newsjack/voice/jane-doe-personal.yaml"我要首次初始化newsjack写作风格。这里有8份样本在: 3条推文、2条给联合创始人的Slack消息、2024年给记者的2封旧邮件,以及1篇LinkedIn帖子。受众主要是科技记者。我写文案和一些社交内容。"~/samples/
| ID | 来源 | 受众 | 日期 | 词数 |
|---|---|---|---|---|
| s_001 | tweet | public | 2026-05-04 | 28 |
| s_002 | tweet | public | 2026-05-08 | 41 |
| s_003 | tweet | public | 2026-05-11 | 36 |
| s_004 | slack | internal | 2026-04-30 | 96 |
| s_005 | slack | internal | 2026-05-02 | 122 |
| s_006 | journalist | 2024-11-18 | 310 | |
| s_007 | journalist | 2024-12-02 | 275 | |
| s_008 | public | 2026-03-19 | 332 |
jane-doe-personallength_cv ≈ 0.70jane-doe-personal~/.newsjack/voice/jane-doe-personal.yamlHi Sarah — Hope this finds you well. We're excited to announce that Acme has unveiled its revolutionary new platform, which leverages cutting-edge AI to deliver world-class results for enterprise customers. In today's ever-evolving landscape, it's not just a product, it's a paradigm shift. Looking forward to hearing from you. Best, Jane
jane-doe-personal@2026-05-18mediumneverjane-doe-personal@2026-05-18low_burstiness| Tell (rule) | What matched | Fix |
|---|---|---|
| "—" | Fingerprint says em-dashes never; use a comma, period, or colon. |
| "Hope this finds you well" | Open with the news. |
| "revolutionary" | Make a specific claim instead. |
| "leverages" | Use "uses" or rewrite. |
| "cutting-edge" | Name the actual method, or omit it. |
| "world-class" | Replace self-awarded praise with evidence. |
| "In today's ever-evolving landscape" | Delete the stock setup. |
| "it's not just a product, it's a paradigm shift" | Rewrite as a single direct claim. |
| "Looking forward to hearing from you" | Close with a concrete ask. |
Quick one: Acme shipped a search tool today that finds duplicate vendor contracts before finance approves a renewal.14 companies used it in beta. The cleanest result: one customer found $1.8M in duplicate renewals in two weeks.CEO Maya Chen can talk Thursday or Friday. Worth a look?Jane
Hi Sarah — Hope this finds you well. We're excited to announce that Acme has unveiled its revolutionary new platform, which leverages cutting-edge AI to deliver world-class results for enterprise customers. In today's ever-evolving landscape, it's not just a product, it's a paradigm shift. Looking forward to hearing from you. Best, Jane
jane-doe-personal@2026-05-18mediumneverjane-doe-personal@2026-05-18low_burstiness| 特征(规则) | 匹配内容 | 修复方法 |
|---|---|---|
| "—" | 指纹显示从不使用破折号;使用逗号、句号或冒号替代。 |
| "Hope this finds you well" | 直接以新闻内容开头。 |
| "revolutionary" | 改为具体的声明。 |
| "leverages" | 使用"uses"或改写。 |
| "cutting-edge" | 说明实际方法,或省略。 |
| "world-class" | 用证据替代自我标榜的赞美。 |
| "In today's ever-evolving landscape" | 删除通用铺垫。 |
| "it's not just a product, it's a paradigm shift" | 改写为单一直接的声明。 |
| "Looking forward to hearing from you" | 以具体请求结尾。 |
Quick one: Acme shipped a search tool today that finds duplicate vendor contracts before finance approves a renewal.14 companies used it in beta. The cleanest result: one customer found $1.8M in duplicate renewals in two weeks.CEO Maya Chen can talk Thursday or Friday. Worth a look?Jane