PageSourceSearch

https://scripotime.com/assets/AdminContentMap-DNfaHAzs.js

js scripotime.com collected 2026-10-08 12:16:10 UTC 42,663 bytes, 1 lines download raw bytes

vendor: 7,257 bytes, line 1
1import{aH as me,r as c,aL as j,bl as pe,j as t,bh as N,bp as F,aO as C,bP as k,bF as fe,aV as S,P as ge,H as be,B as we,L as ye}from"./index-7trek_9M.js";import{B as U}from"./badge-Cp9_3uoO.js";import{C as ve}from"./card-BuLLU6Vr.js";import{c as xe}from"./index-BdQq_4o_.js";import{S as G}from"./separator-CGmnO9j3.js";import{A as ke}from"./arrow-left-CaxWmwHZ.js";import{W as Se}from"./workflow-CIKEGgqP.js";function Ce(e,i){return c.useReducer((o,s)=>i[o][s]??o,e)}var V="ScrollArea",[Z,et]=me(V),[Te,w]=Z(V),J=c.forwardRef((e,i)=>{const{__scopeScrollArea:o,type:s="hover",dir:n,scrollHideDelay:a=600,...l}=e,[h,u]=c.useState(null),[r,d]=c.useState(null),[m,p]=c.useState(null),[f,b]=c.useState(null),[P,Y]=c.useState(null),[x,A]=c.useState(0),[z,L]=c.useState(0),[I,E]=c.useState(!1),[W,_]=c.useState(!1),g=j(i,T=>u(T)),y=pe(n);return t.jsx(Te,{scope:o,type:s,dir:y,scrollHideDelay:a,scrollArea:h,viewport:r,onViewportChange:d,content:m,onContentChange:p,scrollbarX:f,onScrollbarXChange:b,scrollbarXEnabled:I,onScrollbarXEnabledChange:E,scrollbarY:P,onScrollbarYChange:Y,scrollbarYEnabled:W,onScrollbarYEnabledChange:_,onCornerWidthChange:A,onCornerHeightChange:L,children:t.jsx(N.div,{dir:y,...l,ref:g,style:{position:"relative","--radix-scroll-area-corner-width":x+"px","--radix-scroll-area-corner-height":z+"px",...e.style}})})});J.displayName=V;var ee="ScrollAreaViewport",te=c.forwardRef((e,i)=>{const{__scopeScrollArea:o,children:s,nonce:n,...a}=e,l=w(ee,o),h=c.useRef(null),u=j(i,h,l.onViewportChange);return t.jsxs(t.Fragment,{children:[t.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:n}),t.jsx(N.div,{"data-radix-scroll-area-viewport":"",...a,ref:u,style:{overflowX:l.scrollbarXEnabled?"scroll":"hidden",overflowY:l.scrollbarYEnabled?"scroll":"hidden",...e.style},children:t.jsx("div",{ref:l.onContentChange,style:{minWidth:"100%",display:"table"},children:s})})]})});te.displayName=ee;var v="ScrollAreaScrollbar",q=c.forwardRef((e,i)=>{const{forceMount:o,...s}=e,n=w(v,e.__scopeScrollArea),{onScrollbarXEnabledChange:a,onScrollbarYEnabledChange:l}=n,h=e.orientation==="horizontal";return c.useEffect(()=>(h?a(!0):l(!0),()=>{h?a(!1):l(!1)}),[h,a,l]),n.type==="hover"?t.jsx(Re,{...s,ref:i,forceMount:o}):n.type==="scroll"?t.jsx(je,{...s,ref:i,forceMount:o}):n.type==="auto"?t.jsx(re,{...s,ref:i,forceMount:o}):n.type==="always"?t.jsx(K,{...s,ref:i}):null});q.displayName=v;var Re=c.forwardRef((e,i)=>{const{forceMount:o,...s}=e,n=w(v,e.__scopeScrollArea),[a,l]=c.useState(!1);return c.useEffect(()=>{const h=n.scrollArea;let u=0;if(h){const r=()=>{window.clearTimeout(u),l(!0)},d=()=>{u=window.setTimeout(()=>l(!1),n.scrollHideDelay)};return h.addEventListener("pointerenter",r),h.addEventListener("pointerleave",d),()=>{window.clearTimeout(u),h.removeEventListener("pointerenter",r),h.removeEventListener("pointerleave",d)}}},[n.scrollArea,n.scrollHideDelay]),t.jsx(F,{present:o||a,children:t.jsx(re,{"data-state":a?"visible":"hidden",...s,ref:i})})}),je=c.forwardRef((e,i)=>{const{forceMount:o,...s}=e,n=w(v,e.__scopeScrollArea),a=e.orientation==="horizontal",l=X(()=>u("SCROLL_END"),100),[h,u]=Ce("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return c.useEffect(()=>{if(h==="idle"){const r=window.setTimeout(()=>u("HIDE"),n.scrollHideDelay);return()=>window.clearTimeout(r)}},[h,n.scrollHideDelay,u]),c.useEffect(()=>{const r=n.viewport,d=a?"scrollLeft":"scrollTop";if(r){let m=r[d];const p=()=>{const f=r[d];m!==f&&(u("SCROLL"),l()),m=f};return r.addEventListener("scroll",p),()=>r.removeEventListener("scroll",p)}},[n.viewport,a,u,l]),t.jsx(F,{present:o||h!=="hidden",children:t.jsx(K,{"data-state":h==="hidden"?"hidden":"visible",...s,ref:i,onPointerEnter:C(e.onPointerEnter,()=>u("POINTER_ENTER")),onPointerLeave:C(e.onPointerLeave,()=>u("POINTER_LEAVE"))})})}),re=c.forwardRef((e,i)=>{const o=w(v,e.__scopeScrollArea),{forceMount:s,...n}=e,[a,l]=c.useState(!1),h=e.orientation==="horizontal",u=X(()=>{if(o.viewport){const r=o.viewport.offsetWidth<o.viewport.scrollWidth,d=o.viewport.offsetHeight<o.viewport.scrollHeight;l(h?r:d)}},10);return R(o.viewport,u),R(o.content,u),t.jsx(F,{present:s||a,children:t.jsx(K,{"data-state":a?"visible":"hidden",...n,ref:i})})}),K=c.forwardRef((e,i)=>{const{orientation:o="vertical",...s}=e,n=w(v,e.__scopeScrollArea),a=c.useRef(null),l=c.useRef(0),[h,u]=c.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),r=ae(h.viewport,h.content),d={...s,sizes:h,onSizesChange:u,hasThumb:r>0&&r<1,onThumbChange:p=>a.current=p,onThumbPointerUp:()=>l.current=0,onThumbPointerDown:p=>l.current=p};function m(p,f){return Ie(p,l.current,h,f)}return o==="horizontal"?t.jsx(Pe,{...d,ref:i,onThumbPositionChange:()=>{if(n.viewport&&a.current){const p=n.viewport.scrollLeft,f=Q(p,h,n.dir);a.current.style.transform=`translate3d(${f}px, 0, 0)`}},onWheelScroll:p=>{n.viewport&&(n.viewport.scrollLeft=p)},onDragScroll:p=>{n.viewport&&(n.viewport.scrollLeft=m(p,n.dir))}}):o==="vertical"?t.jsx(Ee,{...d,ref:i,onThumbPositionChange:()=>{if(n.viewport&&a.current){const p=n.viewport.scrollTop,f=Q(p,h);a.current.style.transform=`translate3d(0, ${f}px, 0)`}},onWheelScroll:p=>{n.viewport&&(n.viewport.scrollTop=p)},onDragScroll:p=>{n.viewport&&(n.viewport.scrollTop=m(p))}}):null}),Pe=c.forwardRef((e,i)=>{const{sizes:o,onSizesChange:s,...n}=e,a=w(v,e.__scopeScrollArea),[l,h]=c.useState(),u=c.useRef(null),r=j(i,u,a.onScrollbarXChange);return c.useEffect(()=>{u.current&&h(getComputedStyle(u.current))},[u]),t.jsx(ie,{"data-orientation":"horizontal",...n,ref:r,sizes:o,style:{bottom:0,left:a.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:a.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":B(o)+"px",...e.style},onThumbPointerDown:d=>e.onThumbPointerDown(d.x),onDragScroll:d=>e.onDragScroll(d.x),onWheelScroll:(d,m)=>{if(a.viewport){const p=a.viewport.scrollLeft+d.deltaX;e.onWheelScroll(p),ce(p,m)&&d.preventDefault()}},onResize:()=>{u.current&&a.viewport&&l&&s({content:a.viewport.scrollWidth,viewport:a.viewport.offsetWidth,scrollbar:{size:u.current.clientWidth,paddingStart:O(l.paddingLeft),paddingEnd:O(l.paddingRight)}})}})}),Ee=c.forwardRef((e,i)=>{const{sizes:o,onSizesChange:s,...n}=e,a=w(v,e.__scopeScrollArea),[l,h]=c.useState(),u=c.useRef(null),r=j(i,u,a.onScrollbarYChange);return c.useEffect(()=>{u.current&&h(getComputedStyle(u.current))},[u]),t.jsx(ie,{"data-orientation":"vertical",...n,ref:r,sizes:o,style:{top:0,right:a.dir==="ltr"?0:void 0,left:a.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":B(o)+"px",...e.style},onThumbPointerDown:d=>e.onThumbPointerDown(d.y),onDragScroll:d=>e.onDragScroll(d.y),onWheelScroll:(d,m)=>{if(a.viewport){const p=a.viewport.scrollTop+d.deltaY;e.onWheelScroll(p),ce(p,m)&&d.preventDefault()}},onResize:()=>{u.current&&a.viewport&&l&&s({content:a.viewport.scrollHeight,viewport:
vendor: 5,034 bytes, line 1
1a.viewport.offsetHeight,scrollbar:{size:u.current.clientHeight,paddingStart:O(l.paddingTop),paddingEnd:O(l.paddingBottom)}})}})}),[Ne,oe]=Z(v),ie=c.forwardRef((e,i)=>{const{__scopeScrollArea:o,sizes:s,hasThumb:n,onThumbChange:a,onThumbPointerUp:l,onThumbPointerDown:h,onThumbPositionChange:u,onDragScroll:r,onWheelScroll:d,onResize:m,...p}=e,f=w(v,o),[b,P]=c.useState(null),Y=j(i,g=>P(g)),x=c.useRef(null),A=c.useRef(""),z=f.viewport,L=s.content-s.viewport,I=k(d),E=k(u),W=X(m,10);function _(g){if(x.current){const y=g.clientX-x.current.left,T=g.clientY-x.current.top;r({x:y,y:T})}}return c.useEffect(()=>{const g=y=>{const T=y.target;(b==null?void 0:b.contains(T))&&I(y,L)};return document.addEventListener("wheel",g,{passive:!1}),()=>document.removeEventListener("wheel",g,{passive:!1})},[z,b,L,I]),c.useEffect(E,[s,E]),R(b,W),R(f.content,W),t.jsx(Ne,{scope:o,scrollbar:b,hasThumb:n,onThumbChange:k(a),onThumbPointerUp:k(l),onThumbPositionChange:E,onThumbPointerDown:k(h),children:t.jsx(N.div,{...p,ref:Y,style:{position:"absolute",...p.style},onPointerDown:C(e.onPointerDown,g=>{g.button===0&&(g.target.setPointerCapture(g.pointerId),x.current=b.getBoundingClientRect(),A.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",f.viewport&&(f.viewport.style.scrollBehavior="auto"),_(g))}),onPointerMove:C(e.onPointerMove,_),onPointerUp:C(e.onPointerUp,g=>{const y=g.target;y.hasPointerCapture(g.pointerId)&&y.releasePointerCapture(g.pointerId),document.body.style.webkitUserSelect=A.current,f.viewport&&(f.viewport.style.scrollBehavior=""),x.current=null})})})}),H="ScrollAreaThumb",ne=c.forwardRef((e,i)=>{const{forceMount:o,...s}=e,n=oe(H,e.__scopeScrollArea);return t.jsx(F,{present:o||n.hasThumb,children:t.jsx(Ae,{ref:i,...s})})}),Ae=c.forwardRef((e,i)=>{const{__scopeScrollArea:o,style:s,...n}=e,a=w(H,o),l=oe(H,o),{onThumbPositionChange:h}=l,u=j(i,m=>l.onThumbChange(m)),r=c.useRef(void 0),d=X(()=>{r.current&&(r.current(),r.current=void 0)},100);return c.useEffect(()=>{const m=a.viewport;if(m){const p=()=>{if(d(),!r.current){const f=We(m,h);r.current=f,h()}};return h(),m.addEventListener("scroll",p),()=>m.removeEventListener("scroll",p)}},[a.viewport,d,h]),t.jsx(N.div,{"data-state":l.hasThumb?"visible":"hidden",...n,ref:u,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...s},onPointerDownCapture:C(e.onPointerDownCapture,m=>{const f=m.target.getBoundingClientRect(),b=m.clientX-f.left,P=m.clientY-f.top;l.onThumbPointerDown({x:b,y:P})}),onPointerUp:C(e.onPointerUp,l.onThumbPointerUp)})});ne.displayName=H;var $="ScrollAreaCorner",se=c.forwardRef((e,i)=>{const o=w($,e.__scopeScrollArea),s=!!(o.scrollbarX&&o.scrollbarY);return o.type!=="scroll"&&s?t.jsx(Le,{...e,ref:i}):null});se.displayName=$;var Le=c.forwardRef((e,i)=>{const{__scopeScrollArea:o,...s}=e,n=w($,o),[a,l]=c.useState(0),[h,u]=c.useState(0),r=!!(a&&h);return R(n.scrollbarX,()=>{var m;const d=((m=n.scrollbarX)==null?void 0:m.offsetHeight)||0;n.onCornerHeightChange(d),u(d)}),R(n.scrollbarY,()=>{var m;const d=((m=n.scrollbarY)==null?void 0:m.offsetWidth)||0;n.onCornerWidthChange(d),l(d)}),r?t.jsx(N.div,{...s,ref:i,style:{width:a,height:h,position:"absolute",right:n.dir==="ltr"?0:void 0,left:n.dir==="rtl"?0:void 0,bottom:0,...e.style}}):null});function O(e){return e?parseInt(e,10):0}function ae(e,i){const o=e/i;return isNaN(o)?0:o}function B(e){const i=ae(e.viewport,e.content),o=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,s=(e.scrollbar.size-o)*i;return Math.max(s,18)}function Ie(e,i,o,s="ltr"){const n=B(o),a=n/2,l=i||a,h=n-l,u=o.scrollbar.paddingStart+l,r=o.scrollbar.size-o.scrollbar.paddingEnd-h,d=o.content-o.viewport,m=s==="ltr"?[0,d]:[d*-1,0];return le([u,r],m)(e)}function Q(e,i,o="ltr"){const s=B(i),n=i.scrollbar.paddingStart+i.scrollbar.paddingEnd,a=i.scrollbar.size-n,l=i.content-i.viewport,h=a-s,u=o==="ltr"?[0,l]:[l*-1,0],r=xe(e,u);return le([0,l],[0,h])(r)}function le(e,i){return o=>{if(e[0]===e[1]||i[0]===i[1])return i[0];const s=(i[1]-i[0])/(e[1]-e[0]);return i[0]+s*(o-e[0])}}function ce(e,i){return e>0&&e<i}var We=(e,i=()=>{})=>{let o={left:e.scrollLeft,top:e.scrollTop},s=0;return function n(){const a={left:e.scrollLeft,top:e.scrollTop},l=o.left!==a.left,h=o.top!==a.top;(l||h)&&i(),o=a,s=window.requestAnimationFrame(n)}(),()=>window.cancelAnimationFrame(s)};function X(e,i){const o=k(e),s=c.useRef(0);return c.useEffect(()=>()=>window.clearTimeout(s.current),[]),c.useCallback(()=>{window.clearTimeout(s.current),s.current=window.setTimeout(o,i)},[o,i])}function R(e,i){const o=k(i);fe(()=>{let s=0;if(e){const n=new ResizeObserver(()=>{cancelAnimationFrame(s),s=window.requestAnimationFrame(o)});return n.observe(e),()=>{window.cancelAnimationFrame(s),n.unobserve(e)}}},[e,o])}var de=J,_e=te,Me=se;const he=c.forwardRef(({className:e,children:i,...o},s)=>t.jsxs(de,{ref:s,className:S("relative overflow-hidden",e),...o,children:[t.jsx(_e,{className:"h-full w-full rounded-[inherit]",children:i}),t.jsx(ue,{}),t.jsx(Me,{})]}));
1he.displayName=de.displayName;const ue=c.forwardRef(({className:e,orientation:i="vertical",...o},s)=>t.jsx(q,{ref:s,orientation:i,className:S("flex touch-none select-none transition-colors",i==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",i==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",e),...o,children:t.jsx(ne,{className:"relative flex-1 rounded-full bg-border"})}));ue.displayName=q.displayName;const De=[{id:"linkedin",name:"LinkedIn",cadence:"2–3×/week · native text + image",effort:"35%",color:"#0a66c2",letters:"in",left:44,top:642},{id:"substack",name:"Substack",cadence:"1×/week · full text + canonical",effort:"25%",color:"#ff6719",letters:"S",left:44,top:698},{id:"twitter",name:"X / Twitter",cadence:"3–5×/week · 1 thread",effort:"20%",color:"#111111",letters:"X",left:358,top:642},{id:"reddit",name:"Reddit",cadence:"1–2×/month · manual only",effort:"8%",color:"#ff4500",letters:"r/",left:358,top:698},{id:"facebook",name:"Facebook",cadence:"1–2×/month · groups, not feed",effort:"8%",color:"#1877f2",letters:"f",left:672,top:642},{id:"instagram",name:"Instagram",cadence:"1–2×/week · carousels only",effort:"4%",color:"#c13584",letters:"ig",left:672,top:698}],He=[{id:"src-academic",kicker:"External",title:"Academics & practitioners",subtitle:"Commissioned essays · 1–2/mo",left:28,top:48,width:210,height:62,accent:"external"},{id:"src-collector",kicker:"External",title:"Collectors & archives",subtitle:"Object stories · 1–2/mo",left:266,top:48,width:210,height:62,accent:"external"},{id:"src-timeline",kicker:"Internal",title:"Timeline expansion",subtitle:"Existing entries · 2/mo",left:504,top:48,width:210,height:62,accent:"internal"},{id:"src-macro",kicker:"Internal",title:"Macro research & ideas",subtitle:"Your own analysis · 2–3/mo",left:742,top:48,width:210,height:62,accent:"internal"},{id:"triage",kicker:"Gate",title:"Editorial triage",subtitle:"Theme · audience · channel set · slot",left:340,top:176,width:300,height:56},{id:"decide",kicker:"Decision",title:"New piece or republish?",left:370,top:268,width:240,height:56,variant:"dashed"},{id:"write",kicker:"Path A",title:"Write new",subtitle:"+ hook, thread, crops, pull quote",left:170,top:360,width:240,height:56},{id:"refresh",kicker:"Path B",title:"Refresh existing",subtitle:"Same URL · update dateModified",left:570,top:360,width:240,height:56},{id:"hub",kicker:"Canonical · publish here first",title:"scripotime.com",subtitle:"Everything points back here",left:230,top:452,width:520,height:72,variant:"hub"},{id:"signals",kicker:"Feedback",title:"Engagement signals",subtitle:"Monthly review · reshapes commissioning",left:320,top:800,width:340,height:56}],Oe=[{id:"t1",label:"Tier 1 · Core",subtitle:"Owned audience + primary discovery. Never skipped.",left:28,top:576,width:296,height:180},{id:"t2",label:"Tier 2 · Amplify",subtitle:"Reach and credibility. Selective, manual.",left:342,top:576,width:296,height:180},{id:"t3",label:"Tier 3 · Opportunistic",subtitle:"Communities and visuals. Batch, low effort.",left:656,top:576,width:296,height:180}],Fe=[{label:"1 · Sourcing",top:24},{label:"2 · Editorial",top:186},{label:"3 · Owned hub",top:462},{label:"4 · Distribution",top:556},{label:"5 · Feedback",top:810}],Be=["M133,110 C133,148 490,138 490,174","M371,110 C371,148 490,138 490,174","M609,110 C609,148 490,138 490,174","M847,110 C847,148 490,138 490,174","M490,232 L490,266","M490,324 C490,346 290,336 290,358","M490,324 C490,346 690,336 690,358","M290,416 C290,440 490,428 490,450","M690,416 C690,440 490,428 490,450","M490,524 C490,554 176,546 176,574","M490,524 L490,574","M490,524 C490,554 804,546 804,574","M176,756 C176,782 490,774 490,798","M490,756 L490,798","M804,756 C804,782 490,774 490,798"],Xe="M660,828 L950,828 L950,22 L847,22 L847,46",Ye={id:"overview",kind:"Overview",title:"How to read this map",summary:"Five stages, one direction, one loop. Content is sourced, triaged, published on scripotime.com as the canonical version, pushed out in priority order, and what comes back changes what gets commissioned next.",sections:[{heading:"The three governing rules",items:["**Publish on the site first.** Everything else is a copy pointing home.","**Tier 1 always, Tier 2 and 3 only if earned.** A piece that only goes to LinkedIn and Substack is a complete success.","**Make channel assets while drafting.** Hooks, threads and crops created later never get created."]},{heading:"Priority, for a finance audience",items:["**LinkedIn (35%)** — where your readers are during the working day. Primary discovery.","**Substack (25%)** — the only audience you own. Highe
1st long-term value.","**X (20%)** — highest ceiling, highest variance. Real-time macro.","**Reddit (8%)** — manual, rare, durable in search.","**Facebook (8%)** — groups only. Collector relationships, not traffic.","**Instagram (4%)** — imagery archive. First to drop when time is short."]}],hint:"Click any box in the map for its full definition, cadence and rules."},ze={"src-academic":{id:"src-academic",kind:"External source",title:"Academics & practitioner contributors",summary:"Commissioned essays from financial historians, economists, archivists and market practitioners. Your credibility layer — the reason a finance professional treats Scripotime as a reference rather than a blog.",sections:[{heading:"What it produces",items:["Long-form essays, 1,500–3,000 words","Book and archive reviews","Occasional co-authored series on a single theme"]},{heading:"Cadence & lead time",items:["**Target:** 1–2 pieces per month","**Lead time:** 4–6 weeks from commission to draft","Always hold one finished piece in reserve for a slow week"]},{heading:"Intake checklist",items:["Contributor brief agreed in writing (angle, length, deadline)","Licence confirmed — right to publish and to syndicate to Substack","Bio, affiliation and headshot supplied","Image rights cleared separately from text rights"]},{heading:"Known risk",items:["Slowest, least predictable source — never let it be the only thing in the pipeline","Chase at the half
1way point, not the deadline"]}]},"src-collector":{id:"src-collector",kind:"External source",title:"Collectors & archive material",summary:"Primary material — certificates, bonds, prospectuses, correspondence — supplied by collectors and institutions, turned into object-led stories. This is what nobody else can publish.",sections:[{heading:"What it produces",items:["Object stories: one document, its issuer, its market, its fate","High-resolution imagery that carries Instagram and LinkedIn","Provenance notes that add to the site's reference value"]},{heading:"Cadence & lead time",items:["**Target:** 1–2 per month","**Lead time:** 2–3 weeks — you write, they supply","Batch the photography: shoot several items in one session"]},{heading:"Intake checklist",items:["High-res scans, front and reverse, plus detail crops","Provenance and attribution wording agreed with the owner","Written permission to reproduce images across all channels","Credit line drafted exactly as the owner wants it"]},{heading:"Why it matters",items:["Highest visual yield per hour — one item feeds an article, a carousel and a thread","The natural entry point for Facebook collector groups"]}]},"src-timeline":{id:"src-timeline",kind:"Internal source",title:"Timeline expansion",summary:"Your existing timeline entries treated as commissioning briefs. Each entry is a stub with an audience already attached; the article is the payoff. The cheapest content you have.",sections:[{heading:"What it produces",items:["Full articles built out from a dated timeline entry","Anniversary pieces — publish on the date the event happened","Cluster pieces linking three or four related entries"]},{heading:"Cadence & lead time",items:["**Target:** 2 per month — this is your volume filler","**Lead time:** under a week","Maintain a rolling 90-day anniversary calendar so nothing is missed"]},{heading:"Rules",items:["Article links back to the timeline entry; timeline entry links forward to the article","Never duplicate the timeline text — expand, don't repeat","Best candidates: entries that already get search traffic"]},{heading:"Why it matters",items:["Turns an asset you already own into publishable inventory","Strengthens internal linking and the site's search footprint"]}]},"src-macro":{id:"src-macro",kind:"Internal source",title:"Your macro research & original ideas",summary:"Your own analysis connecting financial history to what is happening in markets now. This is the differentiator and, in practice, your best-performing material on LinkedIn and X.",sections:[{heading:"What it produces",items:["“This happened before” pieces tying a current event to a historical precedent","Data-led notes with a chart you built yourself","Contrarian reads on consensus market narratives"]},{heading:"Cadence & lead time",items:["**Target:** 2–3 per month","**Lead time:** 3–10 days, and can go same-week when news demands","Keep one evergreen draft ready to swap in"]},{heading:"Rules",items:["Every claim carries a source — you are writing for people who check","One chart minimum: it is what gets screenshotted and shared","Say what you think. The hedged version does not travel"]},{heading:"Why it matters",items:["Highest engagement per piece across Tier 1 and Tier 2","The only source that positions you personally, not just the site"]}]},triage:{id:"triage",kind:"Editorial stage",title:"Editorial triage",summary:"The single gate everything passes through. Decide here what a piece is for, who it is for and which channels it will earn — before a word is written. This is where channel discipline is actually enforced.",sections:[{heading:"Decide at this stage",items:["**Theme tag** — markets, monetary history, object story, institutions, biography","**Primary audience** — finance professional, collector, general reader","**Channel set** — Tier 1 always; Tier 2 and 3 only if the piece earns it","**Slot** — which publication week it occupies"]},{heading:"Channel-earning test",items:["**X thread** if it has an argument that survives compression","**Reddit** only if it answers a question that community actually asks","**Instagram / Facebook** only if the imagery stands alone","If none apply, Tier 1 only — and that is a perfectly good outcome"]},{heading:"Keep a visible queue",items:["Commissioned · Drafting · Ready · Scheduled · Published","Cap 'Drafting' at four pieces; more than that means nothing ships"]}]},decide:{id:"decide",kind:"Decision point",title:"New piece or republish?",summary:"Not every slot needs new writing. A refreshed piece with an updated angle often outperforms a weak new one — and costs a fraction of the effort.",sections:[{heading:"Cho
1ose republish when",items:["A live event makes an older piece newly relevant","The piece performed well and has aged out of the feed (6+ months)","New material — a document, a source, a correction — has surfaced","You have a slot to fill and nothing strong ready"]},{heading:"Choose new when",items:["The idea has no existing home on the site","A contributor or collector piece has landed","The news window is short and specific"]},{heading:"Rule of thumb",items:["Roughly **3 new : 1 refreshed** across a month","A refresh is a real slot, not an admission of failure"]}]},write:{id:"write",kind:"Editorial stage",title:"Write new",summary:"Draft, edit and prepare a first-publication piece with every downstream asset produced in the same sitting. Producing channel assets later is the step that silently never happens.",sections:[{heading:"Produce in one pass",items:["The article itself","**Hook paragraph** — 40–60 words, reusable on LinkedIn and Facebook","**Thread skeleton** — 5–8 beats for X","**Hero image + 3 crops** — landscape, square, portrait","**Pull quote** — one sentence worth quoting alone"]},{heading:"Pre-publication checks",items:["Sources cited and links live","Internal links to at least two related pieces and one timeline entry","Meta title and description written by hand, not auto-generated","Contributor credit and image credit correct"]}]},refresh:{id:"refresh",kind:"Editorial stage",title:"Refresh existing",summary:"Update an existing article in place. Keep the URL — you keep its search history and inbound links, and the piece re-enters distribution as if new.",sections:[{heading:"How to refresh properly",items:["**Keep the same URL.** Never republish at a new address","Update the **dateModified** field, not the original publication date","Add a short dated note at the top: what changed and why it matters now","Refresh the hero image or add a new one so it looks new in the feed"]},{heading:"Then redistribute",items:["Treat it as a full Tier 1 push — most of the audience never saw it","Lead the social copy with the **new** angle, not the original one","Do not resubmit to Reddit; that reads as spam"]}]},hub:{id:"hub",kind:"Owned hub",title:"scripotime.com — canonical publication",summary:"Everything is published here first and everything points back here. Social platforms rent you attention; this is the only place you own it. If a piece exists only on a platform, it does not exist.",sections:[{heading:"Non-negotiables",items:["**Publish here first**, always — even if only by an hour","Canonical URL set on every syndicated copy, including Substack","Newsletter capture visible on every article, not just the homepage","Structured data (Article schema) with author, dates and publisher"]},{heading:"Every article links to",items:["Its originating timeline entry","Two or more related articles","The contributor or collector, where relevant"]},{heading:"What to measure here",items:["Sessions and time-on-page by traffic source — this tells you which channel is actually working","Newsletter conversions by article — your single most important number","Which older pieces still pull search traffic (your refresh shortlist)"]}]},linkedin:{id:"linkedin",kind:"Tier 1 · Core",effort:"35% of channel effort",title:"LinkedIn",summary:"Your primary discovery channel. This is where finance professionals actually are during the working day, and where a serious piece of financial history reads as professional rather than as a hobby. Treat it as the front door.",sections:[{heading:"Format that works",items:["**Native text post, 150–250 words.** Do not paste the article","Open with a specific, concrete line — a date, a number, a fact. No 'thread 🧵' framing","One image, always. Certificates and charts stop the scroll","Link placement: in the post is fine and simpler — but if reach is weak, test the first comment for a month and compare"]},{heading:"Cadence",items:["**2–3 posts per week** — more than the article count","Not every post needs an article behind it: a single document with 120 words of context is a valid post","Tuesday–Thursday, 07:30–09:00 UK time, is the working window"]},{heading:"What performs",items:["Macro research and 'this happened before' pieces","Object stories with strong imagery","Anything with a chart you made yourself"]},{heading:"Discipline",items:["Reply to every comment within the first two hours — this is most of the algorithmic work","Personal profile over company page: people follow people","No engagement-bait formatting. This audie
1nce penalises it"]}]},substack:{id:"substack",kind:"Tier 1 · Core",effort:"25% of channel effort",title:"Substack",summary:"Your owned audience. The list is the only asset here that no platform can take away, and it is the channel that converts casual readers into people who return. Second in effort, first in long-term value.",sections:[{heading:"Format that works",items:["Full article text, with a canonical link back to scripotime.com at the top or bottom","Subject line written separately from the article headline — it does different work","Short personal intro (2–3 sentences) before the piece: why this, why now","Section headers, so it survives being read on a phone"]},{heading:"Cadence",items:["**One send per week**, same day every week — consistency beats volume","Never two sends in a week without a real reason","If there is nothing strong, send a short curated note rather than skipping entirely"]},{heading:"Growth levers",items:["Enable Substack Recommendations and actively recommend adjacent finance/history writers","Occasional free-to-all pieces designed for forwarding","Every scripotime.com article carries a subscribe prompt"]},{heading:"What to measure",items:["**Open rate** (health of the list) and **click-through** (strength of the piece)","Net subscriber growth per send — flat weeks tell you the subject lines are wrong","Unsubscribes spiking = cadence or relevance problem, act immediately"]}]},twitter:{id:"twitter",kind:"Tier 2 · Amplify",effort:"20% of channel effort",title:"X / Twitter",summary:"Where finance commentary is argued in real time. Lower conversion than LinkedIn but far higher ceiling — a single thread can reach people no other channel will give you, including journalists and fund managers.",sections:[{heading:"Format that works",items:["**5–8 post thread** per flagship piece. First post must stand entirely alone","Image in the first post — non-negotiable for reach","Link only in the final post, after the value has been delivered","Standalone posts too: one document, one observation, no link"]},{heading:"Cadence",items:["**3–5 posts per week**, of which 1 is a thread","Real-time is the point: post macro takes while the news is live","Quote-post and reply to finance accounts — visibility here comes from participation"]},{heading:"Discipline",items:["Repurpose, don't duplicate: the LinkedIn post and the X thread should not read identically","Pin your best-performing thread to the profile and refresh it monthly","Ignore follower count; watch profile clicks and link clicks"]},{heading:"Honest assessment",items:["High variance — most posts do little, occasional ones do a great deal","Cheap to run once the thread skeleton is written at drafting stage"]}]},reddit:{id:"reddit",kind:"Tier 2 · Amplify",effort:"8% of channel effort",title:"Reddit",summary:"Manual only, low volume, high credibility. Few will read it — but the few who do are researchers and serious hobbyists, and a well-received post produces durable search traffic long after posting.",sections:[{heading:"Non-negotiable rules",items:["**Never post a bare link.** Write 300–500 words of genuine substance in the post itself","Participate in a subreddit for weeks before you post anything of your own","Read that subreddit's self-promotion rule before every post, not once","One subreddit at a time — cross-posting the same piece is the fastest route to a ban"]},{heading:"Where to post",items:["r/SecurityAnalysis and r/investing — macro research and precedent pieces","r/AskHistorians — only with full citations; standards there are genuinely high","r/Scripophily and collector subs — object stories and imagery","r/AskEconomics for data-led pieces"]},{heading:"Cadence",items:["**1–2 posts per month, maximum.** This is a quality channel, not a volume one","Only your strongest pieces. A weak post costs more reputation than it earns reach","Answer every comment properly; the discussion is the value"]},{heading:"Why keep it",items:["Reddit threads rank in Google for years","It is where you meet the small number of people who care as much as you do"]}]},facebook:{id:"facebook",kind:"Tier 3 · Opportunistic",effort:"8% of channel effort",title:"Facebook",summary:"Matters more than it looks — but the value is in groups, not the feed. Scripophily, financial-history and collecting groups are active, older-skewing and genuinely engaged. The page itself does almost nothing.",sections:[{heading:"Where the value is",items:["**Collector and scripophily groups** — object stories land extremely well here","Financial-history and economic-history groups","Alumni and professional groups where a macro piece is on-topic","Your own page: post for completeness, expect very little"]},{heading:"Format that works",items:["Image-led, with the story told in the post body — group members rarely click out","Ask a question at the end; groups reward conversation, not broadcasting","Same rule as Reddit: contribute to the group before promoting in it"]},{heading:"Cadence",items:["**1–2 group posts per month**, batched in one sitting","Page: mirror the LinkedIn post, no extra work"]},{heading:"Honest assessment",items:["Almost no traffic to the site, but real relationships with collectors — which becomes source material","Keep it, but keep it cheap"]}]},instagram:{id:"instagram",kind:"Tier 3 · Opportunistic",effort:"4% of channel effort",title:"Instagram",summary:"Lowest priority and correctly so — it will not reach finance professionals in a working context. It exists for one reason: the material is unusually beautiful, and this is where the imagery lives. Run it as an archive, not a campaign.",sections:[{heading:"Format that works",items:["**Carousel**: hero image, then 3–5 detail crops — engravings, vignettes, signatures","Caption tells the object's story in full; the link never works, so don't rely on it","'Link in bio' pointing to the current article, updated weekly"]},{heading:"Cadence",items:["**1–2 posts per week** if the images already exist from an object story","**Zero** if it would require new work. Never create for Instagram specifically","Batch a month of posts in one session"]},{heading:"Honest assessment",items:["Effectively no traffic and no newsletter conversion — do not judge it on those","It builds visual brand and occasionally reaches a collector with material you want","If time is short, this is the first channel to drop"]}]},signals:{id:"signals",kind:"Feedback loop",title:"Engagement signals & learnings",summary:"The loop that makes the whole map worth drawing. Review at a fixed interval, and let the results change what you commission — not just how you promote.",sections:[{heading:"Review monthly, in this order",items:["**Newsletter signups by article** — the number that matters most","**Site sessions by referral source** — which channel actually delivers readers","**LinkedIn profile clicks** — the leading indicator of professional reach","Reddit and search: which older pieces still pull traffic"]},{heading:"Decision rules",items:["Top decile piece → refresh and re-push in 6 months; commission two more on the same theme","Strong on LinkedIn, weak on site → the hook worked, the article didn't. Fix the opening","Strong on site, weak on social → the piece is fine, the promotion was. Rewrite the hook and repost","Consistently weak theme → stop commissioning it, whatever you feel about it"]},{heading:"Feed back into sourcing",items:["Best-performing themes become the next contributor briefs","Reader questions in comments become timeline entries and then articles","Collector contacts made in Facebook groups become new source material"]},{heading:"Effort allocation",items:["LinkedIn 35% · Substack 25% · X 20% · Reddit 8% · Facebook 8% · Instagram 4%","Revisit this split quarterly against the referral data, not against instinct"]}]}},M=980,D=900,Ue=({text:e})=>t.jsx(t.Fragment,{children:e.split(/(\*\*[^*]+\*\*)/g).map((i,o)=>i.startsWith("**")&&i.endsWith("**")?t.jsx("strong",{className:"font-semibold text-foreground",children:i.slice(2,-2)},o):t.jsx("span",{children:i},o))}),tt=()=>{const[e,i]=c.useState(null),[o,s]=c.useState(1),n=c.useRef(null),a=c.useRef(null);c.useLayoutEffect(()=>{const r=n.current;if(!r)return;const d=()=>s(Math.min(1,r.clientWidth/M));d();const m=new ResizeObserver(d);return m.observe(r),()=>m.disconnect()},[]);const l=e&&ze[e]||Ye,h=r=>{var d;i(r),window.matchMedia("(max-width: 1023px)").matches&&((d=a.current)==null||d.scrollIntoView({behavior:"smooth",block:"start"}))},u="absolute text-left rounded-sm bg-card border border-border p-2.5 transition-colors hover:border-primary/60 focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background";return t.jsxs(ge,{children:[t.jsxs(be,{children:[t.jsx("title",{children:"Content Propagation Map · Admin"}),t.jsx("meta",{name:"robots",content:"noindex"})]}),t.jsxs("div",{className:"container py-8",children:[t.jsx(we,{asChild:!0,variant:"ghost",size:"sm",className:"mb-4 -ml-2",children:t.jsxs(ye,{to:"/admin",children:[t.jsx(ke,{className:"h-4 w-4 mr-1"})," Back to admin"]})}),t.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[t.jsx(Se,{className:"h-5 w-5 text-accent"}),t.jsx("h1",{className:"font-serif text-2xl md:text-3xl text-primary",children:"Content Propagation Map"})]}),t.jsx("p",{className:"text-sm text-muted-foreground mb-6",children:"Sourcing → editorial → hub → channels → feedback loop"}),t.jsxs("div",{className:"grid gap-6 lg:grid-cols-[1fr_360px] items-start",children:[t.jsx("div",{ref:n,className:"overflow-hidden",children:t.jsx("div",{style:{height:D*o},children:t.jsxs("div",{className:"relative",style:{width:M,height:D,transform:`scale(${o})`,transformOrigin:"top left"},children:[t.jsxs("svg",{width:M,height:D,viewBox:`0 0 ${M} ${D}`,className:"absolute inset-0 pointer-events-none","aria-hidden":"true",children:[t.jsxs("defs",{children:[t.jsx("marker",{id:"cm-arrow",markerWidth:"8",markerHeight:"8",refX:"6",refY:"3",orient:"auto",children:t.jsx("path",{d:"M0,0 L6,3 L0,6 z",className:"fill-muted-foreground
1/70"})}),t.jsx("marker",{id:"cm-arrow-amber",markerWidth:"8",markerHeight:"8",refX:"6",refY:"3",orient:"auto",children:t.jsx("path",{d:"M0,0 L6,3 L0,6 z",fill:"currentColor",className:"text-accent"})})]}),Be.map(r=>t.jsx("path",{d:r,fill:"none",strokeWidth:1.6,className:"stroke-muted-foreground/50",markerEnd:"url(#cm-arrow)"},r)),t.jsx("path",{d:Xe,fill:"none",strokeWidth:1.6,strokeDasharray:"6 5",className:"stroke-accent",markerEnd:"url(#cm-arrow-amber)"})]}),Fe.map(r=>t.jsx("div",{className:"absolute left-0 text-[10px] uppercase tracking-widest text-muted-foreground",style:{top:r.top},children:r.label},r.label)),Oe.map(r=>t.jsx("div",{className:"absolute rounded-sm border border-border bg-secondary/30",style:{left:r.left,top:r.top,width:r.width,height:r.height},children:t.jsxs("div",{className:"p-2.5",children:[t.jsx("span",{className:"inline-block rounded-sm bg-primary text-primary-foreground text-[10px] uppercase tracking-widest px-2 py-0.5",children:r.label}),t.jsx("p",{className:"text-[11px] text-muted-foreground mt-1.5 leading-snug",children:r.subtitle})]})},r.id)),He.map(r=>
1{const d=e===r.id;return t.jsxs("button",{type:"button",onClick:()=>h(r.id),"aria-pressed":d,className:S(u,r.variant==="dashed"&&"border-dashed text-center",r.variant==="hub"&&"bg-primary text-primary-foreground border-primary",r.accent==="external"&&"border-l-4 border-l-[hsl(212_80%_45%)]",r.accent==="internal"&&"border-l-4 border-l-accent",d&&"border-2 border-primary"),style:{left:r.left,top:r.top,width:r.width,height:r.height},children:[t.jsx("span",{className:S("block text-[9px] uppercase tracking-widest",r.variant==="hub"?"text-primary-foreground/70":"text-muted-foreground"),children:r.kicker}),t.jsx("span",{className:S("block font-serif leading-tight mt-0.5",r.variant==="hub"?"text-lg":"text-[13px]"),children:r.title}),r.subtitle&&t.jsx("span",{className:S("block text-[10px] mt-0.5 leading-snug",r.variant==="hub"?"text-primary-foreground/80":"text-muted-foreground"),children:r.subtitle})]},r.id)}),t.jsx("span",{className:"absolute text-[10px] uppercase tracking-widest text-muted-foreground",style:{left:330,top:336},children:"New"}),t.jsx("span",{className:"absolute text-[10px] uppercase tracking-widest text-muted-foreground",style:{left:630,top:336},children:"Republish"}),t.jsx("span",{className:"absolute text-[10px] uppercase tracking-widest text-accent",style:{left:700,top:816},children:"Learnings → commissioning"}),De.map(r=>
1{const d=e===r.id;return t.jsxs("button",{type:"button",onClick:()=>h(r.id),"aria-pressed":d,className:S("absolute flex items-center gap-2 rounded-sm bg-card border border-border px-2 text-left transition-colors hover:border-primary/60 focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",d&&"border-2 border-primary"),style:{left:r.left,top:r.top,width:264,height:48},children:[t.jsx("span",{className:"shrink-0 inline-flex items-center justify-center rounded-sm text-[10px] font-bold text-white",style:{width:26,height:26,backgroundColor:r.color},"aria-hidden":"true",children:r.letters}),t.jsxs("span",{className:"min-w-0 flex-1",children:[t.jsx("span",{className:"block text-[12px] font-medium text-foreground leading-tight",children:r.name}),t.jsx("span",{className:"block text-[10px] text-muted-foreground truncate",children:r.cadence})]}),t.jsx(U,{variant:"secondary",className:"shrink-0 text-[10px]",children:r.effort})]},r.id)})]})})}),t.jsx("div",{ref:a,className:"lg:sticky lg:top-6",children:t.jsxs(ve,{className:"p-5",children:[t.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[t.jsx(U,{variant:"outline",className:"text-[10px] uppercase tracking-widest",children:l.kind}),l.effort&&t.jsx(U,{variant:"secondary",className:"text-[10px]",children:l.effort})]}),t.jsx("h2",{className:"font-serif text-xl text-primary mt-3",children:l.title}),t.jsx("p",{className:"text-sm text-muted-foreground mt-2 leading-relaxed",children:l.summary}),t.jsx(G,{className:"my-4"}),t.jsx(he,{className:"lg:h-[52vh] pr-3",children:t.jsxs("div",{className:"space-y-5",children:[l.sections.map(r=>t.jsxs("div",{children:[t.jsx("h3",{className:"text-[10px] uppercase tracking-widest text-muted-foreground mb-2",children:r.heading}),t.jsx("ul",{className:"space-y-1.5 list-disc pl-4",children:r.items.map((d,m)=>t.jsx("li",{className:"text-sm text-muted-foreground leading-relaxed",children:t.jsx(Ue,{text:d})},m))})]},r.heading)),l.hint&&t.jsx("div",{className:"rounded-sm border border-border bg-secondary/40 p-3 text-xs text-muted-foreground",children:l.hint})]})}),t.jsx(G,{className:"my-4"}),t.jsxs("p",{className:"font-mono text-[11px] text-muted-foreground",children:["node: ",l.id]})]})})]})]})]})};export{tt as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.